2 / 2 / 0
Регистрация: 17.09.2012
Сообщений: 34
1

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

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

Author24 — интернет-сервис помощи студентам
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'!

Подскажите пожалуйста, в чём засада.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.09.2012, 15:16
Ответы с готовыми решениями:

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

Консольный калькулятор, где ошибка в условии
здравствуйте. сейчас делаю консольный калькулятор и что бы правильно все работало нужно хранить...

Простой консольный калькулятор
Задание такое: Реализовать усовершенствованный консольный арифметический калькулятор. С консоля...

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

6
Кошковед
521 / 509 / 63
Регистрация: 12.04.2010
Сообщений: 1,390
17.09.2012, 15:18 2
дык да )) поменяй || на &&
у тебя всегда символ "не у" ИЛИ "не н"
1
2 / 2 / 0
Регистрация: 17.09.2012
Сообщений: 34
17.09.2012, 15:25  [ТС] 3
Цитата Сообщение от co6ak Посмотреть сообщение
дык да )) поменяй || на &&
у тебя всегда символ "не у" ИЛИ "не н"
Немного не понял, но на всякий случай поменял - всё равно не работает.

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

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

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

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

Спасибо, буду внимательнее!
0
Кошковед
521 / 509 / 63
Регистрация: 12.04.2010
Сообщений: 1,390
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;
}
теоретически, должно работать
0
2 / 2 / 0
Регистрация: 17.09.2012
Сообщений: 34
17.09.2012, 15:53  [ТС] 7
Приму на заметку.
0
17.09.2012, 15:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.09.2012, 15:53
Помогаю со студенческими работами здесь

Не пойму где ошибка
string arr = new string; comboBox1.Items.CopyTo(arr, 0); ...

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

Не пойму, где ошибка
Есть проект. При окончании работы программы(запуск из среды VS Express 2008), отладчик выводит...

не пойму где ошибка
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

не пойму где ошибка
У меня в архиве программа. Я не пойму почему маткад жалуется на переменную омега. Помогите плиз

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru