|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Калькулятор на С++ |
|
|
C/C++ - Калькулятор на С++
|
Новый участник Сообщения: 19 |
Профиль | Отправить PM | Цитировать Задали на курсовую написать калькулятор на С++. может кто кинет исходники, плиз, а то и кроме этого запарка... или хоть ссылки, где искать. помогите!!!
|
|
Отправлено: 20:50, 21-05-2004 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Просто я позно спахватился,думал, что легко написать... а в эту пятницу уже курсач сдавать(( завтра буду разгребать, чуть что задам вопросиков..)
|
Отправлено: 19:02, 23-05-2011 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Вот, пишу спросить немного по программе
у меня 3 файла, начальный, объявление класса и его компонентов, и деструкторы и конструкторы. я буду помечать в коде, что хотел бы узнать, что обозначает. помогите пожалуйста.А то я отчёт по курсовой написал, а его ещё и защитить надо.... файл calc1.cpp #include "stdafx.h" #include "calc.h" #include <iostream> #include <locale> using namespace std; int main(int argc, char* argv[]) { wcout.imbue(locale("rus_rus.866")); char line [80]; calc_var calculator;// что это обозначает? wcout << L"Доступные операции : +-*/ \n" ; wcout<< L"Введите 'z' для выхода.\n"; while(true) { wcout << L"Введите выражение: \n"; cin.getline(line,79); if(*line=='z')break; try// этот оператор что обозначает, опишите, как он работает { calculator.SetFunction(line); wcout << L"Ответ : "<< calculator.proceed() <<"\n" ; } catch(calc_var::SyntaxError e) { wcout << L"Синтаксическая ошибка :" <<e.p<<"\n" ; } catch (calc_var::divzero) { wcout << L"Ошибка.Деление на ноль!(Или равно бесконесность!)\n" ; }; } return 0; } #include <string.h> #include <ctype.h> #include <math.h> class calc_var { public: double proceed(); void SetFunction(char* lpszCommand); calc_var(char* lpszCommand); calc_var(); struct divzero{}; struct SyntaxError { const char* p; SyntaxError(const char* q){p=q;} }; virtual ~calc_var();//что обозначает виртуал?? private: virtual void GetToken(); double mul_div(); enum Tok_Type {UNDEF, NUMBER, OPERATOR, END}; Tok_Type CurrTok; protected://чем протектед от привайт отличается??? при чём ниже объявляются функции, а почему потом они вызываются , как конструкторы? char* pCurrPos; char TokenValue[16]; double add_sub(); char Function[255]; virtual double prim(); }; #include "stdafx.h" #include "calc.h" #include <string> #include "ctype.h" #include <math.h> ////////////////////////////////////////////////////////////////////// // конструкторы/деструкторы ////////////////////////////////////////////////////////////////////// calc_var::calc_var()//что это делает, и где оно вызывается?? { memset(Function,0,256); pCurrPos=Function; } calc_var::~calc_var() { } calc_var::calc_var(char* lpszCommand)// что это? и где вызывается?? { SetFunction(lpszCommand); } void calc_var::SetFunction(char* lpszCommand)// что этот конструктор делает? { strncpy_s(Function,lpszCommand,255);//strncpy_s(); что это обозначает?? Function[255]=0; pCurrPos=Function; } double calc_var::proceed() { if (strlen(Function)<1) throw(SyntaxError("No Expression"));//strlen(Function) - это что-то вроди если символов в ведённой линии маньше 1-цы то выыодит синтаксическую ошибку? return add_sub(); } double calc_var::add_sub() { double left=mul_div(); while(true) { switch (*TokenValue) { case '+': left+=mul_div(); break; case '-': left-=mul_div();break; default: return left; } } } double calc_var::mul_div() { double left=prim(); while (true) { switch(*TokenValue) { case '(': if(pCurrPos-Function)pCurrPos--; //предоставлена возможность не ставиь знак * перед и после скобки. //уменьшаем текущую разбираемую позицию на 1 и далее вызывается стандартное умножение case '*': left*=prim();break; case '/': { double d=prim(); if(d==0) throw(divzero()); left/=d; break;} default:return left; } } } double calc_var::prim()// что делает этот конструктор???, шде он вызывается я вижу , но что он именно делает? { GetToken(); switch(CurrTok) { case NUMBER://что делает ,если кейс попадает на это условие??? { double temp=atof(TokenValue); GetToken(); return temp; } case OPERATOR: { switch(*TokenValue) { case '-':return -prim(); case '+':return prim(); case '(': { double temp=add_sub(); if(*TokenValue!=')') throw(SyntaxError(") expected")); GetToken(); return temp; } } throw(SyntaxError("Incorrect operator")); } default:throw(SyntaxError("No Expression")); } } void calc_var::GetToken()//это отсортировывает операции в отдельную переменную?? { if(!pCurrPos){ CurrTok=END; *TokenValue=0; return;}//конец выражения while(*pCurrPos==' ')pCurrPos++;//Пропускаем пробелы в начале char* temp=TokenValue; if(isdigit(*pCurrPos)) { CurrTok=NUMBER; while(isdigit(*pCurrPos)||(*pCurrPos=='.'))*temp++=*pCurrPos++; } else if(strchr("+-*/()",*pCurrPos))//strchr("+-*/()",*pCurrPos) что за условие проверяет этот иф???strchr что обозначает?? { CurrTok=OPERATOR; //перейти к следующему символу *temp++=*pCurrPos++;//занесли в TokenValue оператор } else CurrTok=END; *temp=0; } Тока пожалуйста не посылайте читать книжки.....и если можно объясните попонятней) и всё , что я закоментил, это важно для меня.... |
Отправлено: 22:19, 29-05-2011 | #22 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Buchik:
Цитата Buchik:
Что касается отличий virtual, protected и т.п. - все таки придется тебе прочесть главу по объектам. Хотя бы "по диагонали". ... calc.cpp завтра распишу. Говорил тебе - пиши сам, проще будет. Вечно не послушаются... |
||
------- Отправлено: 00:03, 30-05-2011 | #23 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Всё, уже ненада, защитил курсовую и так) большое спасибо.
|
Отправлено: 12:26, 31-05-2011 | #24 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Калькулятор трупа | Greyman | Юмор | 78 | 04-06-2012 18:52 | |
C/C++ - Калькулятор | hhh8486 | Программирование и базы данных | 5 | 11-04-2011 01:18 | |
Калькулятор WinStyle | prokazzza | Проект WinStyle | 47 | 19-02-2011 22:45 | |
VBA - Калькулятор с одним textbox..... | ProgrammerPC | Программирование и базы данных | 6 | 20-07-2010 08:40 | |
C/C++ - [решено] Римский калькулятор на C++ | slavutych | Программирование и базы данных | 6 | 23-05-2009 21:47 |
|