ページ 11

if文をよういた計算を行うプログラム

Posted: 2009年11月16日(月) 04:20
by kerotan0820
前回期末テストの各教科の点数を入力したら、3,5,9教科の合計,平均を表示してくれるプログラムを組んだのですが、中間テストにも対応出来るようにしたいのです。
なのでif文を使って1を入力したら中間テスト、2を入力したら期末テストになるように自分で組んでみたのですがうまくいきません。
プログラムはこれです
#include <stdio.h>
int main(void){
	int kokugo,sugaku,rika,shakai,eigo,gijutsu,kateika,bijutsu,ongaku,gikagoukei,kyouka5,kyouka9,kyouka3,c;
    double a,b;
	/*中間か期末かの入力を求める*/
	printf("中間の場合は1 期末の場合は2を入力してください\n");
	printf("1or2:"); scanf("%d",&c);
	if(c==1){
		printf("5教科の各点数を入力してください\n");
		printf("国語:"); scanf("%d" ,&kokugo);
		printf("数学:"); scanf("%d" ,&sugaku);
		printf("理科:"); scanf("%d" ,&rika);
		printf("社会:"); scanf("%d" ,&shakai);
		printf("英語:"); scanf("%d" ,&eigo);
		printf("__________________\n");
        kyouka5=kokugo+sugaku+rika+shakai+eigo;
		kyouka3=kokugo+sugaku+eigo;
		a=(double)kyouka5/5;
		b=(double)kyouka3/3;
		printf(" ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\n");
		printf("■3,5教科合計■\n");
		printf("3教科合計:%d\n" ,kyouka3);
		printf("5教科合計:%d\n\n" ,kyouka5);
		printf("■3,5教科平均■\n");
		printf("3教科平均:%f\n" ,b);
		printf("5教科平均:%f\n" ,a);
		scanf("%d");
	}else(c==2){
    /*以下9教科の場合のプログラム*/ 
	printf("9教科の各点数を入力してください\n");
	printf("国語:");   scanf("%d" ,&kokugo);
	printf("数学:");   scanf("%d" ,&sugaku);
	printf("理科:");   scanf("%d" ,&rika);
	printf("社会:");   scanf("%d" ,&shakai);
	printf("英語:");   scanf("%d" ,&eigo);
	printf("技術:");   scanf("%d" ,&gijutsu);
	printf("家庭科:"); scanf("%d" ,&kateika);
	printf("美術:");   scanf("%d" ,&bijutsu);
	printf("音楽:");   scanf("%d" ,&ongaku);
    printf("__________________\n");	
	gikagoukei=gijutsu+kateika;
	kyouka9=kokugo+sugaku+rika+shakai+eigo+gikagoukei+bijutsu+ongaku;
	kyouka5=kokugo+sugaku+rika+shakai+eigo;
	kyouka3=kokugo+sugaku+eigo;
	a=(double)kyouka9/9;
	b=(double)kyouka5/5;
	printf("☆           ≪結果≫        ☆\n");
	printf(" ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\n");
    printf("■技家合計■\n");
	printf("技家合計:%d\n\n" ,gikagoukei);
	printf("■3,5,9教科合計■\n");
    printf("3教科合計:%d\n" ,kyouka3);
	printf("5教科合計:%d\n" ,kyouka5);
	printf("9教科合計:%d\n\n" ,kyouka9);
	printf("■5,9教科平均■\n");
	printf("5教科平均:%f\n" ,b);
	printf("9教科平均:%f\n" ,a);
	scanf("%d");
	}

	return 0;
}
エラーメッセージには構成がいけないみたいなことが出てくるのですが、何がいけないのでしょうか
scanfに関するエラーメッセージがざーっと出るのですが、いまいちわかりません
ご教授お願いします

Re:if文をよういた計算を行うプログラム

Posted: 2009年11月16日(月) 04:58
by array
scanf()については、多分エラーではなくwarning(警告)ではないですか。
scanf()を使うのは推奨してされていない。という警告だったと思います。
警告レベルを下げるか、scanf_s()を代用すれば警告は消えると思います。


で、実際のエラーですが

(誤) }else(c==2){
(正) }else if(c==2){

じゃないですか? 自分も稀にやってしまう事があります^^;

Re:if文をよういた計算を行うプログラム

Posted: 2009年11月16日(月) 05:02
by kerotan0820
■array様
ありがとうございます!無事成功しました^^

scanf_s()にしておきました ありがとうございます

Re:if文をよういた計算を行うプログラム

Posted: 2009年11月16日(月) 07:35
by バグ
解決したようですが、どうしても気になったので…(^_^;)


×if文をよういた計算を行うプログラム

〇if文を用いた計算を行うプログラム


用いる(もちいる)

Re:if文をよういた計算を行うプログラム

Posted: 2009年11月16日(月) 16:36
by kerotan0820
■バグさん
そうだったのですか;
お恥ずかしい限りです(笑)
用いる、おぉ… もちいると読むのですねこれは(笑)
ありがとうございました^^