c++ ошибка

программирование базы данных делфи

#include <fstream>
#include <string>

using namespace std;

string str;
struct list
{
char ch;
list* forw;
};
list *plist=NULL;

void Put(char t)
{
list *z;
z=new list;
z->ch=t;
z->forw=plist;
plist=z;
}

char Get()
{
char u=plist->ch;
list *z;
z=plist;
plist=plist->forw;
delete z;
return u;
}

int main()
{
ifstream inp("input.txt");
ofstream out("output.txt");
inp>>str;
int i=0,n=str.length();
bool flag=true;
while (flag==true && i<n)
{
if (str[i]=='{' || str[i]=='(' || str[i]=='[')
Put(str[i]);
else
{
char x;
x=Get();
if ((int)str[i]-(int)x!=1 && (int)str[i]-(int)x!=2)
flag=false;
}
++i;
}
if (plist!=NULL || flag==false) out<<"FALSE!!!!";
else out<<"TRUE!!!!";
return 0;
}

Суть задачи проверить правильно ли расставлены скобки 3 типов.
Все вроде бы пашет но когда вводишь пример типа этого:
((])()()()()()()()()()()()()()()()()()()()()()()()()()
То инпут портится и там остаются какие-то квадратики, с чем это может быть связано?
(это если с среди запускать, а если с экзешника, так и вовсе исполняемый файл больше отказывается работать)

Примечание:
Я уже попробывал, сразу после считывание строки закрыл файлик - не помогло

Примечание:
Я C++ неделю знаю=)

Примечание:
Последний символ - последняя скобка.
Если скобка не открывающая, тогда по условию она будет закрывающей.
При равенстве скобок plist станет NULL, т.к. в начальное звено списка мы в поле forw записали NULL.
Вопрос в другом, алгоритм рабочей, и пишет правильно, а вот с какой радости он input.txt ломает???
После такого запуска инпут можно разве что удалить и создать наново, только так запускается (т.е. обычного редактирования недостаточно)
Ответы:
У меня работает и из среды и "из exe", вроде даже на разных входных наборах.
Проверь чтобы файл input.txt был в той же папке.
код уж больно на троллинг похож (разыменование нуля, приведение ссылки на чар к инту), уважаемый для вас есть отличный сайт: govnokod.ru
> Я C++ неделю знаю=)
это же не пхп, сел и накосячил)
а по сабжу - вылетает потому что файл не ascii
проверьте еще раз чтобы формат файла был ascii и размер 54 байта
Перед x=Get() ПРОВЕРЯЙ, что str[i] это ЗАКРЫВАЮЩАЯ скобка.


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.