ループを抜けません – プログラミング – Home

通知
すべてクリア

[解決済] ループを抜けません


Baby Chicken
 Baby Chicken
(@Baby Chicken)
ゲスト
結合: 16年前
投稿: 45
Topic starter  

相変わらず初歩的質問で申し訳ありません。
Visual Studio 2008 Standard on Vista BusinessでConsole Applicationで以下のテスト
をしました。
#include <iostream>
#include <string>
int main(void) {
string str = ";
bool flag = true;
while (flag) {
if (str == exit) {
flag = false; //これでwhileから抜けるだろう
}
std::cin >> str;
}
char ch = 'a';
while (ch != 'e') {
std::cin >> ch;
}
return 0;
}
でも、実際にはexitと打ってもwhile loopから抜けません
そこで、
while (flag) {
if (str == exit) {
flag = false;
            break; //これだったらwhileから抜けるかな?
}
std::cin >> str;
}
としても、二回exitを打たねば終了しません。何か根本的間違いをしていて、それに気
付かない自分が怖いので、恥ずかしいですがご教授お願いします。


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

デバッグモードで追ってみれば一発なんですが。。。

>std::cin >> str;
をif文の前に持っていくだけでは?

ループ条件真、継続

if文偽、flag = true

std::cin、exit入力

ループ条件真、継続

if文真、flag = false

std::cin、何か入力

ループ条件偽、終了


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

せっかくソースを見ながら結果を確かめる事が出来る
デバッガーが付いた開発環境を使っているのですから
デバッガーをどんどん活用しましょう。
これが無い環境ではひたすら画面に途中経過を表示して
状況確認するしかないわけですから。

デバッガーを使えば、動かしながら変数の値を確認するという事も
簡単に出来ます。デバッガーの使い方を勉強される事をお勧めします。


返信引用
rin
 rin
(@rin)
ゲスト
結合: 18年前
投稿: 112
 

質問確認

breakの追加前と、追加後の2段階がありますが

●追加前
>でも、実際にはexitと打ってもwhile loopから抜けません
こっちには回数が書かれていませんが、回数に関係なく抜けないのですか?
それとも追加後と同じで2回打てばぬけますか?

●追加後
>としても、二回exitを打たねば終了しません。
追加前は「抜けない」とあり、こっちの追加後は「終了」になっていますが
この終了は、追加前と並列に考えて、「抜けない」の言い換えでしょうか?
それとも、こっちの場合はアプリケーションの終了のことでしょうか?

また、追加後についてですが
std::cin >> str;
 std::cin >> ch;
strとchの2回ありますが、二回打たないといけないのはこのことではありませんか?


返信引用
Baby Chicken
 Baby Chicken
(@Baby Chicken)
ゲスト
結合: 16年前
投稿: 45
Topic starter  

皆様方ありがとうございます。
Blue様
全くご指摘の通りです。どうかしていました。

PATIO様
debuggerでbreak pointを設けても分かりませんでした、本当に馬鹿な自分です。

rin様
全くご指摘の通りで。最後のcin >> chでアプリケーション終了をカウントしていまし
た。すみませんでした。

皆様方、これに懲りず今後ともご指導宜しくお願いします


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました