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

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

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

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

17.09.2012, 15:16. Просмотров 985. Ответов 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++ Не пойму, где ошибка
Не пойму где ошибка C++
C++ Не пойму, где ошибка
C++ Не пойму где ошибка
Не пойму где ошибка C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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;
}
теоретически, должно работать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2012, 15:53     Простой консольный калькулятор - не пойму, где ошибка
Еще ссылки по теме:
C++ Не пойму где ошибка в коде
C++ STL stack, не пойму где ошибка
C++ Своя реализация strcpy - не пойму где ошибка!
C++ Операции с массивами (есть логическая ошибка, не пойму где)
C++ Конечные суммы и произведение (не пойму где ошибка в программе)

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

Или воспользуйтесь поиском по форуму:
Manco
2 / 2 / 0
Регистрация: 17.09.2012
Сообщений: 34
17.09.2012, 15:53  [ТС]     Простой консольный калькулятор - не пойму, где ошибка #7
Приму на заметку.
Yandex
Объявления
17.09.2012, 15:53     Простой консольный калькулятор - не пойму, где ошибка
Ответ Создать тему
Опции темы

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