2016-07-13 3 views
2

У меня есть программа, которая запускает сложение или вычитание случайным образом с использованием двух случайно сгенерированных чисел. Затем пользователь должен ввести ответ, и если он правильно говорит «Правильно», и если он ошибочен, он говорит «Неправильно» и отображает правильный ответ. Кажется, когда я запускаю свой код, чтобы он не отображал правильный ответ, скорее неправильный ответ, который, по его мнению, правильный. Например, я запустил код, и проблема у меня была 950 + 921. Ответ должен быть 1871, но он сказал мне, что я ошибался, и правильный ответ на программу был 1042. Я не уверен, где ошибка мой код, но здесь, если вы хотите взглянуть:Xcode C++ Результат программы не отображает правильный ответ

#include <cstdlib> 
#include <iostream> 
#include <iomanip> 
#include <ctime> 
using namespace std; 

int main() 

{ 
    srand(static_cast<unsigned int>(time(NULL))); 

    cout << "Welcome to the Math Tutor!" << endl; 

    int N1 = rand() % 999; 
    int N2 = rand() % 100; 
    int symbol = rand() % 2; 
    int Result; 
    int Answer; 

    cout << setw(5) << N1 << endl; 

    if(symbol == 1) 
    { 
     cout << "+"; 
     Result = N1 + N2; 
    } 

    else 
    { 
     cout << "-"; 
     Result = N1 - N2; 
    } 


    cout << setw(3) << N2 << symbol << "\n"; 
    cout << setw(5) << "------\n\n"; 

    cout << "Enter your answer: "; 
    cin >> Answer; 

    if(Answer == Result) 
    { 
     cout << "You are correct!\n\n"; 
    } 

    else 
    { 
     cout << "You are incorrect, the correct answer is: " << Result << "\n\n"; 
    } 

    cin.ignore(1); 
    return 0; 

} 

ответ

1

вы выводящий symbol после N2, от этой линии:

cout << setw(3) << N2 << symbol << "\n"; 

Поэтому фактический расчет не 950 + 921 это 950 + 92 которое является1042.

Чтобы это исправить, не выводить symbol, например, так:

cout << setw(3) << N2 << "\n"; 
+0

имеет смысл, когда вы нарушите его вниз, как это! Спасибо огромное! – Zjm4192