質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

2907閲覧

whileループをscanfを用いて制御したいです。

dan0401

総合スコア4

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2020/07/17 01:33

whileループをscanfを用いて制御したいです。

C

1while(scanf("%d",&x), scanf("%d",&y), scanf("%d",&i) !=EOF) { 2実行内容 3}

xとyは実行内容の計算で使い、実行後にiに0か1を入力して、「1だったらwhileを繰り返す」「0だったら終了」になるようにしたいです。
この場合、

C

1scanf("%d",&i) 2```  3はどこに記述すればよろしいですか。 4ご回答よろしくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2020/07/17 02:04 編集

do{ x,yを入力 実行内容 scanf("%d",&i); }while(i); じゃダメ? ・・・whule()のカッコ内に書いてるけど、scanf()のエラーチェックはどうするんでしょう? ・・・数字以外を入力されたら止まらない。
dan0401

2020/07/17 02:06

whileの()内のscanf()は、自分で試して上手くいかなかったプログラムです。 do whileでもいけるんですね。勉強になります????
guest

回答3

0

xとyは実行内容の計算で使い、実行後にiに0か1を入力して、「1だったらwhileを繰り返す」「0だったら終了」になるようにしたいです。

書いてある通りに処理していけばいいのでは。

C

1while (1) { 2 scanf("%d",&x); 3 scanf("%d",&y); 4 5 // x,yを使って何か計算をする 6 7 scanf("%d",&i); 8 if (i == 0) { 9 break; 10 } 11}

投稿2020/07/17 01:43

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daregada

2020/07/17 01:44

ああ、かぶってしまった。
dan0401

2020/07/17 02:01

ご回答ありがとうございます。
guest

0

ベストアンサー

判定位置がループの先頭にあるのが使いにくいので、ループ自体はwhile(1)で無限ループにして、適宜breakするほうがいいのではないかと思います。

c

1while(1) { 2 scanf("%d",&x); 3 scanf("%d",&y); 4 実行内容 5 scanf("%d",&i); 6 if(i == 0) break; 7}

投稿2020/07/17 01:37

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dan0401

2020/07/17 01:45

できました! お早い回答に感謝しております。 ありがとうございました。
guest

0

BAが出ていますが、別解という事で・・・

c

1#include <stdio.h> 2// 3int main( ) 4{ 5 int x, y, i; 6 7 do { 8 if(scanf("%d", &x) != 1) { 9 puts("readerror:x"); 10 break; 11 } 12 if(scanf("%d", &y) != 1) { 13 puts("readerror:y"); 14 break; 15 } 16 17 // 実行内容をここに 18 19 if(scanf("%d", &i) != 1) { 20 puts("readerror:i"); 21 break; 22 } 23 } while(i); // i == 0ならぬける 24 // 25 return 0; 26}

結果
usr ~/Project/test % ./a.out
a
readerror:x
usr ~/Project/test % ./a.out
1 2 2
1 a 2
readerror:y
usr ~/Project/test % ./a.out
1 2 0

投稿2020/07/17 02:09

編集2020/07/17 02:34
cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2020/07/17 02:16

戻り値に付いては→http://manabu.quu.cc/up/3/e31180m3.htm
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問