2016-08-27 7 views
0

このプログラムは、私がインターネット上で見つけたスクラップで私のgfをリクエストしました。 それはプログラム(重要な)で与えられた順序で質問をすると思いますが(それは彼らが何を言っても問題ありません)、それはうまくいきます。 ...たとえば「はい」または「Y」 - 「はい」のように答えると、2番目の質問をスキップして3番目の質問にまっすぐ進みます。基本的には、1つの質問に答えるために使用する単語が多いほど、プログラムがスキップする質問が多くなります(最初の質問で「はいはいはい」と答えた場合、3つの質問をスキップして4番に移動することがわかります)あなたが「はい」と答えると正しく動作し、次の(5番目の)質問に行く)シンプルな入出力コンソールアプリケーションで、指定された順序で質問を印刷しません(構造)

私はその文章を書いていることを願っています。私はそうされているので、助けてくれます。

ps。 std :: string PL(const char * text)モジュールは、誰かが不思議に思っていれば、簡単に手紙を得ることができます。 cinの抽出演算子(<<)のマニュアルによれば

#include <iostream> 

#include <windows.h> 

#include <conio.h> 

#include <stdlib.h> 


using namespace std; 

std::string PL(const char * text) 
{ 
    std::string result; 
    for(; * text; text++) 
    switch(* text) 
    { 
    case 'ą': result += static_cast <char>(0xa5); break; 
    case 'ć': result += static_cast <char>(0x86); break; 
    case 'ę': result += static_cast <char>(0xa9); break; 
    case 'ł': result += static_cast <char>(0x88); break; 
    case 'ń': result += static_cast <char>(0xe4); break; 
    case 'ó': result += static_cast <char>(0xa2); break; 
    case 'ś': result += static_cast <char>(0x98); break; 
    case 'ż': result += static_cast <char>(0xbe); break; 
    case 'ź': result += static_cast <char>(0xab); break; 
    case 'Ą': result += static_cast <char>(0xa4); break; 
    case 'Ć': result += static_cast <char>(0x8f); break; 
    case 'Ę': result += static_cast <char>(0xa8); break; 
    case 'Ł': result += static_cast <char>(0x9d); break; 
    case 'Ń': result += static_cast <char>(0xe3); break; 
    case 'Ó': result += static_cast <char>(0xe0); break; 
    case 'Ś': result += static_cast <char>(0x97); break; 
    case 'Ż': result += static_cast <char>(0xbd); break; 
    case 'Ź': result += static_cast <char>(0x8d); break; 
     default: result += * text; break; 
    } 
    return result; 
} 


