Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
1 / 2 / 0
Регистрация: 12.01.2020
Сообщений: 253
1

Не int, а double

25.03.2020, 16:15. Просмотров 138. Ответов 2

Как сделать чтобы код принимал дробовые значения, а не целые и в ответ тоже записывал дробь.
Помогите пожалуйста
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
150
#include <iostream>
#include <cctype>
#include <stdlib.h>
#include <conio.h>
#include <stack>
 
using namespace std;
 
int prior(char v)
{
    switch(v)
    {
        case '(': return 1;
        case '+': 
        case '-': return 2;
        case '*': 
        case '/': return 3;
    }   
}
 
bool is_op(char c)
{
    return c=='+' || c=='-' || c=='*' || c=='/';
}
 
bool is_alpha(char c)
{
    return c>='a' && c<='z';
}
 
void OPN(char *a, char *out)
{
    stack <char> S;
    int i = 0, j = 0;
    char t;
    while (a[i] != '\0')
    {
        if (is_alpha(a[i]))
        {
            out[j] = a[i];
            j++;
        } 
        else 
            if (is_op(a[i]))
            {
                if (S.empty() || prior(S.top()) < prior(a[i]))
                {
                   S.push(a[i]);
                } 
                else
                {
                    while (!S.empty() && (prior(S.top()) >= prior(a[i])))
                    {
                        out[j++] = S.top();
                        S.pop();
                    }
                    S.push(a[i]);
                }
            } 
            else 
                if (a[i] == '(')
                {
                    S.push(a[i]);
                } 
                else 
                    if (a[i] == ')')
                    {
                        if (S.empty() || S.top() == '(')
                        {
                            cout << "Input error!";
                            getch(); 
                            exit(1);
                        } 
                        else 
                        {
                            while (S.top() != '(')
                            {
                                out[j] = S.top(); 
                                S.pop(); 
                                j++;
                            }
                        }
                        S.pop();
                    }
        i++;
    }
    while (!S.empty())
    {
        if (S.top() == '(')
        {
            cout << "Input error!";
            getch(); exit(1);
        } 
        else 
        {
            out[j] = S.top(); 
            S.pop(); 
            j++;  
        }
    }
}
int Calc(char *out)
{
    int j = 0, c = 0, r1 = 0, r2 = 0;
    stack <double> S;
    stack <double> S1;
    while (out[j] != '\0')
    {
        if (out[j]>='a' && out[j]<='z')
        {
            cout << "\nEnter " << out[j] << ": "; cin >> c;
            S.push(c);
        } 
        else 
            if (is_op(out[j]))
            {
                r1 = S.top(); S.pop();
                r2 = S.top(); S.pop();
                switch(out[j])
                {
                    case '+': S.push(r2+r1); break;
                    case '-': S.push(r2-r1); break;
                    case '*': S.push(r2*r1); break;
                    case '/': S.push(r2/r1); break;
                }
            }
        j++;   
    }
    return (S.top());
}
 
int main()
{
    setlocale(0, "");
    char a[100] = {0};
    char out[100] = {0};
    stack <char> S;
    int i = 0;
    
    cout << "Âûðàæåíèå: "; 
    gets(a); 
    
    OPN(a,out);
    
    cout << "ÎÏÇ: " << out;
    
    cout << "Îòâåò: " << Calc(out) << "\n";
    getch();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2020, 16:15
Ответы с готовыми решениями:

Преобразовать 2 числа int в 1 число float(double) | double int1.int2
Всем привет. Изучая азы C++, столкнулся с такой проблемой. Есть два значения типа int, их...

Double, int , long double
Как вычислить диапазоны типов вручную указанных в название темы?

Ошибки error C2296: -: недопустимо, левый операнд имеет тип "double (__cdecl *)(double,double,double
Думаю из-за polp #include&lt;iostream&gt; #include&lt;cmath&gt; #include&lt;cstdlib&gt; using namespace std;...

int и double
//--------------------------------------------------------------------------- #include &quot;math.h&quot;...

2
6898 / 5963 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
25.03.2020, 18:05 2
В 104-й сделай вещественный тип, кроме j.
1
1 / 2 / 0
Регистрация: 12.01.2020
Сообщений: 253
25.03.2020, 18:40  [ТС] 3
nmcf, Спасибо, но ответ тоже должен быть дробью

Добавлено через 15 минут
nmcf, уже сам понял. Ещё раз большое спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2020, 18:40

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

2 int to double
Здравствуйте. Вот такой вопрос. В памяти хранится 2 int числа - рубли и копейки, при выводе...

double в int
собственно вопрос в шапке, как перевести double в int? т.е. также как работает делфийская функция...

int* to double*
double* myDoublePtr; int myInt = 5; int* myIntPtr; myIntPtr = &amp;myInt; // cout...

double и int
double buf = Convert::ToDouble(pole-&gt;Text);//Обьявляем переиенную buf switch (regim) {...


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

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

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