2015-06-30 3 views
1

Я сделал программу-калькулятор в C++ (после просмотра модели в learncpp.com {раздел 1.10а})Калькулятор, который я только что создал в C++, делает только дополнение! Что не так с моим кодом?

Он был создан, чтобы добавить, к югу, умножение, деление ...

Но это всегда добавляет данные два числа.

Он компилируется отлично, но только добавляет! Даже если я выбрал любое число во время выбора оператора (например, 1 для add, 2 для sub и т. Д.), Например 2,3 или даже 25 или 2678, он просто добавляет два заданных числа ... (Он может добавляться только в том случае, если я выбрал 1 правильно?)

Я потратил часы, пытаясь решить, но я просто слишком новичок в C++. Я не знаю, как это сделать!

Пожалуйста, помогите ребята ...

Heres моя программа

#include "stdafx.h" 
#include <iostream> 

int GetNo() 
{ 
    std::cout << "Enter your Number: "; 
    int a; 
    std::cin >> a; 
    return a; 
} 

int GetOp() 
{ 
    std::cout << "Your Operator?" << std::endl; 
    std::cout << " (1 = +)" << std::endl; 
    std::cout << " (2 = -)" << std::endl; 
    std::cout << " (3 = *)" << std::endl; 
    std::cout << " (4 = /)" << std::endl; 
    int o; 
    std::cin >> o; 
    return o; 
} 

int Calc(int x, int op, int y) 
{ 
    if (op == 1); 
     return x + y; 
    if (op == 2); 
     return x-y; 
    if (op == 3); 
     return x*y; 
    if (op == 4); 
     return x/y; 

     return -1; 

} 

void PRINT(int q) 
{ 
    std::cout << "Therefore, Your Result is, " << q << std::endl; 
} 

int main() 
{ 
    int x = GetNo(); 
    int opr = GetOp(); 
    int y = GetNo(); 
    int q = Calc(x,opr,y); 
    PRINT(q); 
} 

TQ ребята! Я жду полезных ответов ... И если это возможно, быть более продуманным ... (Потому что им новыми для CPP)

+0

Почему вы Использование чисел вместо символов сами? –

+6

'if (op == 1);' => 'if (op == 1)' without ';'. Везде. – deviantfan

+0

Каковы были результаты, когда вы использовали отладчик для одного шага через код? –

ответ

3

Когда вы ставите a; после того, как если п это означает, что если это пустой block.Therefore утверждение является ли истинным или ложным утверждение, если рядом всегда excecuted.So код

if (op == 1); 
    return x + y; 

имеет значение:

if (op == 1) 
     {   //empty block 
     } 
    return x + y; // Outside if statement 

Поэтому всегда добавляется возврат.

3
if (op == 1);//this semicolon makes the statement end here so it tests the condition and ends the statement 
    return x + y;//so this is an independent statement and will always be executed 

Так удалите точку с запятой в конце всех if(condition) заявлений

0

Ваш код имеет следующий:

INT Calc (INT х, внутр оп, Int у) { если (цит == 1); return x + y; if (op == 2); return x-y; if (op == 3);

проблема есть; после if (op == 1);. Это оценивается, и ничего не происходит, тогда вы всегда выполняете return x + y;.

Лучший способ сделать петлю, чтобы всегда включать скобки так, что эти простые ошибки менее распространены, такие как:

если (цит == 1) { возвращения х + у; }

0

ваша ошибка в The calc() Function.Take Посмотрите:

int Calc(int x, int op, int y) 
{ 
if (op == 1); //the ; is not needed, remove it! 
    return x + y; 
//same happens with the rest of the conditions, remove all semicolons after the if conditions 
//... 
}