Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
calculator.doc
Скачиваний:
344
Добавлен:
05.03.2016
Размер:
120.83 Кб
Скачать

Висновки

Під час розробки програми мною були засвоєні основні функції мови C++. Створивши програму-калькулятор, я здійснив можливість користувачу виконувати в ній основні дії. В програмі застосовані способи та прийоми роботи з вказівниками та різноманітними функціями. Основна задача полягає у виконанні елементарних арифметичних дій, виведення таких констант як PI та експоненти, виконання дій з ними. Дана програма дозволяє зручно виконувати дії використовуючи дужки. Використовувати її можна у будь яких організаціях.

Також неможна не згадати, що завдяки написанню даної курсової роботи я отримав хороший практичний досвід у використанні функцій програмування.

Перелік використаної літератури

1. Стефенс Д.Р.С++.Сборник рецептов. – КУДИЦ-ПРЕСС, 2007. – 624 с. – ISBN 5-91136-0306

2. К. Джамаса. Учимся програмировать на языке С++: Пер. С англ.. – Москва: Мир, 1997. 320с.

3. Шпак З.Я. Програмування мовою С –Львів: Оріяна-Нова, 2006 р.-432с.

4. С++, Культин Н.Б, СПб:БХВ-Петербург, 2005г. 288с.

5. Герберт Шилдт. Полный справочник по С++=С++:The Complete

6. Reference. – 4-е изд. – М. Вильямс, 2006. – 800с. ISBN 0-07-2226803

Додаток. Лістинг програми мовою с

#include <iostream>

#include <string>

#include <map>

#include <cctype>2

#include <sstream>

#include <conio.h>

using namespace std;

istream* input;

int no_of_errors;

map<string,double> table;

double number_value;

string string_value;

int no_of_strings=0;

enum Token_value

{

NAME,NUMBER,END,PLUS='+',MINUS='-',MUL='*',DIV='/',

PRINT=',',ASSIGN='=',LP='(',RP=')'

};

Token_value curr_tok=PRINT;

double term(bool get);

double prim(bool get);

double expr(bool get);

int error(const string &s);

Token_value get_token();

int main(int argc, char* argv[])

{

switch(argc)

{

case 1:

input=&cin;

break;

case 2:

input=new istringstream(argv[1]);

break;

default:

error("To mach parameters!!!");

return 1;

};

table ["pi"]=3.1415926535897932385;

table["e"] =2.7128272824590452354;

while(input)

{

get_token();

if(curr_tok==END)break;

if(curr_tok==PRINT)continue;

cout<<expr(false)<<'\n';

};

if(input!=&cin)delete input;

return no_of_errors;

};

double expr(bool get)

{

double left=term(get);

for(;;)

{

switch(curr_tok)

{

case PLUS : left+=term(true);break;

case MINUS : left-=term(true);break;

default : return left;

};

};

};

double term(bool get)

{

double left=prim(get);

for(;;)

{

switch(curr_tok)

{

case MUL : left*=prim(true);break;

case DIV : if(double d=prim(true))

{

left/=d;

break;

};

return error("DIVIZION BY ZERO");

default : return left;

};

};

};

double prim(bool get)

{

if(get)get_token();

switch(curr_tok)

{

case NUMBER :

{

double v=number_value;

get_token();

return v;

};

case NAME :

{

double&v=table[string_value];

if(get_token()==ASSIGN)v=expr(true);

return v;

};

case MINUS : return -prim(true);

case LP :

{

double e=expr(true);

if(curr_tok!=RP)return error(") EXPECTED");

get_token();

return e;

};

default : return error("PRIMARY EXPRESSION EXPECTED");

};

};

Token_value get_token()

{

char ch=0;

do{if(!input->get(ch))return curr_tok=END;}

while(ch!='\n'&&isspace(ch));

switch(ch)

{

case 0 : return curr_tok=END;

case ':': case '*': case '/': case '+':

case '-': case '(': case ')':

case '=' :

return curr_tok=Token_value(ch);

case '0': case '1': case '2': case '3':

case '4': case '5': case '6': case '7':

case '8': case '9':

case '.' :

input->putback(ch);

*input>>number_value;

return curr_tok=NUMBER;

case ';' :

case '\n' :

no_of_strings++;

return curr_tok=PRINT;

default :

if (isalpha(ch))

{

string_value=ch;

while(input->get(ch)&&isalpha(ch))

string_value.push_back(ch);

input->putback(ch);

return curr_tok=NAME;

};

error("INCORECT WORD");

return curr_tok=PRINT;

};

};

int error(const string &s)

{

no_of_errors++;

cerr<<no_of_strings<<" :-: ERROR:"<<s<<'\n';

return 1;

};

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]