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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2010, 22:56   #1
street_spirit
Пользователь
 
Регистрация: 28.02.2010
Сообщений: 11
По умолчанию Работа с файлами (паскаль)

Задача такова:
Написать программу, которая выдаёт на экран предложения из данного текстового файла, в которых нет запятых.

Я начал писать программу, но столкнулся с ошибкой переполнения стека (error 202), не знаю что делать, подскажите пожалуйста.

Мой код (не дописан):

Код:
program lab5;
type TCharSet = set of char;

const
max=800;

var
f:text;
str:array[1..max] of char;
chr:char;
n:string;
i:integer;
BegChr, EndChr:integer;
konec:TCharSet;


function LastIndex(s:array of char; sets:TCharSet; j:integer):integer;
 begin
  repeat
  inc(j);
  until s[j] in sets;
  LastIndex:=j;
 end;

procedure GetSent(s:array of char; n,k:integer);
 var predl:string;
 m:integer;
 begin
  for m:=n to k do
  predl[m]:=s[m];

  WriteLn(predl);
 end;


begin
konec:=['.','!','?'];

Writeln;
Assign(f,'file.txt');
Reset(f);

While not EOF(f) do
begin
 read(f,chr);
 str[i]:=chr;
 inc(i);
end;

i:=0;
While ord(str[i])<>0 do
begin
 Write(str[i]);
 inc(i);
end;

i:=0;
BegChr:=1;
While ord(str[i])<>0 do
begin
 EndChr:=LastIndex(str,konec,BegChr);

 GetSent(str,BegChr,EndChr);


 BegChr:=EndChr+2;
 inc(i);
end;

Close(f);

Readln;
End.
По замыслу: сначала считываем содержимое файла в массив символов, потом "выдираем" из массива предложение и, если в нем не содержатся запятые, то выводим его на экран. Дописал пока только до момента разбиения массива на предложения и столкнулся с этой ошибкой.
Пожалуйста, помогите разобраться.
street_spirit вне форума Ответить с цитированием
Старый 22.11.2010, 09:40   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагаю упростить по самые помидорки:
Код:
var f:file of char;s:string;c:char;
begin
 assign(f,'file1.txt');reset(f);
 while not eof(f) do begin
  read(f,c);
  s:=s+c;
  if с in ['.','!','?'] then begin
   if pos(',',s)=0 then writeln(s);
   s:='';
  end
 end;
  { TODO -oUser -cConsole Main : Insert code here }
 readln;
end.
Смысл понятен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.11.2010, 15:40   #3
street_spirit
Пользователь
 
Регистрация: 28.02.2010
Сообщений: 11
По умолчанию

Stilet, да все предельно понятно. Спасибо Вам огромное.
street_spirit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами (паскаль) patisson74 Помощь студентам 1 15.04.2010 01:18
Паскаль, работа с файлами. Alexey_HvaranG Помощь студентам 5 07.12.2009 22:39
работа с файлами(паскаль) WF7 Паскаль, Turbo Pascal, PascalABC.NET 2 03.06.2009 16:02