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

Функционал калькулятора

13.04.2022, 21:52. Показов 224. Ответов 0
Метки нет (Все метки)

Написан код, на power() ломается с cos, sin,tg. Помогите реализовать.


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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include <iostream>
#include <ctype.h>
#include <stdlib.h>
#include <conio.h>
#include <Windows.h>
#include <cmath>
 
#define LIM_STRING 255
#define SIN 1
#define COS 2
#define TAN 3
 
double Calculator(char* s);
double GetItem(void);
double Summation(void);
double Multiplication(void);
double Power(void);
int DefFunc();
char* g_pchString;
using namespace std;
 
 
 
double Calculator(char* pchString) {
    g_pchString = pchString;
    return Summation();
}
 
int DefFunc()
{
    char Func[5];
    int i;
    int flag;
 
    for (i = 0; i < 3; i++)
    {
        Func[i] = g_pchString[i];
    }
    g_pchString++; g_pchString++; g_pchString++;
    Func[i] = NULL;
 
    flag = _strcmpi(Func, "sin");
    if (!flag) return SIN;
    flag = _strcmpi(Func, "cos");
    if (!flag) return COS;
    flag = _strcmpi(Func, "sin");
    if (!flag) return TAN;
 
    return 0;
}
 
double GetItem(void) {
    double fResult;
    int NameFunc;
    double Number;
    double Func;
    
 
    NameFunc = DefFunc();
    g_pchString++;
    Number = strtod(g_pchString, &g_pchString);
 
    switch (NameFunc)
    {
    case SIN:
        Func = sin(Number);
        g_pchString++;
        break;
    case COS:
        Func = cos(Number);
        g_pchString++;
    case TAN:
        Func = tan(Number);
        g_pchString++;
        g_pchString++;
        break;
    }
 
    if (*g_pchString == '('){
        g_pchString++;          
        fResult = Summation();  
        g_pchString++;         
 
        
        if (*g_pchString == ')'){
            g_pchString++; 
        }
        return fResult;
    }
 
    else
        return strtod(g_pchString, &g_pchString);
 
    
}
 
 
double Summation(void) {
    char cOperation;
    double fResult = Multiplication();
 
    while (*g_pchString == '+' || *g_pchString == '-')
    {
        cOperation = *g_pchString++;
        fResult += (cOperation == '+') ? Multiplication() : -Multiplication();
    }
    return fResult;
}
 
double Multiplication(void) {
    char cOperation;
    double fResult = Power();
 
    while (*g_pchString == '*' || *g_pchString == '/'){
        cOperation = *g_pchString++;
 
        fResult *= (cOperation == '*') ? Power() : 1.0 / Power();
    }
    return fResult;
}
 
double Power(void) {
 
    char cOperation;
    double fResult = GetItem();
 
 
    while (*g_pchString == '^') {
        cOperation = *g_pchString++;
        double s = GetItem();
        fResult = pow(fResult, s);
 
        }
    return fResult;
}
 
 
int main() {
    setlocale(LC_CTYPE, "Rus");
    char szString[LIM_STRING] = "sin 60";
    double fResult;
 
    fResult = Calculator(szString);
 
    cout << szString << " = " << fResult << endl;
 
    system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2022, 21:52
Ответы с готовыми решениями:

Отключен функционал компилятора c++11
исходник: #include &lt;iostream&gt; int main(){constexpr int k=12,constexpr int t=k-4;int rez;...

Дописать функционал к классу матриц
Всем привет,написал класс матриц со следующими операциями +,-,*,=,=! .Мой преподаватель говорит что...

Убрать лишний функционал из имеющегося кода
Необходимо скипнуть(пропустить) анимацию, но получить значение point.p. Помогите добрые...

Как использовать функционал других программ в своей?
Нужно, что бы моя программа включала WebBrowserPassView и нажимала некоторые кнопки в ней. Как это...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2022, 21:52
Помогаю со студенческими работами здесь

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

Дополнить функционал программы - найти остров с наибольшей береговой линией
Написал прогу которая находит кол-во островов , как ее дополнить, чтобы находила остров с...

Разработка калькулятора
heIP Интервалы времени (задаются в часах, минутах, секундах). Ввод данных, ввод только в...

модернизация калькулятора
В этом калькуляторе вводить данные по одному, т.е. 3 Enter + Enter 4 Enter и так далее. А как...

Моделирование калькулятора
Помогите с программой. Приложение принимает от пользователя строку с арифметическим выражением...

Доработка калькулятора
Привет всем... Прошу помоч с таким делом...Я ещё не дошёл до изучения классов но очень нужно...


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

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

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