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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2008, 20:01   #1
Latedelivery
Новичок
Джуниор
 
Регистрация: 30.10.2008
Сообщений: 2
По умолчанию Задача на анализ текстового файла

Здраствуйте. Мне нужно сделать программу в паскале, которая бы работала с текстовыйм файлом.
Собственно вот условие: "В текстовом файле задана строка, признаком конца строки является первая по порядку точка. В строке могут быть круглые (), квадратные [] и фигурные {} скобки, открывающиеся и закрывающиеся."
Нужно: подсчитать баланс скобок в этой строке.
Если у вас есть какие-то идеи или вы знаете как эту программу сделать - пожалуста напишите. Заранее спасибо.
Latedelivery вне форума Ответить с цитированием
Старый 30.10.2008, 20:51   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

for j:=1 to length(s) do
begin
case s[j] of
'(': inc(col)'
')': dec(col);
//другие варианты
'.': break;
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 31.10.2008, 01:08   #3
OLEG'arh
Пользователь
 
Аватар для OLEG'arh
 
Регистрация: 23.11.2006
Сообщений: 42
По умолчанию

Код:
var
  f:text;
  s:string;
  skob_krug, skob_kvad, skob_figur,i:Shortint;
begin
  assign(f,'D:\1.txt');
  reset(f);
  readln(f,s);
  for i:=1 to length(s) do
   begin
    case s[i] of
      '(': inc(skob_krug);
      ')': dec(skob_krug);
      '[': inc(skob_kvad);
      ']': dec(skob_kvad);
      '{': inc(skob_figur);
      '}': dec(skob_figur);
      '.':i:=length(s);
    end;
    write(s[i]);
   end;
   writeln;
  writeln('kruglie= ',skob_krug,'   kvadratnie= ',skob_kvad,'   figurnie= ',skob_figur);
  readln;
end.
OLEG'arh вне форума Ответить с цитированием
Старый 31.10.2008, 01:12   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) почитайте вот здесь - Проверить равенство числа открывающих и закрывающих круглых скобок

2) по условию задачи - процесс обработки Вам надо завершать не по достижению length(s), а когда s[i] = '.' (т.е. по достижению точки)

2) я бы эту задачу всё таки рассматривал не только как простой подсчёт количества открывающих скобок, а и их взаимное расположение... имхо....
Например, с точки зрения подсчёта баланса такое выражение абсолютно верно:
][))]}(([}{{.
если Вы с этим согласны - тогда заводите три переменные (отдельно для круглых, квадратных и фигурных скобок) и действуйте по алгоритму evg_m - пост#2
иначе алгоритм разбора будет совсем другой...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.10.2008, 10:55   #5
Latedelivery
Новичок
Джуниор
 
Регистрация: 30.10.2008
Сообщений: 2
По умолчанию

Всем спасибо, посмотрел тему про равенство, вроде понял как сделать.
Latedelivery вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задание на анализ и разбор xml файла JazonDinAlt Помощь студентам 3 04.05.2008 16:08
Delphi Редактирование текстового файла Starscream Общие вопросы Delphi 11 18.02.2008 17:15
Открытие текстового файла Victor Microsoft Office Excel 2 16.01.2008 03:42
Чтение пунктов TreeView из текстового файла DEVDITS Компоненты Delphi 2 20.05.2007 21:49