2013-06-01 2 views
1

Теперь, что происходит (после редактирования кода), когда я ввожу более одного слова, у него есть спазмы. Какие-нибудь исправления? Благодарю. Извините, если мне кажется, что я ничего не знаю. Дорогие книги и никто, чтобы научить меня, есть у меня чтение учебников онлайн. (Отредактированный код ниже.)Я получаю пустой экран при отладке программы в C++

#include <iostream> 
#include <string> 
using namespace std; 

string qu; 

int y; 

int main() 
{ 
y = 1; 
while (y == 1) 
{ 
    cout << "Welcome to the magic 8-ball application." <<"\nAsk a yes or no question, and the 8-ball will answer." << "\n"; 
    cin >> qu; 
    cout << "\nProccessing...\nProccessing...\nProccessing..."; 
    cout << "The answer is...: "; 
    int ans = (int)(rand() % 6) + 1; 
    if (ans == 1) 
     cout << "Probably not."; 
    if (ans == 2) 
     cout << "There's a chance."; 
    if (ans == 3) 
     cout << "I don't think so."; 
    if (ans == 4) 
     cout << "Totally!"; 
    if (ans == 5) 
     cout << "Not a chance!"; 
    if (ans == 6) 
     cout << "75% chance."; 
    system("CLS"); 
    cout << "\nWant me to answer another question?" << "(1 = yes, 2 = no.)"; 
    cin >> y; 
    } 

return 0; 

} 
+0

Что сделали код сделать раньше? Что вы ожидаете от этого? – iblamefish

ответ

5
while (y = 1); 

должен быть

while (y == 1) 

У вас есть дополнительные ; и должны использовать ==.

+0

Спасибо, taocp, теперь у меня другая проблема. –

+0

@ Rand0mCoder Добро пожаловать. Что это? – taocp

+0

Я отредактировал сообщение, прочитал его, пожалуйста. –

0

Там бесконечный цикл здесь:

while (y = 1); 

Удалить ;. Также y == 1, а не y = 1.


Чтобы избежать этих ошибок в будущем:

1) Inverse сравнение таким образом:

while (1 == y) 

Теперь, если вы наберете = вместо ==, то ваш код не компилируется, потому что 1 = y является инвалид.

Хотя большинство компиляторов предупреждают вас, если вы выполняете присвоение в состоянии. Вы не должны игнорировать предупреждения компилятора.

2) Поместите открывающий фигурную скобку на ту же строку:

while (1 == y) { 
// ...... some code 
} 

Теперь, если вы наберете ; в конце строки, то ваш код остается правильным:

while (1 == y) {; 
// ...... some code 
} 
+0

Перевернутые сравнения. Тьфу! –

+0

@ArmenTsirunyan Что случилось с перевернутыми сравнениями? – kotlomoy

+0

@ArmenTsirunyan Добавлена ​​заметка о предупреждении компилятора – kotlomoy

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