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

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

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

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

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Q&A

解決済

3回答

6827閲覧

特定の数字が入力されるまで同じ処理を繰り返し、特定の数字が入力されたら終了するプログラムを作りたい

study5563

総合スコア9

C

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

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

0グッド

0クリップ

投稿2020/04/22 00:26

編集2020/04/22 00:31

前提・実現したいこと

以下のプログラムは1からの数値を入力するとそれに対応した案内が返ってくるというプログラムです。1から3以外の数値を入力すると「その階には行けません」と表示されます。このプログラムに以下の使用を追加したいです。よろしくお願いいたします。

・数値入力(何階に行きますか?(1~3))を何度も行うようにする
・0または9が入力されたらプログラムを終了する

該当のソースコード

#include <stdio.h> int main(void) { int num; printf("フロア案内をします\n"); printf("\n"); printf("何階に行きますか? (1~3) => "); scanf("%d", &num); if (num == 1) { printf("1階:食品売り場\n"); } else if (num == 2) { printf("2階:洋服売り場\n"); } else if (num == 3) { printf("3階:おもちゃ売り場\n"); } else { printf("その階には行けません\n"); } return 0; }

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

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

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

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

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

maisumakun

2020/04/22 00:31

どのあたりがわからないのでしょうか?
study5563

2020/04/22 00:36

ループする部分をwhile文で囲んでみたんですが上手くいきませんでした
guest

回答3

0

自己解決

###自己解決法

#include <stdio.h> int main(void) { int num = -1; printf("フロア案内をします\n"); printf("\n"); while ((num != 0) && (num != 9)) { if (num == -1) { } else if (num == 1) { printf("1階:食品売り場\n\n"); } else if (num == 2) { printf("2階:洋服売り場\n\n"); } else if (num == 3) { printf("3階:おもちゃ売り場\n\n"); } else { printf("その階には行けません\n\n"); } printf("何階に行きますか?(1~3)=> "); scanf("%d", &num); } printf(">\n"); return 0; }

これでイメージ通りの実行結果が出ました。アドバイスありがとうございました。

投稿2020/04/22 01:26

study5563

総合スコア9

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

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

0

指摘ポイントはこのような感じです。
参考にして下さい。

C

1#include <stdio.h> 2int main(void) 3{ 4 int num; 5 printf("フロア案内をします\n"); 6 printf("\n"); 7 8 printf("何階に行きますか? (1~3) => "); 9 scanf("%d", &num); 10 11 //while(true){ //と入力することで無限ループが可能です。 12 13 //この場合はswitch文の方が綺麗に書けますよ。 14 // 参考資料:https://www.programiz.com/c-programming/c-switch-case-statement 15 //if (num == 1) { 16 printf("1階:食品売り場\n"); 17 //} else if (num == 2) { 18 printf("2階:洋服売り場\n"); 19 //} else if (num == 3) { 20 printf("3階:おもちゃ売り場\n"); 21 //} else { 22 printf("その階には行けません\n"); 23 break; //これはループを強制的に抜けるテクニックです。 24 //} 25 26 }//開けたら閉じるこれ基本なり 27 return 0; 28} 29/* 30あくまでヒントであって答えではありません。 31少し罠をご用意していますので、後は自分で考えて下さい。 32*/

投稿2020/04/22 00:46

stdio

総合スコア3307

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

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

0

何度も入力する、となると、while文を使用することになりますね。なので、コードの

C

1 2printf("フロア案内をします\n"); 3 printf("\n"); 4 5 printf("何階に行きますか? (1~3) => "); 6 scanf("%d", &num); 7 8 if (num == 1) { 9 printf("1階:食品売り場\n"); 10 } else if (num == 2) { 11 printf("2階:洋服売り場\n"); 12 } else if (num == 3) { 13 printf("3階:おもちゃ売り場\n"); 14 } else { 15 printf("その階には行けません\n"); 16 }

をwhile文に入れて、

C

1while (true){//無限ループ 2 printf("フロア案内をします\n"); 3 printf("\n"); 4 5 printf("何階に行きますか? (1~3) => "); 6 scanf("%d", &num); 7 8 if (num == 1) { 9 printf("1階:食品売り場\n"); 10 } else if (num == 2) { 11 printf("2階:洋服売り場\n"); 12 } else if (num == 3) { 13 printf("3階:おもちゃ売り場\n"); 14 } else {//1,2,3以外の数が入力されたら 15 printf("その階には行けません\n");//案内を表示して 16 break;//ループを終わらせる 17 } 18}

とするとできます

投稿2020/04/22 00:39

Luke02561

総合スコア404

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

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

study5563

2020/04/22 01:01 編集

ご回答ありがとうございます。申し訳ないのですが、実行結果について私のイメージしたものと若干相違がございます。私がイメージしたものは、1~3を入力したらその階の案内を表示してループ続行、1~3と0と9以外を入力したら「この階には行けません」と表示してループ続行、0か9が入力されたら何も表示せずプログラム終了という流れでした。
Luke02561

2020/04/22 02:50

そうでしたか。そうすると、最後のelse文の前に else if(num==0 || num==9){ continue; } を付け加えるとうまくいくはずです。 continue文は、そのループ内ではもう何もせずに次のループに入るという意味です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問