2016-08-27 2 views
0

Эта программа, которую я сделал для запроса моего gf с обрывами, которые я нашел в Интернете. Предположим, что задаем вопросы (да, я знаю, что они на польском языке, но не имеет значения, что они говорят) в порядке, указанном в программе (его важно), и он отлично работает, но только если вы ответите одним словом или буквой ... например, «Да» или «Y» - если вы отвечаете так: «Да, да», он пропустит второй вопрос и перейдет к третьему. В основном, чем больше слов вы используете для ответа на один вопрос, тем больше вопросов просканирует программа (например, вы ответили «да да да» в первом вопросе, вы увидите, что он пропустит 3 вопроса и перейдет к вопросу номер четыре, а затем, если вы ответите «да», он будет работать правильно и перейдет к следующему (пятому) вопросу).Простая консольная консоль ввода/вывода, не печатает вопросы в данном порядке (структурные)

Надеюсь, что это ясно, что я написал, я не знаком с C++, так как мне не нравится этот язык, сделайте так, чтобы я был заложен так, HELP GUYS.

Пс. std :: string PL (const char * text) модуль - это просто получить латинские буквы, если кто-то задается вопросом.

#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

Согласно документации оператора экстракции (<<) из cin,

[...] он всегда учитывает пробелы (пробельные, вкладки, новую строку ...) как завершение извлечение значения и, таким образом, извлечение строки означает всегда извлекать одно слово, а не фразу или целое предложение.

(см http://www.cplusplus.com/doc/tutorial/basic_io/ раздел «CIN и строки»)

Итак, что вы наблюдаете именно в соответствии с документированным поведением: если вы наберете «Да1 YES2» и нажать кнопку ввода, то cin << my_string_variable инструкции магазин «yes1» в my_string_variable, и он сохранит «yes2» для следующего cin.

Чтобы преодолеть эту проблему, используйте следующее:

getline (cin, my_string_variable); 
+1

ЭТО РАБОТАЕТ! Большое спасибо Майку! Хороший день :) Редактирование: oh вы из Греции, тогда спать плотно;)) – 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.

Смежные вопросы