Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Калькулятор на С++

Ответить
Настройки темы
C/C++ - Калькулятор на С++

Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


Задали на курсовую написать калькулятор на С++. может кто кинет исходники, плиз, а то и кроме этого запарка... или хоть ссылки, где искать. помогите!!!

Отправлено: 20:50, 21-05-2004

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Vaniok, C++ арктангенс,
c++ arctan
Раз два
Дальше сам справишься?

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 13:01, 13-04-2011 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


да. и прописать ету функцию в програме...

о спасибо за полезную инфу.)

Отправлено: 21:20, 14-04-2011 | #12


Аватара для Buchik

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить 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


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Выматался, дальше запроса в гугл сейчас искать ничего не буду.
алгоритмы перевода выражения в ОПЗ Даже если написано на Pascal, понять логику работы и перевести на С++ не составит труда.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:00, 19-05-2011 | #14


Аватара для Buchik

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Логика понятна, но "перевести на С++ не составит труда." с этим проблемы....Как из char строки введёной с клавиатуры задать цикл
который , бы загонял число,стоящее до определённого символа в строке, в стек, а знак, в другой стек?? тока не отправляйте в гугл.. это элементарно , знаю но или у меня мозги уже закипели.. или я найти не могу...

Отправлено: 15:32, 22-05-2011 | #15


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


значит чарку вина пропусти и будь проще.
А вообще, приложи исходник. Вариантов помещения символа в стек много (по смыслу одинаковые, но варианты вызова функции будут отличаться)
цикл от 0(или текущего значения) до заданного с анализом( if .... ; case ... и т.п.) полученного символа.
В принципе и схем получения ОПЗ много, есть однопроходные, есть не очень, с применением стека , ссылочных типов данных (типа списков) и т.п.
В общем нужен код обрамленный тегом [code] [/code] #
кратко его прокомментируй, чтобы было понятно что и зачем, и выдели проблемный кусок, так всем будет проще.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 16:06, 22-05-2011 | #16


Аватара для Buchik

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


вот, допустим вводим строку типа char назвали её переменной допустим vvod[1000] , объявили стек
stack <int> s1 ;


1206+(13*3)=

как , число 1206 загнать в стек , не зная какой размерности это число?..
s1.push( vvod[ 0 тирэ 3 ] ) ; вот что я имею в виду..или как преобразовать кусок чаровской строки в инт и загнать его в стек...

Отправлено: 23:39, 22-05-2011 | #17


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


во первых ты летишь вперед паровоза.
Первое что тебе надо сделать - провести синтаксический анализ строки. Т.е. есть так называемая Форма Бэкуса-Наура, описывающая синтаксис.

Вводи вспомогательные функции определения подстроки числа / знака в строке.
s1.push (vvod[1-3]) тебе выполнить не дадут.
Не совместимость типов. Либо устранять не совместимость переводом в число [через поиск подстроки и т.д.], либо менять тип стека.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:29, 23-05-2011 | #18


Аватара для Buchik

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Я , сдался, нашёл пару исходников с готовыми калькуляторами...

Отправлено: 13:58, 23-05-2011 | #19


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Buchik, жаль что сдался, ну да ладно. Попробуем воскресить бренное тело С готовыми исходниками разобрался? Принцип их работы понятен?

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 14:04, 23-05-2011 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Калькулятор на С++

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Калькулятор трупа 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




 
Переход