- 締切済み
while文を使うと思うのですが・・・。
プログラミングを独学でやっている初心者です。 以下の問題でつまずきました。 「単細胞生物が翌日までに2分裂して2細胞になるとする。1匹も死なないとすると、細胞数が1万匹を超えるのは何日目になるかを算出するプログラムを作成せよ。」 実行結果を 『15日目に16384個の細胞数になります。』としたい。 while文を使うと思うのですが、どう作成したらよいのか…。 詳しい方、よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- A-VAREST
- ベストアンサー率0% (0/1)
ほぼほかの方と一緒になると思いますがあえてC++で・・・ #include<iostream> void main(){ int i=0,j=1; cout << "単細胞生物が翌日までに2分裂して2細胞になるとする" << endl; while(ture){ i++; j *= 2; if(i >= 10000) break; } cout << i << "日目に" << j << "個の脳細胞になります" << endl; } でいいかと。
- tig33
- ベストアンサー率50% (6/12)
ANo.3の回答に誤り m(__)m cell_count *= cell_count; は、間違いです。 cell_count *= 2; または、 cell_count += cell_count; としてください。
- tig33
- ベストアンサー率50% (6/12)
ANo.1の方の回答を実現すると、以下のようになりますね。 #include <stdio.h> #define CELL_MAX (10000) int main() { int cell_count, days; cell_count=1; days=1; while(cell_count < CELL_MAX) { cell_count *= cell_count; days++; } printf("%d日目に%d個の細胞数になります", days, cell_count); return(0); }
お礼
なるほど! 大変助かりました。 丁寧な回答有難うございます!!
- jacta
- ベストアンサー率26% (845/3158)
n > log2(10000) となるnを求めればよいだけでは?
お礼
logを使うのは試したことがないのですが…、 やってみます! ありがとうございました!!
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
while ( 一万を超えてない ) { 二倍する 日数++ }
お礼
日数のカウントの仕方が分からなかったのですが、 日数++とすればよいのですね。 有難うございました!
お礼
有難うございます! if文を使うのですね。 やってみます!!