|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Калькулятор на С++ |
|
C/C++ - Калькулятор на С++
|
Новый участник Сообщения: 19 |
Задали на курсовую написать калькулятор на С++. может кто кинет исходники, плиз, а то и кроме этого запарка... или хоть ссылки, где искать. помогите!!!
|
|
Отправлено: 20:50, 21-05-2004 |
Необычный Сообщения: 4465
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 13:01, 13-04-2011 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать да. и прописать ету функцию в програме...
о спасибо за полезную инфу.) |
Отправлено: 21:20, 14-04-2011 | #12 |
![]() Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Вот моя проблема: мне нужно написать калькулятор, который щитает выражения в скобках (с ОПН или ОПЗ это одно и то же)
так вот я нашёл калькулятор, который щитает сарзу переведённую запись в ОПЗ, но мне нужно сделать что бы это переводило автоматом в ОПЗ и щитало... тоесть выражение 34 + ( 45*3+5) это выражение выглядит в ОПН как 34 45 3 * 5 ++ вот мой код #include "stdafx.h" #include <stdio.h> int _tmain(int argc, _TCHAR* argv[]) { int stack[1000]; // sp = индекс ячейки, куда будет push-иться очередное число int sp =0; // (sp-1) = индекс ячейки, являющейся вершиной стека while ( !feof(stdin) ) { int c = getchar() ; int x ; switch ( c ) { case ' ' : case '\n' : break ; case '=' : printf( "Result = %d\n", stack[sp - 1] ) ; sp-- ; break ; case '+' : stack[sp-2] = stack[sp-2] + stack[sp-1] ; sp-- ; break ; case '-' : stack[sp-2] = stack[sp-2] - stack[sp-1] ; sp-- ; break ; case '*' : stack[sp-2] = stack[sp-1] * stack[sp-2] ; sp-- ; break ; case '/' : stack[sp-2] = stack[sp-2] / stack[sp-1] ; sp-- ; break ; default : ungetc (c, stdin); // вернуть символ обратно в поток if ( scanf( "%d" , &x ) != 1 ) { fprintf( stderr , "Can't read integer\n" ) ; return -1 ; } else { stack[sp] = x ; sp++ ; } } } printf( "Result = %d\n" , stack[sp-1] ) ; return 0 ; } |
Последний раз редактировалось Buchik, 22-05-2011 в 23:29. Причина: корректировка Отправлено: 10:06, 19-05-2011 | #13 |
Необычный Сообщения: 4465
|
Профиль | Сайт | Отправить PM | Цитировать Выматался, дальше запроса в гугл сейчас искать ничего не буду.
алгоритмы перевода выражения в ОПЗ Даже если написано на Pascal, понять логику работы и перевести на С++ не составит труда. |
------- Отправлено: 22:00, 19-05-2011 | #14 |
![]() Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Логика понятна, но "перевести на С++ не составит труда." с этим проблемы....Как из char строки введёной с клавиатуры задать цикл
который , бы загонял число,стоящее до определённого символа в строке, в стек, а знак, в другой стек?? тока не отправляйте в гугл.. это элементарно , знаю но или у меня мозги уже закипели.. или я найти не могу... |
Отправлено: 15:32, 22-05-2011 | #15 |
Необычный Сообщения: 4465
|
Профиль | Сайт | Отправить PM | Цитировать значит чарку вина пропусти и будь проще.
А вообще, приложи исходник. Вариантов помещения символа в стек много (по смыслу одинаковые, но варианты вызова функции будут отличаться) цикл от 0(или текущего значения) до заданного с анализом( if .... ; case ... и т.п.) полученного символа. В принципе и схем получения ОПЗ много, есть однопроходные, есть не очень, с применением стека , ссылочных типов данных (типа списков) и т.п. В общем нужен код обрамленный тегом [code] [/code] # кратко его прокомментируй, чтобы было понятно что и зачем, и выдели проблемный кусок, так всем будет проще. |
------- Отправлено: 16:06, 22-05-2011 | #16 |
![]() Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать вот, допустим вводим строку типа char назвали её переменной допустим vvod[1000] , объявили стек
stack <int> s1 ; 1206+(13*3)= как , число 1206 загнать в стек , не зная какой размерности это число?.. s1.push( vvod[ 0 тирэ 3 ] ) ; вот что я имею в виду..или как преобразовать кусок чаровской строки в инт и загнать его в стек... |
Отправлено: 23:39, 22-05-2011 | #17 |
Необычный Сообщения: 4465
|
Профиль | Сайт | Отправить PM | Цитировать во первых ты летишь вперед паровоза.
Первое что тебе надо сделать - провести синтаксический анализ строки. Т.е. есть так называемая Форма Бэкуса-Наура, описывающая синтаксис. Вводи вспомогательные функции определения подстроки числа / знака в строке. s1.push (vvod[1-3]) тебе выполнить не дадут. Не совместимость типов. Либо устранять не совместимость переводом в число [через поиск подстроки и т.д.], либо менять тип стека. |
------- Отправлено: 08:29, 23-05-2011 | #18 |
![]() Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Я , сдался, нашёл пару исходников с готовыми калькуляторами...
|
Отправлено: 13:58, 23-05-2011 | #19 |
Необычный Сообщения: 4465
|
Профиль | Сайт | Отправить PM | Цитировать Buchik, жаль что сдался, ну да ладно. Попробуем воскресить бренное тело
![]() |
------- Отправлено: 14:04, 23-05-2011 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Калькулятор трупа | 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 |
|