A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
☆#1 補足ソースの重要な誤りは、for 文をいつまでループするかの「条件式」が、「代入」になっていることです。
「入力するデータ数『まで』入力を繰り返す」とすべきところが、「 y は、入力するデータ数」となっている。
for文の書式。
for( 式1; 条件式; 式2 ){
文
}
式1 → 条件式 → 文 → 式2(閉じ波括弧部分で)→ 条件式 → 文 → 式2・・・の順番
式1「のみ」が、一度だけ実行。
式2は、1回のループ「毎」の最後に実行(そして、「条件式」へ)。
このことから、補足ソースの for 文内の「文」としての y++; は不要です。
(注:No.3 さんのソースで、2バイト文字から「数」を取り出す部分では、2バイト目を指定するためソースのとおり i++; が必要)
蛇足
>入力するデータ数は? 3
この"3"は、もちろん、本チャンでは半角の 3 で「入力する」のですよね。
( No.3 さんは、質問本文どおりに『全角』として回答)
#include<stdio.h>
void main( void )
{
int x, y, z, sum = 0;
double ave = -99.9;
printf( "入力するデータ数は? " );
scanf( "%d", &x );
for( y = 1; y <= x; y++ ){ // 動作の根幹に関わる誤りのあった行( = → <= )
printf( "No.%2d ", y );
scanf( "%d", &z );
sum += z;
}
if( x ) ave = (double)sum / (double)x;
printf( "以上 %d 個の平均は: %.6lf", x, ave );
}
注:インデントに全角空白を用いています。コピペ後、タブに一括変換して下さい。
No.4
- 回答日時:
確認はしていないですが、
----->
int x,y,z,sum;
double ave;/*平均値*/
y=1; ※1 これの意図が不明。単なる初期化?
sum=0;
printf("入力するデータ数は? ");
scanf(" %d", &x); ※2 変数xを入力データ数とする
if(x>1) ※3入力データ数が1の場合計算されない(x>0)とするべきか?あと、1>xの場合の処理も記述すべき
{
for(y=1; y=x; y++){ ※4 yはループのカウンター?一般的にカウンターにはi,j,kを用いた方がわかりやすい
printf("No .%d",y);
y++; ※5 この行はいらないと思われる。for文でy++しているのでfor文を回るとy=y+2になってしまう。
scanf("%d", &z);
sum=sum+z;
}
ave=sum/x; ※6 このままではintの割り算になっているので、sum、xをdoubleにキャストする
printf("以上%d個の平均は:%.6f",x,ave); ※7 aveはdoubleなので、%.6lfのほうが良いはず
<-----
※5が原因で、入力するデータ数を奇数にするとfor文の終了条件を満たさなくなります。
No.3
- 回答日時:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int input_integer(char buf[1024])
{
fgets(buf, 1024, stdin);
if (buf[strlen(buf)-1] == '\n') {
buf[strlen(buf)-1] = '\0';
}
return atoi(buf);
}
int input_integer_SJIS(char buf[1024])
{
int i,j=0,len;
char ascii[1024] = {0};
char SJIS[10];
char tmp[3];
strcpy(SJIS, "0");
len = strlen(fgets(buf, 1024, stdin));
if (buf[strlen(buf)-1] == '\n') {
buf[strlen(buf)-1] = '\0';
len--;
}
for (i=0; i<len; i++) {
i++;
ascii[j++] = buf[i] - SJIS[1] + '0';
}
return atoi(ascii);
}
int main(int argc, char *argv[])
{
int i;
int num,sum = 0;
char bufnum[1024];
char bufsum[1024];
printf("入力するデータ数は? ");
fflush(stdout);
num = input_integer_SJIS(bufnum);
if (num < 0) {
/* エラー処理 */
return 1;
}
for (i=0; i<num; i++) {
printf("NO.%2d :", i);
fflush(stdout);
sum += input_integer(bufsum);
}
printf("以上%s個の平均 :%lf\n", bufnum, 1.0*sum/num);
return 0;
}
No.2
- 回答日時:
ave=sum/x;
printf("以上%d個の平均は:%.6f",x,ave);
とした場合
aveには sum/xの整数部しか代入されないでしょう
sum も x も intで宣言されていますので sun/xという式もintで評価されます
ave = sum;
ave = ave / x; または ave /= x;
キャストをするなら
ave = (double)sum / x;
または
ave = (double)sum / (double)x;
といった具合でいいでしょう
printfでdoubleを出力する際は lfのほうがいいかもしれません
> printf("以上%d個の平均は:%.6lf", x, ave);
No.1
- 回答日時:
ここの場合、課題の丸投げは禁止されているので、自分でここまでやったけどうまくいかなかったというソースを提示するのがルールです。
まぁ、数値の入力にはscanfを使い、計算結果の小数部まで求めるので、doubleの変数に代入すれば良いかと。(計算時にキャストしてもよいけど面倒そうなので)
まずは自分の書いたソースを不完全でも良いから出してください。
この回答への補足
すいません。出すつもりでしたが途中で投稿してしまいました。
#include<stdio.h>
void main(void)
{
int x,y,z,sum;
double ave;
y=1;
sum=0;
printf("入力するデータ数は? ");
scanf(" %d", &x);
if(x>1){
for(y=1; y=x; y++){
printf("No .%d",y);
y++;
scanf("%d", &z);
sum=sum+z;
}
ave=sum/x;
printf("以上%d個の平均は:%.6f",x,ave);
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- Excel(エクセル) 最後の12個の修正平均を算出したい。 3 2022/04/30 18:24
- C言語・C++・C# 3つの倍精度浮動小数点値の平均を求めて、3つの引数全てを平均値に変更するメソッドを作成し、キーボード 1 2022/07/13 16:04
- Excel(エクセル) Excelで全クラスのランキング表を作成したい 4 2022/05/24 15:28
- Excel(エクセル) 単価シートから単価をエクセル関数で自動取得する方法 1 2023/07/02 22:00
- Excel(エクセル) マクロか関数で処理したいのですが、教えて頂けませんか。 8 2022/10/31 15:18
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- 統計学 確率統計の問題です。 3 2022/04/07 04:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
C言語 数字以外を入力させない...
-
#if 1 #elseの意味について
-
配列を使って魔方陣
-
プログラム
-
C言語 プログラム
-
for文の中にswitch文はいれられ...
-
配列を関数に渡す方法
-
非負整数nを読み込んで、1+...
-
直角三角形を表示するプログラム
-
階乗のプログラム!!
-
getcの改行判定
-
c言語についての質問です。
-
switch文をif文に変換
-
プログラミング(argcとargv)
-
「指定されたキャストは有効で...
-
数学(数列)の問題です。ーど...
-
独立係数について教えて下さい。
-
信頼区間の1.96や1.65ってどこ...
-
マイナスからプラスへ転じた時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
#if 1 #elseの意味について
-
for文の中にswitch文はいれられ...
-
getcの改行判定
-
C言語階乗の総和を求める
-
配列を使って魔方陣
-
while文について、c言語...
-
プログラミングで二番目に大き...
-
C言語 数字以外を入力させない...
-
c言語のwhile文を使った計算で...
-
C言語プログラムが理解できなくて…
-
C言語で電卓を作成する。
-
配列を関数に渡す方法
-
C言語の二分法のプログラムにつ...
-
c言語for文
-
scanf関数を用いての加減乗除%...
-
階乗のプログラム!!
-
計算結果がlong型以上になる場...
-
c言語プログラミングで1から100...
-
初心者です。for文、if文を使っ...
おすすめ情報