Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

23.11.2011, 22:47. Просмотров 567. Ответов 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);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2011, 22:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос при нажатии на "=" вывести ответ.. (C++):

Вывести на экран фразу "Мне n лет", учитывая что при некоторых значениях n слово "лет" надо заменить на "год" - C++
дано натуральное число n. Вывести на экран фразу &quot;Мне n лет&quot;, учитывая что при некоторых значениях n слово &quot;лет&quot; надо заменить на &quot;год&quot; или...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Ошибка с массивом: программа при вводе "ступорится" при нажатии клавиши Enter - C++
Задание: Напишите программу, используя указатели, которая вычисляет адреса чётных элементов массива, состоящего из 10 чисел типа float. ...

Вывести текст файла, заменив цифры от 0 до 9 на слова "ноль", "один"."девять", начиная каждое предложение с новой строки - C++
Написать программу, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 на слова &quot;ноль&quot;, &quot;один&quot;...&quot;девять&quot;,...

Перегрузка функций "ввести в поток", "вывести с потока", "умножить вектор на число" - C++
Подскажите пожалуйста, как убрать ошибки с этой программы? (делала перегрузку &quot;ввести в поток&quot; и &quot;вывести с потока&quot;, а также &quot;умножить...

Вывести на экран монитора число с наименованием "год","года", "лет" - C++
Прошу прогу в С++. Дано натуральное число n (n&lt;=100), определяющее в годах возраст человека. Составить программу, по которой на экран...

8
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);}
0
Kaprice_P
2 / 2 / 0
Регистрация: 23.11.2011
Сообщений: 22
24.11.2011, 09:31  [ТС] #3
Спасибо большое!! а можно ещё сделать так, чтобы значения вводились не через cin, а через getch.
Спасибо заранее
0
DenCHS200
32 / 32 / 1
Регистрация: 07.10.2011
Сообщений: 117
24.11.2011, 19:47 #4
Сделать ввод , как при полноценном cin, или не создавать возможность стирания переменной, чтобы написать её заново?
0
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;
}
 Комментарий модератора 
Используйте теги форматирования кода!


при нажатии на = прога начинает зависать полностью, поэтому отрезок этот вырезала, а так она работает. Но мне надо чтобы вводились только цифры и при нажатии на = выводился ответ, а не так, как выводится в данной программе
0
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;
}
0
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);}
0
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 а там вот что-то намудила и вообще запуталась
0
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";
}
 Комментарий модератора 
Используйте теги форматирования кода!


вот это и предыдущую задачу?? а то я совсем не понимаю с++ а задачу надо сдать срочно!!
0
27.11.2011, 19:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2011, 19:52
Привет! Вот еще темы с ответами:

"Змейка": при нажатии клавиши игра просто останавливается - C++
#include&lt;iostream&gt; #include&lt;windows.h&gt; #include&lt;conio.h&gt; using namespace std; const int Y = 20, X = 50; enum DIR{UP, DOWN, LEFT,...

Необработанное исключение в "0x775e15de" в "laba3.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfdfdfdf9". - C++
вылезает ошибка Необработанное исключение в &quot;0x775e15de&quot; в &quot;laba3.exe&quot;: 0xC0000005: Нарушение прав доступа при чтении &quot;0xfdfdfdf9&quot;. ...

Необработанное исключение в "0x00414558" в "467.exe": 0xC0000005: Нарушение прав доступа при чтении "0xabababbb" - C++
При выполнении этого кода #include &lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; int main () { int x; unsigned int...

Необработанное исключение в "0x778e15de" в "dir-3.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000" - C++
#include &lt;windows.h&gt; #include &lt;d3d9.h&gt; LRESULT __stdcall WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); struct...


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

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

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