|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.06.2012, 20:35 | #1 |
Новичок
Джуниор
Регистрация: 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"); } (копипастнул из билдера, с некоторым комментами от прошлого кода) |
03.06.2012, 21:23 | #2 |
Новичок
Джуниор
Регистрация: 03.06.2012
Сообщений: 2
|
Если никто не знает, то чуть более простой вопрос. Есть ли операторы, которые безошибочно переводят string ( не ansi string, а именно string) в integer (float double не имеет значения) и наоборот?
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |