Форум программистов, компьютерный форум CyberForum.ru

Программа игнорирует условия - C++

Восстановить пароль Регистрация
 
gnuvse
6 / 6 / 1
Регистрация: 09.11.2011
Сообщений: 101
24.03.2012, 15:18     Программа игнорирует условия #1
Всем привет.
Проблема. При выполнение данной программы выводит результат 4-х операций. Почему if не работает? Я имею ввиду, если operation == "+", то должно выполнятся тело if и всё, а он всё считает.

Пример: + 2 1

= 3
= 1
= 2
= 2


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
 
//Простой калькулятор. Синтаксис Лисп
 
int main()
{
    double val1, val2;
    string operation;
 
    cout << "Enter symbol ('+', '-', '*', '/', plus, minus, mul, div) and value1, value2.\n";
    cout << "Example: + 100 20; plus 100 20\n";
    cin >> operation >> val1 >> val2;
 
    if (operation == "+" || operation == "plus");
        cout << "\n= " << val1 + val2;
    if (operation == "-" || operation == "minus");
        cout << "\n= " << val1 - val2;
    if (operation == "*" || operation == "mul");
        cout << "\n= " << val1 * val2;
    if (operation == "/" || operation == "div");
        cout << "\n= " << val1 / val2;
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
24.03.2012, 15:21     Программа игнорирует условия #2
Найдите 10 отличий
C++
1
2
if (operation == "+" || operation == "plus")
if (operation == "+" || operation == "plus");
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.03.2012, 15:23     Программа игнорирует условия #3
gnuvse, точки с запятой уберите(т.е. пустые операторы).
gnuvse
6 / 6 / 1
Регистрация: 09.11.2011
Сообщений: 101
24.03.2012, 15:28  [ТС]     Программа игнорирует условия #4
Цитата Сообщение от Duha666 Посмотреть сообщение
Найдите 10 отличий
C++
1
2
if (operation == "+" || operation == "plus")
if (operation == "+" || operation == "plus");
Оператора ; нету, но я не понимаю к чему это?

Добавлено через 1 минуту
Цитата Сообщение от go Посмотреть сообщение
gnuvse, точки с запятой уберите(т.е. пустые операторы).
Хаха, я даже не заметил, во ошибка ламерская.

Спасибо
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
24.03.2012, 15:29     Программа игнорирует условия #5
К тому, что вы точкой с запятой закрываете if. То есть получается что-то такое:
C++
1
2
3
4
5
6
7
8
if (operation == "+" || operation == "plus");
cout << "\n= " << val1 + val2; // выполнится независимо от результата if-а. Так как не входит в него
if (operation == "-" || operation == "minus");
cout << "\n= " << val1 - val2;
if (operation == "*" || operation == "mul");
cout << "\n= " << val1 * val2;
if (operation == "/" || operation == "div");
cout << "\n= " << val1 / val2;
gnuvse
6 / 6 / 1
Регистрация: 09.11.2011
Сообщений: 101
24.03.2012, 15:31  [ТС]     Программа игнорирует условия #6
Цитата Сообщение от Duha666 Посмотреть сообщение
К тому, что вы точкой с запятой закрываете if. То есть получается что-то такое:
C++
1
2
3
4
5
6
7
8
if (operation == "+" || operation == "plus");
cout << "\n= " << val1 + val2; // выполнится независимо от результата if-а. Так как не входит в него
if (operation == "-" || operation == "minus");
cout << "\n= " << val1 - val2;
if (operation == "*" || operation == "mul");
cout << "\n= " << val1 * val2;
if (operation == "/" || operation == "div");
cout << "\n= " << val1 / val2;
Я уже понял. Спасибо всем (репу поднял)
Yandex
Объявления
24.03.2012, 15:31     Программа игнорирует условия
Ответ Создать тему
Опции темы

Текущее время: 15:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru