角錐の底面積と高さを整数値で入力し,その体積を小数点第1位まで表示する
角錐の体積は以下の式で求める
角錐の体積 = 底面積 * 高さ / 3
処理
底面積と高さを入力
底面積と高さがどちらも0より大きい値ならば
角錐の体積を求めて、表示する
どちらかが0以下ならば
"入力された値が正しくありません" のメッセージを出力する
底面積と高さはint型とする
体積はdouble型とする
イメージ
底面積 5 高さ 2 の時、体積は 3.3 と表示される
という問題で僕は以下の様に作りました。#include <stdio.h>
void main(void)
{
int teimennseki takasa;
double taiseki
printf("角錐の底面積を入力して下さい(整数値):");
scanf("%d",&teimennseki);
printf("高さを入力して下さい(整数値):");
scanf("%d",&takasa);
if (teimennseki <= 0 ){
printf("入力された値が正しくありません");
}
else if (takasa <= 0 ){
printf("入力された値が正しくありません");
}
else{
taiseki = teimennseki * takasa / 3.0
printf("底面積 %d 高さ %d の時、体積は %.1f\n",teimennseki,takasa,taiseki);
}
return 0;
}
すると、エラー7(記憶領域制御ブロックが壊れていました。) がでます。これはどういうエラーで、原因はどこでしょうか?
No.6ベストアンサー
- 回答日時:
> エラー7(記憶領域制御ブロックが壊れていました。
) がでます他の方が指摘された細かいこと以外に、コンパイラによって問題が出そうなところ
がひとつあります。
> void main(void)
省略
> return 0;
> }
規格云々の話もありますが、少なくとも、戻り値を void で宣言した関数で、
return 0; と値を返してはいけませんね。
本来なら、コンパイルエラーにして欲しいところですが、これを通してしまう
コンパイラーなのでしょう。
で、戻り値用の領域を用意してないのに、戻り値を入れたことが「記憶領域制御
ブロックを壊す」ことにつながったのでしょう。
No.5
- 回答日時:
プログラムの記述については皆さんの回答されている通り。
エラーについても正確なところはわかりませんが
> 記憶領域制御ブロックが壊れていました。
という表現から受ける印象は、「OSが壊れているんじゃないの?」
というところですね。
No.4
- 回答日時:
何のエラーかは分かりませんが、、
どのような環境(OSやコンパイラ)でどの時点でのエラーなのか(コンパイル、実行時)ぐらいは示された方が良いと思います。
taiseki = teimennseki * takasa / 3.0
の行に ; が抜けているのは関係ないですよね?^^;
後、本題とはそれますが、
if (teimennseki <= 0 ){
printf("入力された値が正しくありません");
return 1;
}
else if (takasa <= 0 ){
printf("入力された値が正しくありません");
return 1;
}
taiseki = teimennseki * takasa / 3.0
printf("底面積 %d 高さ %d の時、体積は %.1f\n",teimennseki,takasa,taiseki);
と言うようなコードの方が読みやすくなるかと^^;
好みの問題かも知れませんが、、
No.3
- 回答日時:
このソースは、コピペされたものでしょうか?
もし、そうなら、下の2行のセミコロン;が抜けています。
double taiseki
taiseki = teimennseki * takasa / 3.0
プログラムは正しく作動すると思いますよ!
OS、コンパイラーなども補足されますと
後の方の回答がやり易いのではないでしょうか?
No.2
- 回答日時:
>double taiseki
>taiseki = teimennseki * takasa / 3.0
こちらもそれぞれ、
double taiseki;
taiseki = teimennseki * takasa / 3.0;
ですね。(ただのセミコロン付け忘れ)
それから
>return 0;
とするのであればint main(void)であるべきです。
これって元のソースのコピーじゃありませんね?
写し間違いが多い気がしますので…。(^_^;
No.1
- 回答日時:
>int teimennseki takasa;
これは正しくは
int teimennseki,takasa;
ですよね。
元のソースはこうなっているのかな?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 問題の答えがわかりません 1 2022/07/15 18:18
- 建設業・製造業 土量算出 3 2022/09/26 19:57
- 数学 ベクトル解析 ガウスの定理 問題 (1,0,0)、(0,1,0)、(0,0,1)、(0,0,0)を頂 7 2023/07/18 21:43
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- 数学 微分積分の円錐の体積についての問題がわからないです。 2 2022/07/16 16:26
- C言語・C++・C# C言語(構造体) 3 2022/07/05 20:08
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- 数学 四角すいの表面積…難問?助けてください。 8 2022/10/04 20:11
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正負を反転させて出力するプロ...
-
double型が正常に認識されてい...
-
C言語 While文(ループ)内の...
-
数字以外が入力されたらエラー...
-
プログラムC言語の整数の約数に...
-
C言語 逆ピラミッドの作り方
-
2進数の1の数を数える問題
-
4桁の数字以外を入力したらエラ...
-
ダメだ・・・分からない。while...
-
入力値が1以下、かつ数字以外の...
-
VBでの日付入力値のフォーマッ...
-
c言語でひらがなのしりとりをで...
-
scanfが2回使えない・・・?;
-
Eclipseでコマンドラインを入力...
-
プログラム(C)
-
C言語でのカレンダー作成
-
キーボード入力の終了につきま...
-
C言語 for文をつかって記号を表...
-
C言語でつるかめ算をするにはど...
-
プログラミング初心者です。 Py...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
数字以外が入力されたらエラー...
-
プログラミング初心者です。 Py...
-
double型が正常に認識されてい...
-
java初心者です。入力されたの...
-
Eclipseコンソール表示を、リセ...
-
scanfが2回使えない・・・?;
-
C言語scanf_sで何故か2回入力に...
-
if文の条件にscanf関数を使うと…?
-
プログラミングの問題です 「金...
-
Linuxで入力待ちなしkeyread関...
-
ワードで文字を入力する時の変...
-
cout関数を使っているのですが...
-
batプログラム上で文字列を入力...
-
Userformの入力順序をタブオー...
-
scanf が無視されます
-
C言語 逆ピラミッドの作り方
-
gets_sがうまく動かない
-
Excel VBAで、Application.Inpu...
おすすめ情報