2013-10-04 6 views
0

Я довольно новичок в C++, но я делаю простую программу, как бы вернуться к началу кода, все еще заставляя его помнить, что было введено. например, я нажал 1, а затем ввел имя, как бы я вернулся к основной части, где он спрашивает вас, что вы хотите. Спасибо за ваше время я ценю этоВозвращаясь к началу блока кода

#include <iostream> 
#include <string> 
#include <iomanip> 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
char name[25]; 
char address[25]; 
char city[25]; 
char state[25]; 
char zip[25]; 
char phone[25]; 
int reply; 

cout <<"Press 1 to enter the name"<<endl; 
cout <<"Press 2 to enter the address"<<endl; 
cout <<"Press 3 to enter the city"<<endl; 
cout <<"Press 4 to enter the state"<<endl; 
cout <<"Press 5 to enter the zip"<<endl; 
cout <<"Press 6 to enter the phone"<<endl; 
cin >>reply; 
if (reply = 'one') 
{ cout << " Enter the name" << endl; 
    cin >> name; 
    cin.ignore(80, '\n');} 
else if (reply = 'two') 
    {cout << " Enter the address" << endl; 
    cin >> address; 
    cin.ignore(80, '\n');} 
else if (reply = 'three') 
    {cout << " Enter the city" << endl; 
    cin >> city; 
    cin.ignore(80, '\n');} 
else if (reply = 'four') 
    {cout << " Enter the state" << endl; 
    cin >> state; 
    cin.ignore(80, '\n');} 
else if (reply = 'five') 
    { cout << " Enter the zip code " << endl; 
    cin >> zip; 
    cin.ignore(80, '\n');} 
else if (reply = 'six') 
    { cout << " Enter the phone number " << endl; 
    cin >> phone; 
    cin.ignore(80, '\n');} 
else 
{cout << " done";} 





system ("PAUSE"); 
return EXIT_SUCCESS; 

}

+6

Возможно, вы захотите прочитать о циклах. –

+1

= вместо == самая известная логическая ошибка за все время, сначала проверьте это :) – iyasar

+0

Я думаю, что перед добавлением цикла в ваш код (это ответ на ваш вопрос) вы должны исправить проблему, которая у вас уже есть. Нет смысла добавлять больше кода к плохому коду. Проверьте ответ LihO. – john

ответ

3

Заметим, что условие здесь:

int reply; 
cin >>reply; 
if (reply = 'one') 
    ... 

фактически означало быть:

if (reply == 1) 

литералы, помещенные между '' см. один char, для строки вы должны использовать "" и для числовых литералов, таких как int, просто используйте цифры. Вы также должны добавить опцию, которая остановит программу:

cout << "Press 1 to enter the name" << endl; 
cout << "Press 2 to enter the address" << endl; 
... 
cout << "Press 0 to stop" << endl;    // <-- something like this 

и оберните этот кусок кода петлей. Также обратите внимание, что переменные не должны быть объявлены в начале функции.


Это может выглядеть следующим образом:

// print choices (press *** to ...) 
int reply; 
while (cin >> reply) { 
    if (reply == 0) 
     break; 
    // some code... 
    // print choices 
} 
1

То, что вы хотите, это петля! НЕ ВЕРИТЕ ЛЮБОВЬ О ГОТО И ЭТИКЕТКЕ! Используя правильно структурированный код, вы всегда можете избежать использования этих кошмаров для обслуживания. Учитывайте следующее:

bool doContinue = true; 
int userNumber = 0; 

while(doContinue) 
{ 
    int temp = 0; 

    cout << "What's your next favorite number?" 
    cin >> temp; 

    userNumber += temp; 

    cout << "The sum of your favorite numbers is " << userNumber << endl; 

    cout << "Continue?" << endl; 
    cin >> temp; 

    doContinue = temp != 0; 
} 

Идея состоит в том, чтобы иметь переменные за пределами цикла, содержащие данные, собранные в цикле. Таким образом, вы можете повторять логику, не повторяя код. Этот пример просто извлекает числа из пользовательского ввода и суммирует их, но он показывает идею базового цикла. Кроме того, цикл должен иметь условие выхода (в данном случае doContinue == false).

+1

спасибо, ребята, за вашу помощь i appreci t – user2846583

+0

Кто-нибудь даже упомянул 'goto'? Я не вижу причин даже приводить его сюда ... – SirGuy

+0

Спасибо, ребята, у меня отличный день, я его ценю – user2846583

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