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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2012, 20:35   #1
Foien
Новичок
Джуниор
 
Регистрация: 03.06.2012
Сообщений: 2
По умолчанию Польская нотация в C++

Требуется написать код для прямой польской нотации на C++ , использую контейнер "дек". Вообщем сначала использовал дек из строк, были проблемы с переводом целых в строки и наоборот. Сейчас во избежание проблем немного (может много ) поизвращался - сделал дек из строк, но не string , как сперва, а char[]. Ошибки теперь пошли в библеотеках.( Помогите, кто знает, как решить мою проблему, или хотя бы идею как по другому (обязательно через дек) реализовать.



#include <iostream>
#include <deque>
#include <sstream>
#include <string>
#include <math>
#include <stdlib.h>
#include <ctype>
#include <cctype>
#include <cstdlib>
#include <VCL.h>
using namespace std;


void main()
{

deque<char[10]> deq;
deque<char[10]> copy;
double a, b, c;
//char inputsq;
cout<<"Vvedite virazenie:"<<endl;
//getline(cin, inputsq);
//stringstream str1(inputsq);
//string tmp;
//while (str1 >> tmp)
// deq.push_back(tmp);
// if(deq.size() < 3)
// {
// cerr<<"error";
// exit(0);
// }
// if(deq.front() != "+" || deq.front() != "-" || deq.front() != "*"|| deq.front() != "/")
//{
// cerr << "error";
// exit(0);
//}
bool loop;
strcpy(deq[0],"+");
strcpy(deq[1],"1");
strcpy(deq[2],"2");
while(deq.size() != 1)
{
loop = true;
int i;
for (i = 0; i < deq.size(); i++)
{

if (isdigit(StrToInt(deq[i])) && isdigit(StrToInt(deq[i+1])) && loop == true)
{

a = StrToInt((deq[i]));
b = StrToInt((deq[i+1]));
if(deq[i-1] == "+")
c = a + b;
if(deq[i-1] == "*")
c = a * b;
if(deq[i-1] == "-")
c = a - b;
if(deq[i-1] == "/")
c = a / b;
deq.erase(deq.begin() + i - 1, deq.begin() + i + 1);
// strcpy(copy[i-1],IntToStr((__int64)c));
itoa(c, copy[i-1], 10);
i = i - 1;
loop = false;
}
else
strcpy(copy[i], deq[i]);
}
for (i = 0; i < deq.size(); i++)
{
strcpy(deq[i],copy[i]);
copy.clear();
}

}
c = StrToInt(std::string(deq[0]).c_str());
cout<<c;
system("pause");
}

(копипастнул из билдера, с некоторым комментами от прошлого кода)
Foien вне форума Ответить с цитированием
Старый 03.06.2012, 21:23   #2
Foien
Новичок
Джуниор
 
Регистрация: 03.06.2012
Сообщений: 2
По умолчанию

Если никто не знает, то чуть более простой вопрос. Есть ли операторы, которые безошибочно переводят string ( не ansi string, а именно string) в integer (float double не имеет значения) и наоборот?
Foien вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA разобрать формулу Excel (польская нотация) bdfy Microsoft Office Word 5 11.06.2013 21:24
Обратная польская нотация Sexy Fox Помощь студентам 9 22.09.2011 14:57
Класс подсчета выражений(C++, обратная польская нотация) russian-stalker Общие вопросы C/C++ 0 06.11.2010 19:09
Обратная польская нотация Izhic Свободное общение 17 02.10.2009 23:43
Обратная польская нотация Sexy Fox Помощь студентам 2 22.06.2007 13:27