ページ 11

警告とエラー

Posted: 2015年12月03日(木) 16:04
by メル
下記の100メートル走の平均と呼びだしのプログラムを課題でやっていたのですがコンパイルでエラーと警告unknown escape sequenceが出てきて実行できません。間違えているところがどこなのかどうしてもわからないので力を貸していただけたらと思います。

#include <stdio.h>

int main(void)
{
//a=生徒の数、sum=合計、ave=平均、
float a[20];
int sum=0, i, j;
for(i=1; i<=20; i++)
{
printf("順番にタイムを記録してください\n");
scanf("%d",&a);
sum=sum+a;
}
printf("20人の平均は%5.1fです\n",(double)sum/20);
while(j!=0){
printf("1~20の順番で表示したい記録を入力してください(0で終了)\n"); //16行目でエラーが起きているみたいです
scanf("%d",&j);
printf("秒です\n",a[j]);
}
return 0;
}

Re: 警告とエラー

Posted: 2015年12月03日(木) 16:57
by かずま
メル さんが書きました:下記の100メートル走の平均と呼びだしのプログラムを課題でやっていたのですがコンパイルでエラーと警告unknown escape sequenceが出てきて実行できません。間違えているところがどこなのかどうしてもわからないので力を貸していただけたらと思います。
16行目の ; の直後の全角スペースを削除し、
gcc --input-charset=cp932 ファイル名.c でコンパイルすると解決しませんか?

Re: 警告とエラー

Posted: 2015年12月03日(木) 17:37
by みけCAT
ソースコードを提示する際は、BBCodeを有効にした(無効にしない)状態でcodeタグで囲んでいただけると、見やすくてありがたいです。
メル さんが書きました:間違えているところがどこなのかどうしてもわからないので力を貸していただけたらと思います。
  • 7行目: せっかくfloat型の値を読み込んでいるのに、足す時に切り捨ててしまうのは不自然です。sumの型をdoubleまたはfloatにした方がいいかもしれません。
  • 8行目: ループの範囲が不適切であり、11行目および12行目で確保された領域の外にアクセスしてしまいます。for(i=0; i<20; i++)とするべきでしょう。
  • 11行目: float型の値をscanfで読み込むのに%dは使えません。%fを使ってください。
  • 15行目: 未初期化で不定の値を持つ変数jが使用されています。宣言時またはここの直前に1など適当な値に初期化するべきでしょう。
  • 18行目: 20を入力された時、仕様内にも関わらず確保された領域の外にアクセスしてしまいます。また、書式に対しデータが多く、評価された後無視されるので問題はありませんが不自然です。printf("%f秒です\n",a[j - 1]);とするべきでしょう。
かずま さんが書きました:gcc --input-charset=cp932 ファイル名.c でコンパイルすると解決しませんか?
--fexec-charset=cp932も指定した方がいいかもしれません。

Re: 警告とエラー

Posted: 2015年12月04日(金) 09:04
by メル
表示という言葉が問題で表¥示にしたら解決しました。