int main() 
{ 
    SetConsoleTitle ("martwy zajac"); 


HWND hwnd = GetConsoleWindow(); 
if(hwnd != NULL){ MoveWindow(hwnd ,340,100 ,800,300 ,TRUE); } 


    string odpowiedz1,odpowiedz2,odpowiedz3,odpowiedz4,odpowiedz5,odpowiedz6,odpowiedz7,odpowiedz8,odpowiedz9,odpowiedz10,odpowiedz11,odpowiedz12,odpowiedz13,odpowiedz14,odpowiedz15,odpowiedz16,odpowiedz17,odpowiedz18,odpowiedz19,odpowiedz20,odpowiedz21; 



    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Witaj, chciałbym żebyś wytłumaczył mi dzieło sztuki.\n\n"); 
    Sleep(3000); 
    cout <<PL("Wciśnij ENTER jeśli jesteś gotowy."); 
    _getch(); 

    system("cls"); 
    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Do czego sluży żaba, a do czego szutka?\n\n"); 
    cin >>odpowiedz1; 
    system("cls"); 


    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Która łapa tego kota jest ładniejsza?\n\n"); 
    cin >>odpowiedz2; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Czy ta łapa, która bardziej się Tobie podoba jest ładniejsza gdy kot miauczy\nprosząc o jedzenie, czy jak miauczy prosząc o pieszczotę?\n\n"); 
    cin >>odpowiedz3; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Czy wolisz dzwięk tramwaju dobiegający zza okna w mroźny poranek, czy w jesiennywieczór?\n\n"); 
    cin >> odpowiedz4; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Czy możesz opisać smak ciastka które jadłeś ostatnio?\n\n"); 
    cin >> odpowiedz5; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Namalujesz mi ten smak, jaki ma kolor?\n\n"); 
    cin >> odpowiedz6; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Na kafelki w łazience upadła mi gąbka - jakiego koloru jest dzwięk który wydała?\n\n"); 
    cin >> odpowiedz7; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Na kafelki w łazience upadła mi szklanka, nie rozbiła się - jakiego koloru dzwięk wydała?\n\n"); 
    cin >> odpowiedz8; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Cyfra 4 jest niebieska czy szara?\n\n"); 
    cin >> odpowiedz9; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Wchodzę. Czy widzę światło?\n\n"); 
    cin >> odpowiedz10; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Wchodzę. Czy słyszę światło?\n\n"); 
    cin >> odpowiedz11; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Wchodzę. Czy czuję smak światła?\n\n"); 
    cin >> odpowiedz12; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Cyfra 4 czy zmienia kolor, gdy staje się liczbą?\n\n"); 
    cin >> odpowiedz13; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Biegnę. Co się zmieniło gdy biegnę a nie wchodzę? Widok światła? Dzwięk światła?Smak światła?\n\n"); 
    cin >> odpowiedz14; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Gdy pytałam o kolor smaku ciastka, jakie pytanie usłyszałeś/aś?\n\n"); 
    cin >> odpowiedz15; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Jaki kolor ma słowo \"sztuka?\"\n\n"); 
    cin >> odpowiedz16; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Jaki kolor ma słowo \"religia?\"\n\n"); 
    cin >> odpowiedz17; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Jaki kolor ma słowo \"jestem?\"\n\n"); 
    cin >> odpowiedz18; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Godzina 16:30 jest sześcianem, kulą, czy inną bryłą?\n\n"); 
    cin >> odpowiedz19; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Godzina 4:30 (po południu) jest sześcianem, kulą, czy inną bryłą?\n\n"); 
    cin >> odpowiedz20; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Jak przekroczyć zmysłowy pozór sztuki?\n\n"); 
    cin >> odpowiedz21; 
    system("cls"); 

    cout <<PL("martwy zając:\n\n"); 
    cout <<PL("Dziękuję\n\n\n"); 
    Sleep(3000); 
    cout <<PL("Żegnaj."); 
    Sleep(2000); 


} 
+0

必要なものは 'std :: ignore'です。 – DimChtz

答えて

1

[...]は常に終端としてスペース(空白、タブ、改行...)を考慮抽出された値を抽出して文字列を抽出することは、フレーズまたは文全体ではなく、常に単一の単語を抽出することを意味する。

http://www.cplusplus.com/doc/tutorial/basic_io/節「CINと文字列」を参照してください)

だから、何を観察していることを正確に文書化行動に沿ったものである:あなたは「はい1はい2」と入力し、Enterキーを押した場合、cin << my_string_variable指示しますmy_string_variableに "yes1"を格納し、次にcinに "yes2"を保存します。

、この問題を克服するため、以下を使用するには:

getline (cin, my_string_variable); 
+1

IT制作!マイクありがとう!良い一日を過ごしてください:) 編集:ああ、あなたはギリシャから、その後寝て;)) – Wojciech

0

あなたはcinからの入力の行全体を取得し、最初のcharを処理して必要なもの。次のコードを試してください:

#include <iostream> 
    using namespace std; 
    int main(){ 
    char a[1000],c; 
    cin.getline(a,1000); 
    cout<<"\nThe string received:"<<endl<<a<<endl; 
    cout<<"\nThe answer to process:"<<endl<<a[0]<<endl; 
    return 0; 
    } 

キーコマンドはgetlineです。最初の空白以外の文字を検索し、大文字を小文字に変換して答えを正規化するループを作成する必要があります。それが「y」または「n」でない場合は、コードは「申し訳ありませんが、あなたの答えを理解できません。はい(y)またはいいえ(n)」と答えて、whileループで再度回答してください。

関連する問題