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

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

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

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

4回答

892閲覧

出力が思うようになりません。

46hm

総合スコア20

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/04/17 07:42

###実現したいこと
1つの整数 x を読み込み、それをそのまま出力するプログラムを作成したい。x が 0 のとき入力の終わりを示し、このデータセットに対する出力を行ってはいけない。
各データセットごとに、以下の形式で x を出力して下さい:Case i: x
インプット例
3
5
11
7
8
19
0

アウトプット例
Case 1: 3
Case 2: 5
Case 3: 11
Case 4: 7
Case 5: 8
Case 6: 19

###問題点
入力はできるがアウトプットが正しくされない。xが0の時に入力は終わるがそのデータセットに対する出力が行われてしまう。
インプット





アウトプット
case 1: 0

###作成したコード
#include<iostream>
using namespace std;

int main(){

int i = 0;
int x;

while(1){ cin >> x; if (x==0){ break; } } cout << "Case "<<i+1<<": "<<x<<endl; i++; return 0;

}

######回答していただけたら幸いです。

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

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

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

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

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

y_waiwai

2020/04/17 07:46

このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
guest

回答4

0

ベストアンサー

変数は配列を使うのが良さそうです。0が来るまでその配列に入力を追加して、0が入力されたらその配列を戦闘から順に出力していく感じです。

C++

1#include<iostream> 2#include<vector> 3using namespace std; 4 5int main(void){ 6 vector<int>x;//int型の配列x 7 int a;//仮の保存用 8 while(true){ 9 cin>>a; 10 if(a!=0){//もし入力が0でないのなら 11 x.push_back(a);//aを配列xの後ろに追加 12 } 13 else{//入力が0 14 break;//ループを抜け出す 15 } 16 } 17 for(int i=0;i<x.size()/*xに格納されている要素の数*/;++i){ 18 cout<<"Case "<<i+1<<x[i]<<endl; 19 } 20 return 0; 21}

投稿2020/04/17 08:52

Luke02561

総合スコア404

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

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

0

とりあえずstringstreamに突っ込んでおいて,最後に表示.

C++

1#include <iostream> 2#include <sstream> 3 4int main() 5{ 6 int i = 1; 7 int x; 8 std::stringstream SS; 9 while(1) 10 { 11 std::cin >> x; 12 if (x==0)break; 13 14 SS << "Case " << i << ": " << x << std::endl; 15 i++; 16 } 17 18 std::cout << SS.str(); 19 return 0; 20}

投稿2020/04/17 08:44

fana

総合スコア11658

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

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

0

coutとi++の行がループの外にあるからですね。

cpp

1#include <iostream> 2using namespace std; 3 4int main(){ 5 6 int i = 0; 7 int x; 8 9 while(1){ 10 cin >> x; 11 if (x==0){ 12 break; 13 } 14 cout << "Case "<<i+1<<": "<<x<<endl; 15 i++; 16 } 17 18 return 0; 19} 20

投稿2020/04/17 08:01

ttyp03

総合スコア16998

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

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

46hm

2020/04/17 08:34

ループの中に入れると、入力をするたびにcase 1: 2などと出てしまいます。そうでなくて、入力を全て終えたら、それに対する全ての出力を出したいです。
ttyp03

2020/04/17 08:40

そんな仕様どこにも書いてありませんが。。。 実現したいなら配列を作ってそこに溜め込んで行くしかないでしょうね。
guest

0

xが0以外のとき、何も実行しなくてループが回り、入力待ちになってしまいます。
そこらへん修正しよう

投稿2020/04/17 07:45

y_waiwai

総合スコア87774

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問