• 締切済み

教えてください。

下のプログラムで”全員計算できませんでした”を表示させたいんですが、if文を置く位置が全くわかりません。この位置だと10人全員が計算できない場合でも”全員計算~”と表示されてしまいます。誰か教えていただけないでしょうか? main() { float weight,height,s_weight,fatness; int sex,count,keisu,y_cnt,f_cnt,k_cnt,c_cnt,n_cnt; y_cnt=f_cnt=k_cnt=c_cnt=n_cnt=0; printf("*** 肥満度プログラム ***\n"); for(count=1;count<=10;count++) { printf("あなたの体重(Kg単位)=\n"); scanf("%f",&weight); printf("あなたの身長(m単位)=\n"); scanf("%f",&height); printf("あなたの性別(男=0/女=1)=\n"); scanf("%d",&sex); if(sex==0) keisu=22; else keisu=20; if(height>0 && weight>0) { s_weight=height*height*keisu; printf("標準体重=%fKg\n",s_weight); fatness=(weight-s_weight)/s_weight*100; printf("肥満度=%f%\n",fatness); if(fatness<-10.0) { printf("やせすぎです。\n"); y_cnt++; } else if(-10.0<=fatness && fatness<10.0) { printf("標準です。\n"); f_cnt++; } else if(10.0<=fatness && fatness<20.0 ) { printf("過体重です。\n"); k_cnt++; } else if(20.0<=fatness) { printf("あなたは超過体重です!\n"); c_cnt++; } } else { printf("計算できません。\n"); n_cnt++; } } printf("*** 肥満度統計結果 ***\n"); printf("やせ=%d人\n",y_cnt); printf("普通=%d人\n",f_cnt); printf("過体重=%d人\n",k_cnt); printf("超過体重=%d人\n",c_cnt); printf("計算できない人=%d人\n",n_cnt); if(n_cnt=0) { printf("全員計算できませんでした。\n"); } }

みんなの回答

回答No.1

if(n_cnt=0) { printf("全員計算できませんでした。\n"); } このif文ではn_cntに0を代入してしまい、常に"全員計算できませんでした"が表示されてしまいます。 n_cnt==0に修正するとうまく表示されますよ。

milch1114
質問者

お礼

すばやい回答ありがとうございます。n_cnt==10でできました。とても助かりました。どうもありがとうございました。

