今、独学でC言語をやっているんですが本にのっている問題に解答がなくわかりません。
問題はbunpu[tensu[i] / 10]++;はどういう意味を表すかです。
do-while分の繰り返しがおわった後にbumpuに++があるので+1をすればいいのでしょうか?よくわかりません・・・
学生10人の点数の分布を10点ごとに分布グラフとして表示します。
#include <stdio.h>
#define NUMBER 80
int main (void)
{
int i,j,num; int tensu[NUMBER]; int bunpu[11] = {0};
puts("点数を入力してください");
for("i =0; i < num; i++"){
printf("%2d番",i + 1);
do{
scanf("%d",&tensu[i]);
if(tensu[i] < 0 || tensu[i] > 100)
printf("0以上100以下");
}while (tensu[i] < 0 || tensu[i] > 100);
bunpu[tensu[i] / 10]++;
}
puts("\n 分布ぐらふ ");
printf(" 100:");
for (j = 0;j < bumpu[10];j++) putchar('*')
putchar('\n')
for(i = 9; i>=0; i--) {
printf("%3d - %3d:",i*10,i*10+9);
for (j=0; j< bunpu[i];j++)
putchar('*');
putchar('\n');
}
return(o);
}
No.3
- 回答日時:
このプログラム、このままでは動きませんよね。
まぁ、やりたいことは大体解るのでいいのですが、コンパイルを通ったものをできれば載せてください。
さて、ご質問の件ですが、
>問題はbunpu[tensu[i] / 10]++;はどういう意味を表すかです。
入力された点数から分布カウント配列のインデックスを算出してカウントアップをしています。
#1さんの説明の通りです。
直前のdo-whileは、入力データの範囲チェックですね。
0~100点でないとループが終わらないようになっていて、再度入力を促されるという風になっています。
ここを抜けてきたなら、正しいデータの範囲であったということで、分布ごとの件数をカウントアップ(++)しています。
ループになっているのはやり直しのためであって、配列とは何の関係もありません。
No.1ベストアンサー
- 回答日時:
>bunpu[tensu[i] / 10]++;
i は繰返しで使われている変数
だから tensu[i] は繰返しが起こる度に変化する
i が0の時は tensu[0]
i が1の時は tensu[1]
i が2の時は tensu[2]
その内容を取り出し10で割っている。つまり10点刻みの分布を数える(int同士の演算は)為にbunpuが用意されている。
tensu[i] が 0~9 なら bunpu[0]
tensu[i] が 10~19 なら bunpu[1]
tensu[i] が 20~29 なら bunpu[2]
の内容が ++ される
判らなくなったらとりあえず展開していく。そうして一番内側の括弧から理解していけば判る筈。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
for文の中にswitch文はいれられ...
-
#if 1 #elseの意味について
-
構文エラー";"が型の前にあり...
-
プログラム
-
xのy乗を求める問題で…(ただし...
-
プログラミングで二番目に大き...
-
直角三角形を表示するプログラム
-
1年単利金利 0.2% の A銀行と...
-
if文の中に
-
データ管理プログラムを作って...
-
c言語で平均をだす
-
C言語についてですfor ifをつか...
-
分散を求めるプログラム
-
素因数分解のプログラムを作成...
-
C言語 重複しない4ケタの乱数...
-
配列を使って魔方陣
-
C言語基本 2次元配列(for文...
-
乱数を用いたプログラミング
-
for文のプログラミング 私は、...
-
C言語の二分法のプログラムにつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
#if 1 #elseの意味について
-
for文の中にswitch文はいれられ...
-
C言語階乗の総和を求める
-
配列を使って魔方陣
-
C言語 数字以外を入力させない...
-
C言語プログラムが理解できなくて…
-
配列を関数に渡す方法
-
初心者です。for文、if文を使っ...
-
scanf関数を用いての加減乗除%...
-
c言語プログラミングで1から100...
-
getcの改行判定
-
while文について、c言語...
-
プログラミングで二番目に大き...
-
VHDLで、case文とwhen文のどち...
-
C言語で電卓を作成する。
-
C言語の二分法のプログラムにつ...
-
階乗のプログラム!!
-
プログラミングに関して
-
C言語についてですfor ifをつか...
おすすめ情報