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

Добавить в класс возможность вычисления значенний с плавающей точкой - C++

Восстановить пароль Регистрация
 
Zver6233
36 / 36 / 8
Регистрация: 21.06.2013
Сообщений: 271
Записей в блоге: 1
10.07.2013, 11:26     Добавить в класс возможность вычисления значенний с плавающей точкой #1
Есть код программи , надо добавить в него возможность считать не только целие числа, а й реальние.
Как разобрать строку ? Чтоб получились числа типа float
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
#include <vcl>
#include <conio>
#include <iostream>
#include <cstring>
using namespace std;
const int LEN = 80;
const int MAX = 40;
class Stack
   {
   private:
      char st[MAX];
      int top;
   public:
      Stack()
         { top = 0; }
      void push(char var)
         { st[++top] = var; }
      char pop()
         { return st[top--]; }
      int gettop()
         { return top; }
   };
 
class express
   {
   private:
      Stack s;
      char* pStr;
      int len;
   public:
      express(char* ptr)
         {
         pStr = ptr;
         len = strlen(pStr);
         }
      void parse();
      int solve();
};
 
void express::parse()
   {
   char ch;
   char lastval;
   char lastop;
 
   for(int j=0; j<len; j++)
      {
      ch = pStr[j];
 
      if(ch>='0' && ch<='9')
         s.push(ch-'0');
      else if(ch=='+' || ch=='-' || ch=='*' || ch=='/')
         {
         if(s.gettop()==1)
            s.push(ch);
         else
            {
            lastval = s.pop();
            lastop = s.pop();
 
            if( (ch=='*' || ch=='/') &&
                (lastop=='+' || lastop=='-') )
               {
               s.push(lastop);
               s.push(lastval);
               }
            else
               {
               switch(lastop)
                  {
                  case '+': s.push(s.pop() + lastval); break;
                  case '-': s.push(s.pop() - lastval); break;
                  case '*': s.push(s.pop() * lastval); break;
                  case '/': s.push(s.pop() / lastval); break;
                  default:  cout << "\nUnknown oper"; exit(1);
                  }
               }
            s.push(ch);
            }
            }
      else
         { cout << "\nUnknown input character"; exit(1); }
      }
   }
//--------------------------------------------------------------
int express::solve()
   {
   char lastval;
 
   while(s.gettop() > 1)
      {
      lastval = s.pop();
      switch( s.pop() )
         {
         case '+': s.push(s.pop() + lastval); break;
         case '-': s.push(s.pop() - lastval); break;
         case '*': s.push(s.pop() * lastval); break;
         case '/': s.push(s.pop() / lastval); break;
         default:  cout << "\nUnknown operator"; exit(1);
         }
      }
   return int( s.pop() );
   }
 
int main()
   {
   char ans;
   char string[LEN];
   
   cout << "\nEnter an arithmetic expression"
           "\nof the form 2+3*4/3-2."
           "\nNo number may have more than one digit."
           "\nDon't use any spaces or parentheses.";
   do {
      cout << "\nEnter expresssion: ";
      cin >> string;
      express* eptr = new express(string);
      eptr->parse();
      cout << "\nThe numerical value is: " 
           << eptr->solve();
      delete eptr;
      cout << "\nDo another (Enter y or n)? ";
      cin >> ans;
      } while(ans == 'y');
      getch();
   return 0;
   }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2013, 11:26     Добавить в класс возможность вычисления значенний с плавающей точкой
Посмотрите здесь:

C++ Рандом с плавающей точкой, как?
Разделитель в числах с плавающей точкой C++
Не выводится число с плавающей точкой C++
Форматирование чисел с плавающей точкой C++
калькулятор чисел с плавающей точкой C++
C++ Непонятки с плавающей точкой
C++ Класс : Число с плавающей запятой(точкой)
C++ Сравнение чисел с плавающей точкой

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Praktolock
 Аватар для Praktolock
58 / 58 / 0
Регистрация: 29.11.2011
Сообщений: 272
10.07.2013, 12:40     Добавить в класс возможность вычисления значенний с плавающей точкой #2
Добавить сложно, проще переделать всё с нуля
Yandex
Объявления
10.07.2013, 12:40     Добавить в класс возможность вычисления значенний с плавающей точкой
Ответ Создать тему
Опции темы

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