関連するQ&A

  • 誰か教えてください!!

    main() { float weight,height,s_weight,fatness; int sex,count,keisu,y_cnt,f_cnt,k_cnt,c_cnt,n_cnt; y_cnt=f_cnt=k_cnt=c_cnt=n_cnt=0; printf("*** 肥満度プログラム ***\n"); for(count=1;count<=10;count++) { printf("あなたの体重(Kg単位)=\n"); scanf("%f",&weight); printf("あなたの身長(m単位)=\n"); scanf("%f",&height); printf("あなたの性別(男=0/女=1)=\n"); scanf("%d",&sex); if(sex==0) keisu=22; else keisu=20; if(height>0 && weight>0) { s_weight=height*height*keisu; printf("標準体重=%fKg\n",s_weight); fatness=(weight-s_weight)/s_weight*100; printf("肥満度=%f%\n",fatness); if(fatness<-10.0) { printf("やせすぎです。\n"); y_cnt++; } else if(-10.0<=fatness && fatness<10.0) { printf("標準です。\n"); f_cnt++; } else if(10.0<=fatness && fatness<20.0 ) { printf("過体重です。\n"); k_cnt++; } else if(20.0<=fatness) { printf("あなたは超過体重ですわ!\n"); c_cnt++; } else printf("計算できません。\n"); n_cnt++; } } printf("*** 肥満度統計結果 ***\n"); printf("やせすぎ=%d人\n",y_cnt); printf("普通=%d人\n",f_cnt); printf("過体重=%d人\n",k_cnt); printf("超過体重=%d人\n",c_cnt); printf("計算できない人=%d人\n",n_cnt); } これを実行すると、10回それぞれ身長や体重を入力していくのですが、”計算できない人”が毎回加算されてしまい、”計算できない人=10”と出てしまします。他のやせすぎとか過体重などはちゃんと計算してくれるんです。どのようにしたら、ちゃんと”計算できない人”を計算してくれるのでしょうか?

  • C言語についてです。(困っております)

    プログラミング初心者で右も左もわからないので力になってください。 ニコニコ動画で、【第05回】ミクと学ぶC言語【if文】という動画を見ています。 その中で出てきたソースコードで、コンパイルまではうまくいくのですが コマンドプロンプトの画面で、文字を入力すると、動作を停止しました。 という通知が出てきます。 うまくできなくて困っているのでどうかわかりやすくアドバイスの程 よろしくお願いします。 ソースコードです。 ↓ /* BMI.c */ #include<stdio.h> int main(void){ double height,weight,BMI; printf("身長[ m]:"); scanf("%if",&height); printf("体重[kg]:"); scanf("%if",&weight); BMI=weight/height/height; printf("BMIは%fです。\n",BMI); if(BMI>=25){ printf("肥満です!\n"); }else if(BMI<18.5){ printf("低体重です!\n"); }else{ printf("標準です!\n"); } return 0;

  • doubleとfloatについて

    #include <stdio.h> int main() { float height,weight; printf("身長と体重を入力してください。\n"); scanf("%f",&height); scanf("%f",&weight); printf("身長は%fセンチ:体重は%fキロです。\n",height,weight); return 0; } 上記のようなプログラムを作って、身長には175.1体重には56.1という入力を行なって実行したところ、 身長は175.100006センチ:体重は56.099998キロです。 という結果が返ってきました。 heightとweightをdouble型で宣言したところ(もちろんscanf文の変換仕様は%lfにしています。)、結果は 身長は175.100000センチ:体重は56.100000キロです。 と私が、期待していたものが返ってきました。なぜfloat型だと期待通りの結果が返ってこないのでしょうか?ご教授お願い致します。

  • c言語 標準体重計算のプログラミング

    標準体重計算のプログラミングを作成しています。身長(m)×身長(m)×22 での計算方法を採用していますが初心者なので全くでくません。全くなっていませんがここにのせます。 どなたか正しいプログラミングを教えてください #include <stdio.h> //標準体重の計算 int main (int argc, const char * argv[]) { int height; int weight; double x; double y; printf("あなたの標準体重を計算します\n\n"); printf("あなたの身長(cm)、体重(kg)を入力してください\n"); scanf("%d %d",&height,&weight); x=height/100; y=x*x*22; printf("これが標準体重です\n"); printf(" %y \n");

  • 分割

    下記のプログラミングを Makefileを利用して分割コンパイルしたいのですが、 分割の仕方からコンパイルまで全くわからなくて手が付けられません。 どなたかよろしくお願いします。 #include <stdio.h> #include <string.h> void write_profile(FILE *fp) { double height, weight; char name[100]; printf("名前を入力してください:"); scanf("%s", name); printf("身長を入力してください:"); scanf("%lf", &height); printf("体重を入力してください:"); scanf("%lf", &weight); fprintf(fp, "Name:%s, Height:%f, Weight:%f\n", name, height, weight); printf("ファイルに書き込みました。\n"); } int main(void) { FILE *fp; fp = fopen("profile", "a"); while(1){ write_profile(fp); fclose(fp); } return(0); }

  • このCのプログラムの修正と追加してくれませんか

    完成まで近いのですが、詰まっております このサイトでコンパイルなど出来ます http://ideone.com/ 以下の問題を解きました また問題文の指示には必ずしたがってください。また、この文章の条件でなく、人数が4人とかそれ以外の時でも出来るようなプログラムでお願いします。実行結果のとおりになるようお願いします http://i.imgur.com/nuzJv2v.png http://i.imgur.com/c7f3Vh2.png http://i.imgur.com/5aCqDO0.png http://i.imgur.com/9u8hHIM.png 問題は画像になっています、実行結果も含まれています #include<stdio.h> #include<string.h> /*構造体型struct Dataの宣言*/ struct Data{ char name[20]; int height; double weight; } data[100]; int cnt; int main(void) { int a; while(1) { printf("**************身長・体重の表示***************\n\n"); printf(" データファイルの読み込み・・・・・(1)\n"); printf(" 全てのデータを表示・・・・・・・・(2)\n"); printf(" 特定のデータを表示・・・・・・・・(3)\n"); printf(" 終わり・・・・・・・・・・・・・・(4)\n\n"); printf("処理番号を入力してください\n"); scanf("%d",&a); } if (a==1){ read_file(); } if (a==2){ p_all(); } if (a==3){} if(a==4){ break; } return a; } /*read_file関数の宣言*/ void read_file(void) { FILE *fp; char filename[20]; cnt=0; printf("読み込むファイルの名前を入力してください。\n"); scanf("%s",filename); fp=fopen(filename,"r"); if(fp==NULL){ printf("ファイルをオープンできませんでした。\n"); return 1; } while(fscanf(fp,"%c %d %lf",data[cnt].name,data[cnt].height,data[cnt].weight)!=EOF){ cnt++; fclose(fp); printf("ファイルを読み込みました。\n"); } return 0; } /*p_all関数の宣言*/ void p_all(void) { int i; printf("名前 身長(cm) 体重(kg)\n"); for(i=0;i<cnt;i++) { printf("%-2s %5d %.2f\n",data[i].name,data[i].height,data[i].weight); } } int main(void) { }

  • C言語のプログラムを修正追加お願いします。

    C言語のプログラムがあと少しで完成しそうなのですがつまっています。誰か、修正、追加して完成させて頂けないでしょうか このサイトでコンパイルなど出来ます http://ideone.com/ 以下の問題を解きました また問題文の指示には必ずしたがってください。また、この文章の条件でなく、人数が4人とかそれ以外の時でも出来るようなプログラムでお願いします。実行結果のとおりになるようお願いします http://i.imgur.com/nuzJv2v.png http://i.imgur.com/c7f3Vh2.png http://i.imgur.com/5aCqDO0.png http://i.imgur.com/9u8hHIM.png 問題は画像になっています、実行結果も含まれています #include<stdio.h> #include<string.h> /*構造体型struct Dataの宣言*/ struct Data{ char name[20]; int height; double weight; } data[100]; int cnt; /*read_file関数の宣言*/ void read_file(void) { FILE *fp; char filename[20]; cnt=0; printf("読み込むファイルの名前を入力してください。\n"); scanf("%s",filename); fp=fopen(filename,"r"); if(fp==NULL){ printf("ファイルをオープンできませんでした。\n"); return 1; } while(fscanf(fp,"%c %d %lf",data[cnt].name,data[cnt].height,data[cnt].weight)!=EOF){ cnt++; } fclose(fp); printf("ファイルを読み込みました。\n"); return 0; } /*p_all関数の宣言*/ void p_all(void) { int i; printf("名前     身長(cm)   体重(kg)\n"); for(i=0;i<cnt;i++) { printf("%-2s %5d %.2f\n",data[i].name,data[i].height,data[i].weight); } } int main(void) { int a; while(1) { printf("**************身長・体重の表示***************\n\n"); printf(" データファイルの読み込み・・・・・(1)\n"); printf(" 全てのデータを表示・・・・・・・・(2)\n"); printf(" 特定のデータを表示・・・・・・・・(3)\n"); printf(" 終わり・・・・・・・・・・・・・・(4)\n\n"); printf("処理番号を入力してください\n"); scanf("%d",&a); } if (a==1){   read_file(); }   if (a==2){   p_all(); } if (a==3){} if(a==4){ break; } return a; }

  • C言語のプログラム組んだのですが完成させてください

    C言語のプログラムを断片的に作成したのでつなげて完成させて頂けないでしょうか? このサイトでコンパイルなど出来ます http://ideone.com/ 以下の問題を解きました また問題文の指示には必ずしたがってください。また、この文章の条件でなく、人数が4人とかそれ以外の時でも出来るようなプログラムでお願いします。 http://i.imgur.com/nuzJv2v.png http://i.imgur.com/c7f3Vh2.png http://i.imgur.com/5aCqDO0.png http://i.imgur.com/9u8hHIM.png 問題は画像になっています #include<stdio.h> #include<string.h> /*構造体型struct Dataの宣言*/ struct Data{ char name[20]; int height; double weight; } data[100]; int cnt; int main(void) { int a; do { printf("**************身長・体重の表示***************\n\n"); printf(" データファイルの読み込み・・・・・(1)\n"); printf(" 全てのデータを表示・・・・・・・・(2)\n"); printf(" 特定のデータを表示・・・・・・・・(3)\n"); printf(" 終わり・・・・・・・・・・・・・・(4)\n\n"); printf("処理番号を入力してください\n"); scanf("%d",&a); } while(a<1 || a>4); return a; } /*read_file関数の宣言*/ int read_file(void) { FILE *fp; char filename[20]; cnt=0; printf("読み込むファイルの名前を入力してください。\n"); scanf("%s",filename); fp=fopen(filename,"r"); if(fp==NULL){ printf("ファイルをオープンできませんでした。\n"); return 1; } while(fscanf(fp,"%c %d %lf",data[cnt].name,data[cnt].height,data[cnt].weight)!=EOF){ cnt++; fclose(fp); printf("ファイルを読み込みました。\n"); } return 0; } /*p_all関数の宣言*/ int p_all(void) { int i; printf("名前 身長(cm) 体重(kg)\n"); for(i=0;i<cnt;i++) { printf("%-2s %5d %.2f\n",data[i].name,data[i].height,data[i].weight); } } 最初の処理番号を入力した所で終わってしまいます、何とか改変してくださいお願いします 補足

  • エラーはでないが数値がおかしい(BMI値計算プログラム)

    今以下のようなプログラムを製作中なのですがどうしてもうまくいきません; (1)ユーザに身長と体重を入力してもらう (2)(1)の値からBMI値を計算し、その結果から「太りすぎ」などの判定を表示し (3)身長・体重から計算した標準体重と現在の体重との差を表示する 問題は以下です。 ・身長と体重の数値を変えても結果(BMI値)は毎回同じで、 100万台の桁違いな数値がでる;(しかし「太りすぎ」などの判定は変化する) どこがおかしいのかチェックするために(1)の部分のあとに改めて身長と体重を 表示させてみたところ、そこからすでに数値が変なことになっていたので、 おかしいとしたら(1)のscanfなどの部分か型宣言だと思うのですが… 回答よろしくお願いします;; プログラム ------------------------------------------------ /* bmi.c */ #include <stdio.h> main() { int sintyo, taizyu; double sintyo2, bmi, hyozyun, sa; //入力 printf("身長(cm)を入力してください\n"); scanf("%d", &sintyo); printf("体重(kg)を入力してください\n"); scanf("%d", &taizyu); //※チェック(身長・体重) printf("%d\n", &sintyo); printf("%d\n", &taizyu); //計算 sintyo2 = sintyo / 100; //cm→m bmi= taizyu / (sintyo2 *sintyo2); //BMI値計算 hyozyun = (sintyo2 *sintyo2) * 22;//標準体重 sa = hyozyun - taizyu; //※チェック(BMI値) printf("%d\n", &bmi); //出力 if(bmi>=25) printf("BMI値:%f\nあなたは太りすぎです\n", &bmi); else if(bmi>=23 && bmi<25) printf("BMI値:%f\nあなたは太りぎみです\n", &bmi); else if(bmi>=21 && bmi<23) printf("BMI値:%f\nあなたは標準です\n", &bmi); else if(bmi>=18.5 && bmi<21) printf("BMI値:%f\nあなたは痩せぎみです\n", &bmi); else printf("BMI値:%f\nあなたは痩せすぎです\n", &bmi); if(sa>=0) printf("標準体重:%fkg\n標準体重を+%fkgオーバーしています\n",&hyozyun, &sa); else printf("標準体重:%fkg\n標準体重より-%fkgです\n",&hyozyun, &sa); return 0; } 結果(身長160、体重50で入力) ------------------------------------------------ 身長(cm)を入力してください 160 体重(kg)を入力してください 50 1310600 (←身長チェック 以下3つの値は不動です;) 1310596 (←体重チェック) 1310580 (←BMI値チェック) BMI値:0.000000 あなたは太りすぎです 標準体重:0.000000kg 標準体重より-+NANkgです

  • C言語 構造体とvectorについてです

    C言語についてこんなプログラムをつくろうとしています。内容はこんなです↓↓ 1「番号・身長・体重を入力」←番号を入力するとこで0と入力するまでループ 2「今まで入力した値の平均を出力」←身長・体重それぞれの値の平均 3「番号を入力すると対応したデータ(1で打ち込んだデータ)を出力」 4「1を入力すると出力した値の修正をする」 3と4のループをして3のところで0を入力したら終了。。。 という感じです。 わからないとこは、最初のnumberの入力でデバックエラーがおきてしまうとこ(scanf("%d",&vec[i].number);の部分がおかしい?)、2は全体的にわかりません、3と4はなんとなくわかります。 構造体とvectorを使うのがわかりやすいと思って作成中ですが完全に止まってしまいました。 できれば1と2のプログラムを作成していただけませんか?よろしくおねがいします。 int main() { float height, weight; int i, b, D, P, J, M, E, number; vector<student_list> vec; student_list num; vec.push_back(num); for(i = 0;;i++) { printf("%d人目のデータです\n番号を入力して下さい\n", i + 1); scanf("%d",&vec[i].number); if(vec[i].number == 0) { return 0; } else { printf("身長と体重を入力して下さい\n"); scanf("%f\n%f",&vec[i].height,&vec[i].weight); printf("あなたのBMIは%.1fです\n",vec[i].weight*vec[i].weight/vec[i].height); printf("電子回路の点数を入力して下さい\n"); scanf("%d",&vec[i].D); printf("プログラミングの点数を入力して下さい\n"); scanf("%d",&vec[i].P); printf("国語の点数を入力して下さい\n"); scanf("%d",&vec[i].J); printf("数学の点数を入力して下さい\n"); scanf("%d",&vec[i].M); printf("英語の点数を入力して下さい\n"); scanf("%d",&vec[i].E); printf("国数英の平均点は%dです\n",(vec[i].J+vec[i].M+vec[i].E)/3); printf("5教科の平均点は%dです\n",(vec[i].D+vec[i].P+vec[i].J+vec[i].M+vec[i].E)/5); } } }