Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2011, 23:38   #1
_Иван_
 
Регистрация: 09.04.2011
Сообщений: 6
Радость вычислить значение выражения

Дано выражение , состоящее из неотрицательных чисел и знаков операций '+','-','*' Вычислить значение выражения.
Пример входа:8-15*42*95+68*40*31
Пример выхода:24478
_Иван_ вне форума Ответить с цитированием
Старый 20.04.2011, 00:17   #2
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Почему ЯП не указываем? Помоему кто-то из модераторов писал калькулятор на паскале. Нужно поискать. А по делу - напишите парсер под ваш калькулятор и все будет Окей
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 20.04.2011, 18:58   #3
ololo-schoolboy
Форумчанин
 
Регистрация: 25.12.2010
Сообщений: 247
По умолчанию

Вот ПРОСТЕЙШИЙ(подчеркиваю простейший) пример реализации:
Код:
#include<iostream>

int getNumber(int& i);
int countUp(int n, int i);

using namespace std;

char str[64];

int main()
{
	while(true)
	{
		cout<<"->";
		cin>>str;
		cin.ignore();
		int i=0;
		int n=getNumber(i);
		cout<<countUp(n, i)<<endl;
	}
	return 0;
}

int getNumber(int& i)
{
	int digit=str[i]-'0';
	int number=0;
	while(0<=digit && digit<=9)
	{
		number=number*10+digit;
		digit=str[++i]-'0';
	}
	return number;
}

int countUp(int n, int i)
{
	int tmp;
	switch(str[i])
		{
			case '+':
				tmp=getNumber(++i);
				n+=countUp(tmp, i);
				break;
			case '-':
				tmp=getNumber(++i);
				n-=countUp(tmp, i);
				break;
			case '*':
				tmp=n*getNumber(++i);
				n=countUp(tmp, i);
				break;
			case '/':
				tmp=n/getNumber(++i);
				n=countUp(tmp, i);
				break;
		}
	return n;
}
зы к чему весь этот говнокод спросите вы, а к тому, что это задача на возвратную рекурсию
ololo-schoolboy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить значение выражения (3*a+2)/c Solnze2 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 07.10.2010 16:42
Вычислить значение выражения Nevezet Помощь студентам 4 30.01.2010 01:10
Вычислить значение выражения WhiteKuz Помощь студентам 0 15.12.2009 22:27
Вычислить значение выражения Pascal StartMis Помощь студентам 2 15.09.2009 22:04