#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 ломает???
После такого запуска инпут можно разве что удалить и создать наново, только так запускается (т.е. обычного редактирования недостаточно)
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.