![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 04.10.2014
Сообщений: 2
|
![]()
Здравствуйте. помогите пожалуйста, уже прочитал несколько форумов и справочников, но ничего полезного так и не нашел. Мне надо написать класс калькулятор(операции только сложение и вычитание). Я знаю как это сделать для определенного числа параметров, но как преобразовать, чтобы пользователь мог вводить арифметическое выражение, состоящее из неограниченного числа цифр-не представляю
Вот начал, но не уверен: Код:
Последний раз редактировалось Stilet; 07.10.2014 в 12:21. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Можно передавать массив чисел для, например, сложения:
Код:
Код:
Код:
Код:
Последний раз редактировалось 8Observer8; 07.10.2014 в 13:30. |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 04.10.2014
Сообщений: 2
|
![]()
а если так?
#include<iostream> #include<string.h> #include<stdio.h> #define ZNAK 1 #define CHISLO 2 using namespace std; class calculator {private: char *formula; char leks[100]; char lek_tip; public: void calculator::Nachalo(double *result){ get_leks(); sloz_vichet(result); } void calculator::sloz_vichet (double *result){ char up; double temp; while((up = *leks) == '+' || up == '-'){ get_leks(); switch(up){ case '-': *result= *result-temp; break; case '+': *result= *result+temp; break; }}} void calculator:: leks_potok(){ char *t; t=leks; for(;*t;t++) formula--; } void calculator::get_leks(){ char *temp; lek_tip=0; temp=leks; *temp='\0'; if(!*formula) return; while(isspace(*formula)) ++formula; if(strchr("+-=",*formula)){ lek_tip=ZNAK; *temp++= *formula++; } else if(isdigit(*formula)){ *temp++= *formula++; lek_tip=CHISLO; } *temp='\0'; }; int main() { double result; char *p; p=(char *)malloc(100); if(!p) cout<<"Oshibka"; do{ formula=p; cout<<"Vvedite virazenie: "<<endl; gets(formula); if(!*formula) break; Nachalo(&result); cout<<"Result: "<<result<<endl<<endl; } while(*p); system ("pause"); return 0; } } |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Классы | nani94 | C# (си шарп) | 0 | 16.03.2013 10:34 |
Классы | Тёма_) | Общие вопросы C/C++ | 12 | 06.04.2012 09:38 |
Классы в C# | Lucky777 | Помощь студентам | 1 | 27.04.2011 01:41 |
Классы на C | AlexRedWolf | Общие вопросы C/C++ | 4 | 13.01.2011 23:11 |