max の出し方
max の出し方
maxを出したいのですが、終了に-999を入力をするようにしています。その-999がデーターとして数えれております。よろしくお願いします。
#include<stdio.h>
main(void)
{
float cm,kg,m,bmi,max;
int nin;
cm=kg=nin=0;
max=-100;
printf("身長(cm)と体重を入力してください。\n");
while (cm=999,kg=999){
scanf("%f %f",&cm , &kg);
nin ++;
if(cm>max) {
max=cm;
}
if(cm == -999,kg == -999)
break; /*-999で終了 */
m=cm/100.0 ; /* Mに変換 */
bmi=kg / m / m; /* BMIの計算 */
printf("身長%5.1f ",cm);
printf("体重%5.1f ",kg);
printf("BMI値%7.1f",bmi );
if(bmi>=25)
printf("肥満です。\n");
if(bmi<18.5)
printf("低体重です。\n");
if(bmi <25 && bmi>=18.5)
printf("**.* \n");
}
printf("総人数%d\n",nin-1);
printf("最大身長%f",cm);
return 0;
}
#include<stdio.h>
main(void)
{
float cm,kg,m,bmi,max;
int nin;
cm=kg=nin=0;
max=-100;
printf("身長(cm)と体重を入力してください。\n");
while (cm=999,kg=999){
scanf("%f %f",&cm , &kg);
nin ++;
if(cm>max) {
max=cm;
}
if(cm == -999,kg == -999)
break; /*-999で終了 */
m=cm/100.0 ; /* Mに変換 */
bmi=kg / m / m; /* BMIの計算 */
printf("身長%5.1f ",cm);
printf("体重%5.1f ",kg);
printf("BMI値%7.1f",bmi );
if(bmi>=25)
printf("肥満です。\n");
if(bmi<18.5)
printf("低体重です。\n");
if(bmi <25 && bmi>=18.5)
printf("**.* \n");
}
printf("総人数%d\n",nin-1);
printf("最大身長%f",cm);
return 0;
}
Re:max の出し方
scanf("%f %f",&cm , &kg);
nin ++;
if(cm>max) {
max=cm;
}
if(cm == -999,kg == -999)
break; /*-999で終了 */
scanfでcmとkgに入れてますからですね
めんどうだけどなんかの変数に先に値を入れてそれがー999出ないならcmとkgに入れる、というのはダメですか?
nin ++;
if(cm>max) {
max=cm;
}
if(cm == -999,kg == -999)
break; /*-999で終了 */
scanfでcmとkgに入れてますからですね
めんどうだけどなんかの変数に先に値を入れてそれがー999出ないならcmとkgに入れる、というのはダメですか?
Re:max の出し方
nin ++;
を
if(cm == -999,kg == -999)
break; /*-999で終了 */
の後に移動してはどうですか?
--- 追記
あぁっ こんどはパコネコさんとかぶりました...;; スルーしてください;
を
if(cm == -999,kg == -999)
break; /*-999で終了 */
の後に移動してはどうですか?
--- 追記
あぁっ こんどはパコネコさんとかぶりました...;; スルーしてください;

Re:max の出し方
ざっと見たところの問題点。
1)意味不明なwhile文
while (cm=999,kg=999){
2)最大でない値を出力している
printf("最大身長%f",cm);
3)字下げが乱れていて、コードが読みづらい
1)意味不明なwhile文
while (cm=999,kg=999){
2)最大でない値を出力している
printf("最大身長%f",cm);
3)字下げが乱れていて、コードが読みづらい
Re:max の出し方
ほんとだ
やってみたら間違ってた…下は問題ないと思ってたから見てなかった…
===============================
ループ自体はしてるから…でもどうせなら無限ループのほうがいいのかな?
やってみたら間違ってた…下は問題ないと思ってたから見てなかった…
===============================
ループ自体はしてるから…でもどうせなら無限ループのほうがいいのかな?

