C言語で
50人で5教科のテストをして
⑴50人それぞれの合計点を表す
⑵平均の合計点を表示
⑶合計の1位と50位を表示
を同時にやってくれるプログラムをどう書けばいいのかわかりません(;´・ω・)
私がやってみても全然うまくいかなくて・・・
#include <stdio.h>
#include <stdlib.h>
int main( )
{
int i;
int japan[100], eng[100], math[100], sci[100], hist[100], total[100];
double average;
for(i=0;i<50;i++)
{
japan= rand()%100;
eng= rand()%100;
math= rand()%100;
sci= rand()%100;
hist= rand()%100;
printf(“[%d] %d %d %d %d %d¥n”, i, japan,eng,math,sci, hist);
}
}
ヒントとしてこれはもらったのですが…
乱数とforとかmax,minをつかってやるんだろうなぁとはわかるのですが...
すいません。だれかわかる方がいたら、お願いします(´・ω・`)
乱数を利用した書き方がわかりません
Re: 乱数を利用した書き方がわかりません
コードを貼る場合はコードタグを使用し、適切なインデントをしてくださると見やすくて助かります。
あなたが書いたコードを貼ってください。課題の丸投げは禁止されています。
また、二つのことを一緒にするのではなく、一つの処理と一つの処理のように分割して考えた方が簡単だと思います。
あなたが書いたコードを貼ってください。課題の丸投げは禁止されています。
また、二つのことを一緒にするのではなく、一つの処理と一つの処理のように分割して考えた方が簡単だと思います。
初心者です
Re: 乱数を利用した書き方がわかりません
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
int japan[100], eng[100], math[100], sci[100], hist[100], total[500];
double average;
int max;
int min;
for(i=0;i<50;i++)
{
japan[i]= rand()%100;
eng[i]= rand()%100;
math[i]= rand()%100;
sci[i]= rand()%100;
hist[i]= rand()%100;
total[i]=japan[i]+eng[i]+math[i]+sci[i]+hist[i];
printf("%d番目,%d点,%d点, %d点, %d点, %d点,合計[%d]点¥n",i, japan[i]
,eng[i],math[i],sci[i], hist[i],total[i]);
average+=total[i];
if(total[i]>=max);
max=total[i];
if(total[i]<=min);
min=total[i];
}
printf("平均点は%f点!,¥n",average/50);
printf("最高点は%g点!,最低点は%g点!,¥n",max,min);
}
遅くなってすいません。
ほんとに初心者なので簡単なミスをしてるかもです
Re: 乱数を利用した書き方がわかりません
ってことですか(。´・ω・)?加奈子 さんが書きました:私のです。#include <stdio.h> #include <stdlib.h> int main() { int i; int japan[100], eng[100], math[100], sci[100], hist[100], total[500]; double average=0; int max=0; int min=0; for(i=0;i<50;i++) { japan[i]= rand()%100; eng[i]= rand()%100; math[i]= rand()%100; sci[i]= rand()%100; hist[i]= rand()%100; total[i]=japan[i]+eng[i]+math[i]+sci[i]+hist[i]; printf("%d番目,%d点,%d点, %d点, %d点, %d点,合計[%d]点¥n",i, japan[i] ,eng[i],math[i],sci[i], hist[i],total[i]); average+=total[i]; if(total[i]>=max); max=total[i]; if(total[i]<=min); min=total[i]; } printf("平均点は%f点!,¥n",average/50); printf("最高点は%g点!,最低点は%g点!,¥n",max,min); }
遅くなってすいません。
ほんとに初心者なので簡単なミスをしてるかもです
ほんとにごめんなさい(;_;)/~~~
Re: 乱数を利用した書き方がわかりません
>ってことですか(。´・ω・)?
じゃなくて,ご自身で動作確認して然るべきでは…
じゃなくて,ご自身で動作確認して然るべきでは…
オフトピック
・averageの初期値を0にした理由
・maxの初期値を0にした理由
・minの初期値を0にした理由
ついでに
・配列の要素数が100個,500個である理由
等,それぞれ説明できますか?
・maxの初期値を0にした理由
・minの初期値を0にした理由
ついでに
・配列の要素数が100個,500個である理由
等,それぞれ説明できますか?
Re: 乱数を利用した書き方がわかりません
- 22行目と24行目のセミコロンが蛇足である。
- 28行目で、データの型と書式指定文字列が合っていない。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 乱数を利用した書き方がわかりません
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N (50)
typedef struct {
int jpn;
int math;
int sci;
int hist;
int eng;
int total;
} Person;
int getScore(Person *m)
{
int total, i;
for (total = i = 0; i < N; i++) {
m[i].jpn = rand() % 101;
m[i].math = rand() % 101;
m[i].sci = rand() % 101;
m[i].hist = rand() % 101;
m[i].eng = rand() % 101;
m[i].total = m[i].jpn + m[i].math + m[i].sci + m[i].hist + m[i].eng;
total += m[i].total;
}
return total;
}
void sortScore(Person *m)
{
Person t;
int i, j;
for (i = 0; i < N - 1; i++) {
for (j = i; j < N; j++) {
if (m[i].total < m[j].total) {
t = m[i], m[i] = m[j], m[j] = t;
}
}
}
}
void printScore(Person *m)
{
int i;
for (i = 0; i < N; i++) {
printf("%d人目の合計点は%d点\n", i + 1, m[i].total);
}
}
void printAvg(int total)
{
printf("合計の平均点は%.2f点\n", (double) total / N);
}
void printTopAndLast(Person *m)
{
printf("1位の合計点は%d点\n", m[0].total);
printf("%d位の合計点は%d点\n", N, m[N-1].total);
}
int main(void)
{
Person member[N] = { 0 };
int total;
srand((unsigned int) time(NULL));
total = getScore(member);
printScore(member);
printAvg(total);
sortScore(member);
printTopAndLast(member);
return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。