• 締切済み

なんで繰り返すの?すいません急です汗

macでソースプログラムを作っています。 #include <iostream> using namespace std; main(){ int i = 1 ; while (i < 1000) { cout << i ; if (i % 2 == 0){ cout << "go\n" ; } else { cout << "\n"; } i++; } } これだとなぜか1000までの数字が 1 2go 3 4go 5 6go と繰り返しででてきてしまいます。 本当は好きな数字を入力する状況になるようにして例えば「2」を入力したら 2go とだけ表示したいんです。 どこがまちがってるのでしょうか?

みんなの回答

  • digitalian
  • ベストアンサー率29% (323/1104)
回答No.6

>本当は好きな数字を入力する状況になるようにして例えば「2」を入力したら >2go >とだけ表示したいんです。 1. 好きな数字を入力するには、cin >> n ; でいいですね。 2. 「2go」とだけ表示したいのなら、cout << n << "go" ; ですね。 回答例はこうなります。 #include <iostream> using namespace std; int main ( ) {   int n ;   cout << "好きな数字を入力してね。---->" ;   cin >> n ;   cout << n << "go" ;   return 0 ; } ……。これだけです。なんで繰り返しに使う While 文が出てきたのですか? どうして if 文なんて使ったのですか? ご質問のソースは、本当にあなたが考えて書いたものなのか、私にははなはだ疑問に感じるのです。ですから「間違いも何も……」という答えしか返ってこなかったわけです。  おそらく学校の課題でしょう。先生の言うことを良く聞いて、教科書を読むなり、自分で調べたりして、どうか自力で努力してください。ここへ投稿することも良いでしょうが、あまりにも他人に頼りすぎることは、自分のためにならないと、私は思います。

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.5

その他(プログラミング)で質問するなら言語名は明確に示しましょうよ。 また、それ以前の問題として、質問しようとしている言語のためのカテゴリがあるならそちらのカテゴリで質問しましょう。

  • digitalian
  • ベストアンサー率29% (323/1104)
回答No.4

 あの~、ご質問にあるソースでは、やりたいこととぜんぜん違うプログラムになっちゃっているんですよ。どこが間違っているのかと問われれば、「ヘッダを除いて全部」と言えちゃうくらいに。  いま、ソースはどうなっているんですか? (暇なときに)ていねいに教えて差し上げますから、現在のソースを見せてください。

回答No.3

No.1への返答 >間違ってる所のご指摘とどのように直せばいいのか教えていただけませんか? その「修正した」ソースを開示してください。 どうなおしたのかわからなければ対処しようがありません。

回答No.2

>どこがまちがってるのでしょうか? 色々と まず >本当は好きな数字を入力する状況になるようにして の「入力処理」がありません。 そして >例えば「2」を入力したら >2go >とだけ表示したいんです。 while()の処理は、 ・iを1000になるまでループ ・iが偶数であったら「i」と「go」を表示 ・iが奇数であったら「i」を表示 ・表示したらiに1を足す という処理です。

  • digitalian
  • ベストアンサー率29% (323/1104)
回答No.1

好きな数字を入力するには cin>>n; を使わなくちゃダメじゃないですか。どうして繰り返しちゃうのって、While文は繰り返しのためにあるんでしょ! 落ち着いて!!

keiman890
質問者

お礼

回答ありがとうございます。 早速whileを消してcin>>n; を入れてみたところ数字を入力できるようにはなったんですけど、 数字を入力してエンターを押すとなぜか繰りかえしが起こってしまいます。 申し訳ございません。 間違ってる所のご指摘とどのように直せばいいのか教えていただけませんか? よろしくお願いします。

