ページ 11

無題

Posted: 2009年11月15日(日) 05:47
by kerotan0820
今度ある期末テストにむけて
9教科(国語、数学、理科、社会、英語、技家、音楽、美術)合計と平均
5教科(国語、数学、理科、社会、英語)の合計と平均
3教科(国語、数学、英語)の合計

これを表示するプログラムを組もうと思い、前回5教科の合計を出すプログラムを組んだことがあったのでそれを改造してプログラムを組みました。
5教科の合計と平均を求めるプログラムを組んだ際のものはこれです
#include<stdio.h>
int main(void){
    int a,b,c,d,e,f,g;
	int k=5;
	double h;
	printf("国語,数学,理科,社会,英語の点数を改行して入力し,Enterを押してください\n");
	scanf("%d" ,&a);
	scanf("%d" ,&b);
	scanf("%d" ,&c);
	scanf("%d" ,&d);
	scanf("%d" ,&e);
	f=a+b+c+d+e;
	h=(double)f/k;
	printf("合計:%d\n" ,f);
	printf("平均:%f\n" ,h);
	return 0;
}
これはこのサイトで質問しながら組んだものなので、問題なく実行できます。
これをいじって組んだ9教科のやつがこれです
#include<stdio.h>
int main(void){
    int kokugo,sugaku,rika,shakai,eigo,gijutsu,kateika,bijutsu,ongaku,gikagoukei,5kyouka,9kyouka,3kyouka,a,b;
	int k=5;
	double h;
	printf("国語,数学,理科,社会,英語の点数を改行して入力し,Enterを押してください\n");
	scanf("%d" ,&kokugo);
	scanf("%d" ,&sugaku);
	scanf("%d" ,&rika);
	scanf("%d" ,&shakai);
	scanf("%d" ,&eigo);
	scanf("%d" ,&gijutsu);
	scanf("%d" ,&kateika);
	scanf("%d" ,&bijutsu);
	scanf("%d" ,&ongaku);
	
	gikagoukei=gijutsu+kateika;
	9kyouka=kokugo+sugaku+rika+shakai+eigo+gikagoukei+bijutsu+ongaku;
	5kyouka=kokugo+sugaku+rika+shakai+eigo;
	3kyouka=kokugo+sugaku+eigo;
	a=(double)9kyouka/k;
	b=(double)5kyouka/k;


	printf("技家合計:%d\n" ,gikagoukei);

	printf("3教科合計:%d\n" ,3kyouka);
	printf("5教科合計:%d\n" ,5kyouka);
	printf("9教科合計:%d\n" ,9kyouka);

	printf("5教科平均:%f\n" ,b);
	printf("9教科平均:%d\n" ,a);
	return 0;
}
普通にエラーが出ます

エラーメッセージをみていろいろ試したのですがどうしてもエラーが起きます…;
ご教授お願いします

Re:無題

Posted: 2009年11月15日(日) 05:55
by kerotan0820
プログラムにいろいろとミスや修正したい点があったので
修正しました

こちらを参考に質問に答えていただければ幸いです
#include<stdio.h>
int main(void){
    int kokugo,sugaku,rika,shakai,eigo,gijutsu,kateika,bijutsu,ongaku,gikagoukei,5kyouka,9kyouka,3kyouka;
    int k=5;
	double a,b;
	printf("各教科の点数を入力し、Enterを押してください\n");
	printf("国語:\n");   scanf("%d" ,&kokugo);
	printf("数学:\n");   scanf("%d" ,&sugaku);
	printf("理科:\n");   scanf("%d" ,&rika);
	printf("社会:\n");   scanf("%d" ,&shakai);
	printf("英語:\n");   scanf("%d" ,&eigo);
	printf("技術:\n");   scanf("%d" ,&gijutsu);
	printf("家庭科:\n"); scanf("%d" ,&kateika);
	printf("美術:\n");   scanf("%d" ,&bijutsu);
	printf("音楽:\n");   scanf("%d" ,&ongaku);
	
	gikagoukei=gijutsu+kateika;
	9kyouka=kokugo+sugaku+rika+shakai+eigo+gikagoukei+bijutsu+ongaku;
	5kyouka=kokugo+sugaku+rika+shakai+eigo;
	3kyouka=kokugo+sugaku+eigo;
	a=(double)9kyouka/k;
	b=(double)5kyouka/k;


	printf("技家合計:%d\n" ,gikagoukei);

	printf("3教科合計:%d\n" ,3kyouka);
	printf("5教科合計:%d\n" ,5kyouka);
	printf("9教科合計:%d\n" ,9kyouka);

	printf("5教科平均:%f\n" ,b);
	printf("9教科平均:%d\n" ,a);
	return 0;
}

Re:無題

Posted: 2009年11月15日(日) 07:42
by conio
変数は、先頭に数字があってはいけません。
--------------------------
5kyouka,9kyouka,3kyouka
--------------------------
これらの変数を、先頭に数字が来ないような名前に変更してください。

----------------------
a=(double)9kyouka/k;
b=(double)5kyouka/k;
----------------------
あと、kの値は5ですよね?
9教科の平均は9で割らないといけません。

ここは変数など使わずに
----------------------
a=(double)9kyouka/9;
b=(double)5kyouka/5;
----------------------
としてみてはどうでしょう?
(変数名をそのままにしてますが、適宜"kyouka9"のような変数に変更してください)

あと、最後の平均を出すところが、一方が%dになっています。
(恐らく記述ミス)
-------------------------------
printf("5教科平均:%f\n" ,b);
printf("9教科平均:%d\n" ,a);
-------------------------------

Re:無題

Posted: 2009年11月15日(日) 08:12
by kerotan0820
■conio様
回答ありがとうございました
無事成功しました^^