Re:max の出し方
if(bmi <25 && bmi>=18.5)
printf("**.* \n");
}
ちなみにこれは**.*はどういう意味ですか?
ワイこれだったけど…普通ぐらいって意味?
printf("**.* \n");
}
ちなみにこれは**.*はどういう意味ですか?
ワイこれだったけど…普通ぐらいって意味?
Re:max の出し方
if(cm == -999,kg == -999) を
if(cm == -999 || kg == -999)にすれば、とりあえずループからは抜けます。
それ以外に問題が山ほどありますが。。
if(cm == -999 || kg == -999)にすれば、とりあえずループからは抜けます。
それ以外に問題が山ほどありますが。。
Re:max の出し方
> ざっと見たところの問題点。
>
> 1)意味不明なwhile文
> while (cm=999,kg=999){
>
> 2)最大でない値を出力している
> printf("最大身長%f",cm);
>
> 3)字下げが乱れていて、コードが読みづらい
素人の質問にありがとうございます。
1) 自分もわかりません。ただ、ネットであったのをいれるとなんとなく動いたのです。
どうすればいいんでしょうね。
2) 理解しました。
3) そのとおりかと。
パコネコさんの回答は当たりです。LOTO買ってはどうでしょう。
プログラマーさん、そのとおりでした。
シエルさん、山ほどなんですよね。
>
> 1)意味不明なwhile文
> while (cm=999,kg=999){
>
> 2)最大でない値を出力している
> printf("最大身長%f",cm);
>
> 3)字下げが乱れていて、コードが読みづらい
素人の質問にありがとうございます。
1) 自分もわかりません。ただ、ネットであったのをいれるとなんとなく動いたのです。
どうすればいいんでしょうね。
2) 理解しました。
3) そのとおりかと。
パコネコさんの回答は当たりです。LOTO買ってはどうでしょう。
プログラマーさん、そのとおりでした。
シエルさん、山ほどなんですよね。
Re:max の出し方
>1) 自分もわかりません。ただ、ネットであったのをいれるとなんとなく動いたのです。
どうすればいいんでしょうね。
特に使わないならwhile(1)でいいと思います
無限ループになります。
どういう意味なんだろ~
だれかわかります?
>LOTO買ってはどうでしょう
何ですか?それ?
どうすればいいんでしょうね。
特に使わないならwhile(1)でいいと思います
無限ループになります。
どういう意味なんだろ~
だれかわかります?
>LOTO買ってはどうでしょう
何ですか?それ?
Re:max の出し方
>while (cm=999,kg=999){
これは、コンマ演算子です。まず、cmに999を代入し、続いてkgに999を代入します。
そして、式全体の評価値は、kgすなわち999となります。
よって、これは無限ループとなります。
くわしくは、ググってください。
これは、コンマ演算子です。まず、cmに999を代入し、続いてkgに999を代入します。
そして、式全体の評価値は、kgすなわち999となります。
よって、これは無限ループとなります。
くわしくは、ググってください。
Re:max の出し方
つまり毎回代入してくれるということでしょうか?
うまく使えば便利かもしれませんね。
無限ループの1つ下に書いてもいいけど…短くなりますし
asdsさんありがとうございます
ためになりました。
うまく使えば便利かもしれませんね。
無限ループの1つ下に書いてもいいけど…短くなりますし
asdsさんありがとうございます
ためになりました。
Re:max の出し方
一応・・・
if(cm == -999,kg == -999)
でのcm == -999は全くの無意味です。
結局、
if (kg == -999)
と同じです。
理由は上記の通りです。
if(cm == -999,kg == -999)
でのcm == -999は全くの無意味です。
結局、
if (kg == -999)
と同じです。
理由は上記の通りです。
Re:max の出し方
ちょっと違います。
まず、1番目の式を評価し、2番目の式を評価します。そして、式全体の評価値は、2番目の式の型と値となります。
例えば、i = 0, j=1(両方int型)とします。
i++, j
という式は、まず、iをインクリメントします。(つまり、i=1)そして、この式全体の評価値は、int型の1(jの型と値)となります。
上で述べたif(cm == -999,kg == -999) は、1番目の式が代入でなく、==となっています。
この場合、まずcm==-999の判定を行います。続いて、kg==-999の判定を行います。
式全体の評価値は、2番目の式のみに依存するので、結局、kg==-999しか判定されていないことになります。
まず、1番目の式を評価し、2番目の式を評価します。そして、式全体の評価値は、2番目の式の型と値となります。
例えば、i = 0, j=1(両方int型)とします。
i++, j
という式は、まず、iをインクリメントします。(つまり、i=1)そして、この式全体の評価値は、int型の1(jの型と値)となります。
上で述べたif(cm == -999,kg == -999) は、1番目の式が代入でなく、==となっています。
この場合、まずcm==-999の判定を行います。続いて、kg==-999の判定を行います。
式全体の評価値は、2番目の式のみに依存するので、結局、kg==-999しか判定されていないことになります。
Re:max の出し方
>if(cm == -999,kg == -999)
この場合cm==-999を行う意味はありますか
もしくはどういう時ならこれを使うことができますか?
たびたびすいません
この場合cm==-999を行う意味はありますか
もしくはどういう時ならこれを使うことができますか?
たびたびすいません
Re:max の出し方
>この場合cm==-999を行う意味はありますか
上の回答を参照してください。
>もしくはどういう時ならこれを使うことができますか?
コンマ演算子のことですよね。
例えば、for文です。
ちょうど良いサイトがありました。
http://www7b.biglobe.ne.jp/robe/cpphtml ... 03006.html
ここで勉強なさってください。
上の回答を参照してください。
>もしくはどういう時ならこれを使うことができますか?
コンマ演算子のことですよね。
例えば、for文です。
ちょうど良いサイトがありました。
http://www7b.biglobe.ne.jp/robe/cpphtml ... 03006.html
ここで勉強なさってください。
Re:max の出し方
なるほどfor文で使うとおっしゃっていた意味がわかりました。
これなら何度か見たことがあるのでなんとなく両方「行うのか」っと思っていましたが
これは応用に過ぎなかったんですね
もう少し読んで勉強してきます
ありがとうございました。
これなら何度か見たことがあるのでなんとなく両方「行うのか」っと思っていましたが
これは応用に過ぎなかったんですね
もう少し読んで勉強してきます
ありがとうございました。