関連するQ&A

  • 改行文字について

    #include<iostream> using namespace std; int main(void) { char c; while (cin.get(c)) if (c == '\n') cout << "[RET]\n"; else cout << c; return(0); } これのif (c == '\n')の改行文字と等しいとは何のことを指すのでしょうか? よろしくお願いします。

  • ''C++の条件分岐分からないんですが

    #include<iostream> using namespace std; int main(){ int a; cout << "数値を入力してください\n"; cin >> a; if( a > 30) cout <<"31以上ですね\n"; } else if(a<10){ cout <<"10未満ですね\n"; } else { cout <<"30以下で10以上ですね\n"; } return 0; } これが例文なんですが、 変数aの値がbより小さい場合には、『aはbより小さいです』と表示させ、大きい場合には"a=a+b"を計算させる 文字変数mの中身が'a'ならば、『aが格納されています』と表示させて、'a'でないならば『'a'でない文字が格納されています』と表示させたあと、変数bとcを使った『b=b+c』を計算する。 変数aが、変数bより小さい場合には、『aはbより小さいです』と表示し、変数bより大きい場合には、『aはbより大きいです』と表示し、変数bと等しい場合には、『aとbは等しいです』と表示する #include<iostream> using namespace std; int main(){ int a; if(a < b) { __cout("aはbより小さいです\n"); } else { __c = a + b; }return 0; } #include<iostream> using namespace std; int main(){ int a; if(m == 'a') __cout("aが格納されています\n"); } else { __cout("\'a\'でない文字が格納されています\n"); } return 0; } #include<iostream> using namespace std; int main(){ int a; if(a < b) { __cout("aはbより小さいです\n"); } else if(a == b) { __cout("aとbは等しいです\n"); } else { __cout("aはbより大きいです\n"); } return 0; } これ合ってますか?あとプログラミング環境すらないので実行結果教えてもらっていいですか?

  • 配列のプログラムですが

    #include <iostream> using namespace std; int main() { int a[100],b=-9999; int i=0,j; do { cout << "整数値を入力してください\n"; cin >> a[i]; b += a[i]; i++; }while( a[i-1] != 9999); cout << b << '\n'; for(j=0;j<i-1;j=j+1) cout << a[j] * 3 << '\n'; return 0; } このプログラムってどんな計算をしてるんですか?誰か分かる人いますか 整数値を入れてくださいって出るだけなんですが

  • c++での入出力がうまくいきません;

    初心者ですが独習c++でプログラミングについて勉強している者です。 なんとか環境設定もできたと思いきや、うまくコンパイルすることができなくて困っています。具体的には、 #include <iostream> using namespace std; int main() { int i, j; double d; i = 10; j = 20; d = 99.101; cout << "値を表示: "; cout << i << ' ' << j << ' ' << d; return 0; } という値を表示するプログラムではコンパイルもうまくいったのですが、次の #include <iostream> using namespace std; int main() { int i; cout << "値を入力: "; cout >> i; cout << "入力した値: " << i << "\n"; return 0; } という入力のプログラムをコンパイルしようとすると、コマンドプロンプトに演算子が使われたクラス ostream では int型の定義が存在しないとなりコンパイルエラーとなってしまいます。 理由が考えてもわからないので、質問してみました。 どのようにすれば、このエラーを解消できるのか知りたいので、どうかご意見をよろしくお願いします。

  • isdigitの挙動について

    #include <iostream> #include <ctype.h> using namespace std; int main() { int i = 100; if (isdigit(i)){ cout << "true"; }else{ cout << "false"; } return 0; } というプログラムを実行したのですが、falseが標準出力に表示されます。 i=100なので、isdigitでtrueが返ってくるのだと思っていたのですが、なぜfalseが帰ってくるのでしょうか?? どなたか詳しい方いらっしゃったらご教示いただけると幸いです。

  • 関数呼び出しについて

    今cygwin 上でC++の勉強をしているのですが 以下の2つのプログラムの違いがよくわかりません どなたかよろしくお願いします <プログラム1> #include<iostream> using namespace std; int a(); int main(){ cout << abs();  return 0;} int a(){ cout << "test\n";  return 1;} <プログラム2> #include<iostream> using namespace std; int a(int i); int main(){ cout << a(1);  return 0;} int a(int i){ cout << "test\n";  return i;} プログラム1では関数a()内の"test"が出力されるのですが プログラム2ではa(int i)内の"test"は出力されません。 この違いはどこにあるのでしょうか? 同じプログラムでint a() と int a(int i)を double a() と double a(double d)にすると この違いは生じません。なぜaの戻り値をint に設定したときだけ この違いが生じるのでしょうか?

  • 教えてください

    #include<iostream> using namespace std; int main() { int i; double a[5]; for(i = 0; i < 5; i++){ a[i] = 0.0; } for(i = 0; i < 5; i++) cout << "a[" << i << "] = " << a[i] << "\n"; return 0; } どこが違うんでしょうか? 出力を0.0にしたいんですけど ならないので教えてください。

  • あるプログラミングでdoubleの箱が

    こんにちは、 とあるプログラミングでdoubleの箱が突然2つでてきて混乱しています。 //読み込んだ実数値は10で割りきれるか #include <cmath> #include <iostream> Using namespace std; Int main() { Double x; Cout <<"実数値: "; cin >> x; If (double m = fmod(x, 10)) { Cout<<"その値は10で割りきれません。\n"; Cout<<"剰余は"<< m << d"です。"\n"; } else{ Cout"その値は10で割りきれます" \n"; } } とあり、なぜ突然double mがでてきたのでしょうか? すみません m(__)m

  • 他のファイルからの数値代入

    かなり初歩的なこととは思いますが、取り組み始めたばかりで悪戦苦闘しています。 大学からの課題なのですが、 (1) 数値の入力と演算、表示を行うプログラムを組む (2) (1)とは別のファイルに(1)の結果を使って(自動的に読み込む)   更に演算し結果をを表示するプログラムを組む それぞれの入力と演算に関しては… (1) #include <iostream> using namespace std; int main() { int a; cout << "数値入力:" ; cin >> a; a = a * 2; cout << "結果 = " << a << '\n'; return 0; } (2) #include <iostream> using namespace std; int main() { int b; b = a; cout << "結果 = " << b << '\n'; return 0; } このような感じをイメージしているのですが… (2)のファイルでaが定義されていないことになり上手く出来ません。 他のファイルでの演算結果を引用するには、どのようにすればいいのでしょうか? 使用しているのはVC++ 2005です。宜しくお願いします。

  • 文字列の一致を確認する条件分岐でエラーなります。

    どこが間違ってるのでしょうか? #include <iostream> using namespace std; int main(void) { int buffA = 1; int buffB = 10; if(buffA == buffB) { // 一致なら"true"を出力 cout << "true" << "\n"; } else { // 不一致なら"false"を出力 cout << "false" << "\n"; } return 0; } エラー内容----------------------------------- エラー: プログラム内に逸脱した '\201' があります エラー: プログラム内に逸脱した '@' があります

専門家に質問してみよう