• 締切済み

while文を使うと思うのですが・・・。

プログラミングを独学でやっている初心者です。 以下の問題でつまずきました。 「単細胞生物が翌日までに2分裂して2細胞になるとする。1匹も死なないとすると、細胞数が1万匹を超えるのは何日目になるかを算出するプログラムを作成せよ。」 実行結果を 『15日目に16384個の細胞数になります。』としたい。 while文を使うと思うのですが、どう作成したらよいのか…。 詳しい方、よろしくお願いします。

みんなの回答

  • A-VAREST
  • ベストアンサー率0% (0/1)
回答No.5

ほぼほかの方と一緒になると思いますがあえて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; } でいいかと。

kokko28
質問者

お礼

有難うございます! if文を使うのですね。 やってみます!!

  • tig33
  • ベストアンサー率50% (6/12)
回答No.4

ANo.3の回答に誤り  m(__)m   cell_count *= cell_count; は、間違いです。   cell_count *= 2; または、   cell_count += cell_count; としてください。

  • tig33
  • ベストアンサー率50% (6/12)
回答No.3

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); }

kokko28
質問者

お礼

なるほど! 大変助かりました。 丁寧な回答有難うございます!!

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

n > log2(10000) となるnを求めればよいだけでは?

kokko28
質問者

お礼

logを使うのは試したことがないのですが…、 やってみます! ありがとうございました!!

回答No.1

while ( 一万を超えてない ) {  二倍する  日数++ }

kokko28
質問者

お礼

日数のカウントの仕方が分からなかったのですが、 日数++とすればよいのですね。 有難うございました!

関連するQ&A