ページ 11

scanfを使って入力した4つの整数の平均値を求めたいです。

Posted: 2012年5月05日(土) 15:31
by happiness
最近プログラミングを始めた初心者です。
よろしくお願いします。

先日大学で以下のような課題が出されました。
「scanfを用いて入力した4つの整数の平均値を求めるプログラムを書いてください。」

なので、学校で習ったことネットで調べたサンプルコードを参考にして以下のようなプログラムコードを作りました。

コード:

#include <stdio.h>
int main(void);
{
	int a,b,c,d;
	
	printf("a=");
	scanf("%d",&a);
	printf("a=%d\n",a);
	
	printf("b=");
	scanf("%d",&b);
	printf("b=%d\n",b);
	
	printf("c=");
	scanf("%d",&c);
	printf("c=%d\n",c);
	
	printf("d=");
	scanf("%d",&d);
	printf("d=%d\n",d);
		
	printf("平均値は%d\n",(a+b+c+d)/4);
	
	return (0);
}
コンパイルしてみたのですが、失敗してしまいました。
どこを間違えているのか指摘していただけないでしょうか?
(なるべく簡単で基本的な言語で修正してほしいです。)
できれば間違いの理由も教えてほしいです。


開発環境は以下のようになっております。
OS : windows 7 Ultimate 
コンパイラ:Borland C++ Compiler 5.5
エディタ : bcpad

プログラミング自体が初心者でC言語も学校では授業を4回くらい受けただけです。
前回の授業ではループ(for文)のやり方と変数について習いました。

お時間のあるときでいいのでよろしくお願いします。

Re: scanfを使って入力した4つの整数の平均値を求めたいです。

Posted: 2012年5月05日(土) 15:36
by softya(ソフト屋)
何をどう失敗したか説明してもらえますか?
問題点の把握もプログラミングでは重要なことですので、問題点を言葉で説明できることは必要なことなのです。

Re: scanfを使って入力した4つの整数の平均値を求めたいです。

Posted: 2012年5月05日(土) 16:06
by happiness
softya(ソフト屋) さん、返信ありがとうございます。
失敗したというのはコンパイルに失敗して黒いウィンドウが出てこなかったということです。
とりあえず流れを説明させていただきます。

プログラム作る
   ↓
コンパイル実行ボタンを押す
   ↓
以下のエラーメッセージがでてくる。
「コンパイルに失敗しました
 ファイル"C\Users\happiness\Downloads\Documents\C\practice41.exe"は存在しません」
(このメッセージはbcpadでコードのどこかに間違いがあるといつも出てくるメッセージです。間違いを訂正するとでてこなくなります。)
   ↓
黒いウィンドウが出てこない。

という状況です。

本当ならコンパイルを実行したあと黒いウィンドウが出てきてそこで数値を4つ入力し、平均がでるはずなのです。

問題点についてですが、自分は作ったコードのどこかが間違えているのが原因で失敗したのだと思います。

お返事お待ちしております。

Re: scanfを使って入力した4つの整数の平均値を求めたいです。

Posted: 2012年5月05日(土) 16:13
by box
ソースコードの何行目でどういうエラーが出ているか、
BCPADは教えてくれないのでしょうか。

Re: scanfを使って入力した4つの整数の平均値を求めたいです。

Posted: 2012年5月05日(土) 16:13
by softya(ソフト屋)
bcpadには詳しくないのでがコンパイルエラーメッセージは確認できないのでしょうか?
コンパイルエラーの修正も学習の一つですよ。

Re: scanfを使って入力した4つの整数の平均値を求めたいです。

Posted: 2012年5月05日(土) 17:06
by happiness
よく見たらエラーメッセージが出ていました。
不注意ですみません・・・

■C:\Users\happiness\Downloads\Documents\C> bcc32 practice41.cpp
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
practice41.cpp:
Error E2040 practice41.cpp 3: Declaration terminated incorrectly
*** 1 errors in Compile ***

エラーは3行目にあるようですが「Declaration terminated incorrectly」とはどういうことなのでしょうか?
調べてみたら宣言が違うという意味らしいのですが、セミコロンもちゃんとついてるので間違えてないと思うのですが・・・

返信お待ちしております。

Re: scanfを使って入力した4つの整数の平均値を求めたいです。

Posted: 2012年5月05日(土) 17:24
by box
happiness さんが書きました: セミコロンもちゃんとついてるので間違えてないと思うのですが・・・
ていうか、よけいなところにセミコロンが付いてますよ、という意味ではないのでしょうか。

Re: scanfを使って入力した4つの整数の平均値を求めたいです。

Posted: 2012年5月05日(土) 17:25
by softya(ソフト屋)
セミコロンは命令文の終わりを意味します。
int main(void);
だと、そこで命令が完結してしまうので後ろのブロック{}は無関係なものとなってしまいエラーとなります。

◯ 関数の構文。
戻り値の型 関数名(引数 or void) { 命令;・・・ }
◯ 関数のプロトタイプの構文。
戻り値の型 関数名(引数 or void);

と言うことで今回の場合はプロトタイプと見なされた事になりますので、後ろの{}は無関係で文法上エラーです。

コード:

int main(void)
{
	命令;
}
とすればちゃんとしたmain関数の定義となりますので注意して下さい。

Re: scanfを使って入力した4つの整数の平均値を求めたいです。

Posted: 2012年5月05日(土) 17:48
by happiness
softya(ソフト屋) さん、box さん、返信ありがとうございます。
言われたとおりに

コード:

int main(void)
{
    命令;
} 
に直してみたらちゃんとコンパイルできました。
こんな初歩的な質問に答えてくれてありがとうございました。
これからはコンパイルエラーの見方も勉強します。