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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Manco
2 / 2 / 0
Регистрация: 17.09.2012
Сообщений: 34
#1

Простой консольный калькулятор - не пойму, где ошибка - C++

17.09.2012, 15:16. Просмотров 1000. Ответов 6
Метки нет (Все метки)

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
26
27
28
29
30
31
#include <stdio.h>
 
int main()
{
    float num1,num2,res,moreCalc;
    char operation;
    printf("============Calculator============\n");
    while(1){
    printf("Please, enter first number: ");
    scanf("%f",&num1);
    printf("Please, enter second number: ");
    scanf("%f",&num2);
    printf("Please, enter operation (+,-,*,/,^): ");
    scanf("%s",&operation);
    switch(operation){
        case '+': res=num1+num2;break;
        case '-': res=num1-num2;break;
        case '*': res=num1*num2;break;
        case '/': res=num1/num2;break;
        default: printf("Wrong move!\n");
    }
    printf("The resault is %.3f\n",res);
    printf("Do you want more calculating? (y/n)\n");
    while(1){
    scanf("%s",&moreCalc);
    if ((moreCalc!='y') || (moreCalc!='n')) {printf("WRONG! You should enter 'y' or 'n'!\n");continue;}
    else break;}
    if (moreCalc=='y') continue;
    else break;}
    return 0;
}
Общий бесконечный цикл while - чтобы запрашивать вычисления, пока пользователь вводит "y" и не вводит "n".
Бесконечный цикл while внизу - проверка, чтобы пользователь вводил только "y" или "n", а не например числа или другие буквы.
Проблема в том, что когда ввожу "y" или "n", программа всё равно как будто считает, что введено что-то другое и выдаёт WRONG! You should enter 'y' or 'n'!

Подскажите пожалуйста, в чём засада.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2012, 15:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Простой консольный калькулятор - не пойму, где ошибка (C++):

Простой консольный калькулятор - C++
Я новичок, изучаю C++ всего первый день, начал изучение по книге Либерти &quot;C++ за 21 день&quot;. Пока что из всех полученных мною знаний я...

Консольный калькулятор, в чем ошибка? - C++
int main() { setlocale(0, &quot;&quot;); char input ; int value; cout &lt;&lt; &quot;Введите число: &quot;; for(int i=0;i&lt;256;i++) { int...

Не пойму где ошибка - C++
Помогите исправить код, ошибок он не выдает, но программа почему то не работает, после вводы данных ничего не происходит, ниже условие и...

Не пойму, где ошибка - C++
Всем добрый день. Недавно начал изучать С++ вот столкнулся с проблемой в одной из задач: Из матрицы размером NxM получить вектор B,...

Не пойму, где ошибка - C++
Здравствуйте, что-то никак не разберусь в этом куске кода, и почему компилятор нашел там narrowing conversion во второй фигурной скобке...

Не пойму где ошибка - C++
#include &lt;iostream&gt; using namespace std; int main() { setlocale(0, &quot;&quot;); double a, b; char f; a = 0; f = &quot;+&quot;; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
17.09.2012, 15:18 #2
дык да )) поменяй || на &&
у тебя всегда символ "не у" ИЛИ "не н"
Manco
2 / 2 / 0
Регистрация: 17.09.2012
Сообщений: 34
17.09.2012, 15:25  [ТС] #3
Цитата Сообщение от co6ak Посмотреть сообщение
дык да )) поменяй || на &&
у тебя всегда символ "не у" ИЛИ "не н"
Немного не понял, но на всякий случай поменял - всё равно не работает.

По идее ведь у меня правильно написано - если введённый символ не "у" и не "n", то выдать сообщение об ошибке и начать цикл, в котором вводится символ заново. Иначе - завершить цикл.
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
17.09.2012, 15:37 #4
у тебя ИЛИ, а не И.
условие верно, если хотя бы один операнд true. в твоем if-е всегда один будет true;
|| - логическое ИЛИ
&& - логическое И
и поменяй в двух местах и будет работать. и замени scanf(0 на getch().

и ты дятел )) ты считываешь в переменную float
Manco
2 / 2 / 0
Регистрация: 17.09.2012
Сообщений: 34
17.09.2012, 15:44  [ТС] #5
Цитата Сообщение от co6ak Посмотреть сообщение
у тебя ИЛИ, а не И.
условие верно, если хотя бы один операнд true. в твоем if-е всегда один будет true;
|| - логическое ИЛИ
&& - логическое И
Ахх, понял, всё заработало)

Цитата Сообщение от co6ak Посмотреть сообщение
у тебя ИЛИ, а не И.
и замени scanf(0 на getch().
Мне нужно юзать определённые функции, гетчар не входит в их число.

Цитата Сообщение от co6ak Посмотреть сообщение
и ты дятел )) ты считываешь в переменную float
Опростоволосился

Спасибо, буду внимательнее!
co6ak
Кошковед
407 / 500 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
17.09.2012, 15:47 #6
и, кстати, не правильно, малясь, написано.

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
26
27
28
29
30
31
32
33
#include <stdio.h>
 
int main()
{
    float num1,num2,res;
    char operation, moreCalc='y';
    printf("============Calculator============\n");
    while(moreCalc!='n'){
        printf("Please, enter first number: ");
        scanf("%f",&num1);
        printf("Please, enter second number: ");
        scanf("%f",&num2);
        printf("Please, enter operation (+,-,*,/,^): ");
        scanf("%s",&operation);
        switch(operation){
            case '+': res=num1+num2;break;
            case '-': res=num1-num2;break;
            case '*': res=num1*num2;break;
            case '/': res=num1/num2;break;
            default: printf("Wrong move!\n");
        }
        printf("The resault is %.3f\n",res);
        printf("Do you want more calculating? (y/n)\n");
        moreCalc='';
        while(moreCalc != 'y' && moreCalc != 'n'){
            scanf("%s",&moreCalc);
            if ((moreCalc!='y') && (moreCalc!='n')) {
                printf("WRONG! You should enter 'y' or 'n'!\n");
                }
        }
    }
    return 0;
}
теоретически, должно работать
Manco
2 / 2 / 0
Регистрация: 17.09.2012
Сообщений: 34
17.09.2012, 15:53  [ТС] #7
Приму на заметку.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2012, 15:53
Привет! Вот еще темы с ответами:

Не пойму где ошибка - C++
Всем привет, вот решил написать простенький класс для работы с интернетом и выскакивают какие-то ошибки, не пойму в чем дело, вот эти...

Не пойму где ошибка в коде - C++
Задача: (В задаче можно использовать только такие библиотеки и решить надо только через условные операторы.) Все проходит и решение...

STL stack, не пойму где ошибка - C++
#include &lt;iostream&gt; #include &lt;stack&gt; #include &lt;string&gt; #include &lt;sstream&gt; using namespace std; bool isOperator(const string&amp;...

Своя реализация strcpy - не пойму где ошибка! - C++
void copy(char *p, char *q) throw (char*) { int l2 = strlen(q); //cout&lt;&lt;&quot;strlen(q)=&quot;&lt;&lt;strlen(q)&lt;&lt;&quot; strlen(p)=&quot;&lt;&lt;strlen(p)&lt;&lt;endl; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.09.2012, 15:53
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru