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

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

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

при нажатии на "=" вывести ответ.. - C++

23.11.2011, 22:47. Просмотров 548. Ответов 8
Метки нет (Все метки)

Писала простенькую прогу калькулятор, тут ответ считывает при нажатии на enter. Преподаватель попросил, чтобы ответ выводился при нажатии на "=", но как??
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
int main()
{
int ch;
do{
// основной код
ch=getch();
}while(ch!=48);
return0; ------> так? но так не получается у меня :(
 
 
 
вот код программы:
 
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
//Объявление функций
double plus(double X, double Y);
double power(double X, double Y);
double minus(double X, double Y);
double mult(double X, double Y);
double div(double X, double Y);
double root(double X, double Y);
double sinus(double X);
double cosinus(double X);
double logariphm(double X, double Y);
void main()
{
    //Выбираем русскую локаль, чтобы можно было выводить
    //русские символы
    setlocale(LC_ALL,"Russian" );
    //Получаем переменные и знак операции
    double x, y;
    char op;
    cout <<  "Введите X: ";
    cin >> x;
    cout << "Введите знак операции\n" 
         << " + - сложение;\n" 
         << " - - вычитание;\n"
         << " * - умножение;\n"
         << " / - деление;\n"
         << " r - корень степени Y из числа Х;\n"
         << " ^ - возведение X в степень Y;\n"
         << " l - логарифм X по основанию Y;\n"
         << " s - синус угла;\n"
         << " с - косинус угла;\n";
    cin >> op;
    if(op != 's' && op != 'c')
    {
        cout << "Введите Y: ";
        cin >> y;
    }
    
    //Производим вычисления и вывод результата в зависимости
    //от знака операции
    switch (op)
    {
    case '+': cout << " X + Y = "<< plus(x, y); break;
    case '-': cout << " X - Y = "<< minus(x, y); break;
    case '*': cout << " X * Y = "<< mult(x, y); break;
    case '/': cout << " X / Y = "<< div(x, y); break;
    case 'r': cout << " X root Y = "<< root(x, y); break;
    case '^': cout << " X ^ Y = "<< power(x, y); break;
    case 'l': cout << " X log Y = "<< logariphm(x, y); break;
    case 's': cout << " sin X "<< sinus(x); break;
    case 'c': cout << " cos X "<< cosinus(x); break;
    default: cout << "Введёный оператор не поддерживается.";
    }
    
    getch();
}
//Определение функции
double plus(double X, double Y)
{
    return X + Y;
}
double power(double X, double Y)
{
    return pow(X, Y);
}
double minus(double X, double Y)
{
    return X - Y;
}
double mult(double X, double Y)
{
    return X * Y;
}
double div(double X, double Y)
{
    return X / Y;
}
double root(double X, double Y)
{
    return pow(X, 1/Y);
}
double sinus(double X)
{
    return sin(X * 3.14 / 180);
}
double cosinus(double X)
{
    return cos(X * 3.14 / 180);
}
double logariphm(double X, double Y)
{
    return log(X)/log(Y);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2011, 22:47     при нажатии на "=" вывести ответ..
Посмотрите здесь:

C++ Вывести "Молодой" или "Старый" в зависимости от введенного возраста
C++ Ввести строку. Вывести её, заменив цифры на слова ( 0 - "one", 1 - "two", ...)
C++ "Змейка": при нажатии клавиши игра просто останавливается
C++ Как запретить сворачивание окна приложения при нажатии кнопки "свернуть все окна"
Если в строке есть хоть один ноль - вывести в файл output.txt "YES", иначе вывести "NO"; C++
C++ если не составит труда(при вводе "n" должно создаваться предложение "Мне n год (года)")
Имеется строка "AAABBCCAA", нужно вывести на экран "3A2B2C2A", и так же сделать обратное действие C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DenCHS200
32 / 32 / 1
Регистрация: 07.10.2011
Сообщений: 117
23.11.2011, 23:27     при нажатии на "=" вывести ответ.. #2
После того, как вводите Y этот код, он будет требовать ввод = до тех пор, пока не будет равно введено,

C++
1
2
3
4
5
cin>>y;char simvol1='0';
    while(simvol1!='=')
    { 
        simvol1=getch();
    }
Добавлено через 9 минут
Вот готовый листинг:
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
//Объявление функций
double plus(double X, double Y);
double power(double X, double Y);
double minus(double X, double Y);
double mult(double X, double Y);
double div(double X, double Y);
double root(double X, double Y);
double sinus(double X);
double cosinus(double X);
double logariphm(double X, double Y);
void main()
{
    //Выбираем русскую локаль, чтобы можно было выводить
    //русские символы
    setlocale(LC_ALL,"Russian" );
    //Получаем переменные и знак операции
    double x, y;
    char op;
    cout <<  "Введите X: ";
    cin >> x;
    cout << "Введите знак операции\n" 
         << " + - сложение;\n" 
         << " - - вычитание;\n"
         << " * - умножение;\n"
         << " / - деление;\n"
         << " r - корень степени Y из числа Х;\n"
         << " ^ - возведение X в степень Y;\n"
         << " l - логарифм X по основанию Y;\n"
         << " s - синус угла;\n"
         << " с - косинус угла;\n";
    cin >> op;
    if(op != 's' && op != 'c')
    {
        cout << "Введите Y: ";
        cin >> y;
   char simvol1='0';
   while(simvol1!='=')
       simvol1=getch();
    }
    
    //Производим вычисления и вывод результата в зависимости
    //от знака операции
    switch (op)
    {
    case '+': cout << " X + Y = "<< plus(x, y); break;
    case '-': cout << " X - Y = "<< minus(x, y); break;
    case '*': cout << " X * Y = "<< mult(x, y); break;
    case '/': cout << " X / Y = "<< div(x, y); break;
    case 'r': cout << " X root Y = "<< root(x, y); break;
    case '^': cout << " X ^ Y = "<< power(x, y); break;
    case 'l': cout << " X log Y = "<< logariphm(x, y); break;
    case 's': cout << " sin X "<< sinus(x); break;
    case 'c': cout << " cos X "<< cosinus(x); break;
    default: cout << "Введёный оператор не поддерживается.";
    }
    
    getch();
}
//Определение функции
double plus(double X, double Y)
{
    return X + Y;
}
double power(double X, double Y)
{
    return pow(X, Y);
}
double minus(double X, double Y)
{
    return X - Y;
}
double mult(double X, double Y)
{
    return X * Y;
}
double div(double X, double Y)
{
    return X / Y;
}
double root(double X, double Y)
{
    return pow(X, 1/Y);
}
double sinus(double X)
{
    return sin(X * 3.14 / 180);
}
double cosinus(double X)
{
    return cos(X * 3.14 / 180);
}
double logariphm(double X, double Y)
{
    return log(X)/log(Y);}
Kaprice_P
2 / 2 / 0
Регистрация: 23.11.2011
Сообщений: 22
24.11.2011, 09:31  [ТС]     при нажатии на "=" вывести ответ.. #3
Спасибо большое!! а можно ещё сделать так, чтобы значения вводились не через cin, а через getch.
Спасибо заранее
DenCHS200
32 / 32 / 1
Регистрация: 07.10.2011
Сообщений: 117
24.11.2011, 19:47     при нажатии на "=" вывести ответ.. #4
Сделать ввод , как при полноценном cin, или не создавать возможность стирания переменной, чтобы написать её заново?
Kaprice_P
2 / 2 / 0
Регистрация: 23.11.2011
Сообщений: 22
26.11.2011, 15:03  [ТС]     при нажатии на "=" вывести ответ.. #5
ну всё!!! замучалась я с этой прогой!!!! написала код:

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <conio.h>
#include <math.h>
#include <cstdio>
 
using namespace std;
 
//Объявление функций
double delenie(double X, double Y);
double plus(double X, double Y);
double minus(double X, double Y);
double umnozenie(double X, double Y);
 
void main()
{
setlocale(LC_ALL,"Russian" );
double x, y ;
char  rov;
char op, op1;
cout << "Введите X: ";
cin >> x;
cout << "Введите Y: ";
cin >> y;
cout << "Введите знак операции:\n"
<< " / - деление х на Y;\n"
<< " * - умножение x на Y;\n"
<< " + - сложение;\n"
<< " - - вычитание;\n";
  
op=_getch();
switch (op)
{
case '/': cout << " X / Y = "<< delenie(x, y); break;
case '+': cout << " X + Y = "<< plus(x, y); break;
case '-': cout << " X - Y = "<< minus(x, y); break;
case '*': cout << " X * Y = "<< umnozenie(x, y); break;
default: cout << "Введёный оператор не поддерживается.";
}
 
op1=_getch();
 
 
}
 
double delenie(double X, double Y)
{
    return X / Y ;
}
double plus(double X, double Y)
{
    return X + Y;
}
double umnozenie(double X, double Y)
{
return X * Y;
}
double minus(double X, double Y)
{
return X - Y;
}
 Комментарий модератора 
Используйте теги форматирования кода!


при нажатии на = прога начинает зависать полностью, поэтому отрезок этот вырезала, а так она работает. Но мне надо чтобы вводились только цифры и при нажатии на = выводился ответ, а не так, как выводится в данной программе
mc_sh
0 / 0 / 0
Регистрация: 26.11.2011
Сообщений: 8
26.11.2011, 15:20     при нажатии на "=" вывести ответ.. #6
попробуй сделать так.

создать variable под именем result.

в каждый кейс просто добавиь следуйщее:
пример с '/':

case '/':
{
result=delenie(x, y);
cout<<" X / Y = "<<reslut;

}
break;

теперь добавь кейс со знаком '=':

теперь при нажатие '=' будет выводится результат последнего действия.

но желательно по началу сделать result=NULL
case '=':
{
if(result==NULL) //это на тот случай если ты нажала = но не сделала никакю операцию(+,- и тд)
cout<<"No operation was performed yet";
else
cout<<" The result of last performed operation is "<< result;
}
DenCHS200
32 / 32 / 1
Регистрация: 07.10.2011
Сообщений: 117
26.11.2011, 19:25     при нажатии на "=" вывести ответ.. #7
У меня всё в этой проге работает!Когда 2ое число вводите, нажимайте ENTER , а потом равно, и ничего там не зависает!

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
//Объявление функций
double plus(double X, double Y);
double power(double X, double Y);
double minus(double X, double Y);
double mult(double X, double Y);
double div(double X, double Y);
double root(double X, double Y);
double sinus(double X);
double cosinus(double X);
double logariphm(double X, double Y);
void main()
{
    //Выбираем русскую локаль, чтобы можно было выводить
    //русские символы
    setlocale(LC_ALL,"Russian" );
    //Получаем переменные и знак операции
    double x, y;
    char op;
    cout <<  "Введите X: ";
    cin >> x;
    cout << "Введите знак операции\n" 
         << " + - сложение;\n" 
         << " - - вычитание;\n"
         << " * - умножение;\n"
         << " / - деление;\n"
         << " r - корень степени Y из числа Х;\n"
         << " ^ - возведение X в степень Y;\n"
         << " l - логарифм X по основанию Y;\n"
         << " s - синус угла;\n"
         << " с - косинус угла;\n";
    cin >> op;
    if(op != 's' && op != 'c')
    {
        cout << "Введите Y: ";
        cin >> y;
   char simvol1='0';
   while(simvol1!='=')
           simvol1=getch();
        }
    
    //Производим вычисления и вывод результата в зависимости
    //от знака операции
    switch (op)
    {
    case '+': cout << " X + Y = "<< plus(x, y); break;
    case '-': cout << " X - Y = "<< minus(x, y); break;
    case '*': cout << " X * Y = "<< mult(x, y); break;
    case '/': cout << " X / Y = "<< div(x, y); break;
    case 'r': cout << " X root Y = "<< root(x, y); break;
    case '^': cout << " X ^ Y = "<< power(x, y); break;
    case 'l': cout << " X log Y = "<< logariphm(x, y); break;
    case 's': cout << " sin X "<< sinus(x); break;
    case 'c': cout << " cos X "<< cosinus(x); break;
    default: cout << "Введёный оператор не поддерживается.";
    }
    
    getch();
}
//Определение функции
double plus(double X, double Y)
{
    return X + Y;
}
double power(double X, double Y)
{
    return pow(X, Y);
}
double minus(double X, double Y)
{
    return X - Y;
}
double mult(double X, double Y)
{
    return X * Y;
}
double div(double X, double Y)
{
    return X / Y;
}
double root(double X, double Y)
{
    return pow(X, 1/Y);
}
double sinus(double X)
{
    return sin(X * 3.14 / 180);
}
double cosinus(double X)
{
    return cos(X * 3.14 / 180);
}
double logariphm(double X, double Y)
{
        return log(X)/log(Y);}
Kaprice_P
2 / 2 / 0
Регистрация: 23.11.2011
Сообщений: 22
26.11.2011, 20:53  [ТС]     при нажатии на "=" вывести ответ.. #8
Цитата Сообщение от DenCHS200 Посмотреть сообщение
У меня всё в этой проге работает!Когда 2ое число вводите, нажимайте ENTER , а потом равно, и ничего там не зависает!

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
//Объявление функций
double plus(double X, double Y);
double power(double X, double Y);
double minus(double X, double Y);
double mult(double X, double Y);
double div(double X, double Y);
double root(double X, double Y);
double sinus(double X);
double cosinus(double X);
double logariphm(double X, double Y);
void main()
{
    //Выбираем русскую локаль, чтобы можно было выводить
    //русские символы
    setlocale(LC_ALL,"Russian" );
    //Получаем переменные и знак операции
    double x, y;
    char op;
    cout <<  "Введите X: ";
    cin >> x;
    cout << "Введите знак операции\n" 
         << " + - сложение;\n" 
         << " - - вычитание;\n"
         << " * - умножение;\n"
         << " / - деление;\n"
         << " r - корень степени Y из числа Х;\n"
         << " ^ - возведение X в степень Y;\n"
         << " l - логарифм X по основанию Y;\n"
         << " s - синус угла;\n"
         << " с - косинус угла;\n";
    cin >> op;
    if(op != 's' && op != 'c')
    {
        cout << "Введите Y: ";
        cin >> y;
   char simvol1='0';
   while(simvol1!='=')
           simvol1=getch();
        }
    
    //Производим вычисления и вывод результата в зависимости
    //от знака операции
    switch (op)
    {
    case '+': cout << " X + Y = "<< plus(x, y); break;
    case '-': cout << " X - Y = "<< minus(x, y); break;
    case '*': cout << " X * Y = "<< mult(x, y); break;
    case '/': cout << " X / Y = "<< div(x, y); break;
    case 'r': cout << " X root Y = "<< root(x, y); break;
    case '^': cout << " X ^ Y = "<< power(x, y); break;
    case 'l': cout << " X log Y = "<< logariphm(x, y); break;
    case 's': cout << " sin X "<< sinus(x); break;
    case 'c': cout << " cos X "<< cosinus(x); break;
    default: cout << "Введёный оператор не поддерживается.";
    }
    
    getch();
}
//Определение функции
double plus(double X, double Y)
{
    return X + Y;
}
double power(double X, double Y)
{
    return pow(X, Y);
}
double minus(double X, double Y)
{
    return X - Y;
}
double mult(double X, double Y)
{
    return X * Y;
}
double div(double X, double Y)
{
    return X / Y;
}
double root(double X, double Y)
{
    return pow(X, 1/Y);
}
double sinus(double X)
{
    return sin(X * 3.14 / 180);
}
double cosinus(double X)
{
    return cos(X * 3.14 / 180);
}
double logariphm(double X, double Y)
{
        return log(X)/log(Y);}
да, программа отлично работает!! просто мне надо вводить данные не через cin, а через getch а там вот что-то намудила и вообще запуталась
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2011, 19:52     при нажатии на "=" вывести ответ..
Еще ссылки по теме:

Как сделать чтобы при нажатии на кнопку "PlayWarcraft" заходил на мой сервер через IP adress C++
При помощи функции вывести на экран фигуру в виде буквы "Н". C++
C++ Ошибка с массивом: программа при вводе "ступорится" при нажатии клавиши Enter
C++ Как возможно выйти в инструкции switch в начало самой инструкции при нажатии "не правильной" кнопки
"Неожиданный" пропуск ввода при заполнении пользователем полей в массиве объектов типа "Student" C++

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

Или воспользуйтесь поиском по форуму:
Lopatka
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 9
27.11.2011, 19:52     при нажатии на "=" вывести ответ.. #9
а можно как-то соединить
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
#include <conio.h>
#include <iostream>
using namespace std; 
int main() {
    char ch,ch1,ch2;
    
    do{
        ch=_getch();
        if (isdigit(ch))
            cout<<ch;
        cout<<"\n";
    } while(ch!=' ');
do{
        ch1=_getch();
        if (isdigit(ch1))
            cout<<ch1;
        cout<<"\n";
    } while(ch1!=' ');
 
 
 
    cout<<"   ";
    cout<<"\n";
}
 Комментарий модератора 
Используйте теги форматирования кода!


вот это и предыдущую задачу?? а то я совсем не понимаю с++ а задачу надо сдать срочно!!
Yandex
Объявления
27.11.2011, 19:52     при нажатии на "=" вывести ответ..
Ответ Создать тему
Опции темы

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