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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2011, 02:28   #1
rusfin01
Пользователь
 
Регистрация: 14.12.2010
Сообщений: 25
Восклицание Для созданного текста определить длину содержащейся в нем максимальной серии символов, отличных от букв.

Посмотрите! Помогите исправить где есть ошибки, буду очень благодарен) Вот что написал:
Код:
 uses crt;
var f1, f2: text;
k, n:array[1..50] of integer;
ch:char;
mn1, mn2:set of char;
ks, nst, i, j:integer;
t:string;

procedure VIV_FIL(var f:text; t:string);
begin
  reset(f);
  writeln;
  writeln(t);
  while not eof(f) do
    begin readln(f,t);
          writeln(t);
    end;
end;
procedure SWAP (var x,y:integer);
var c:integer;
begin
c:=x;
x:=y;
y:=c
end;
BEGIN
  assign(f1,'f1lab28.txt');
  assign(f2,'f2lab28.txt');
  {$I-} reset(f1);{$I+}
  if IOresult<>0 then
    begin writeln('sozdai fail');
          readkey;
          exit
    end
  else
    begin
      mn1:=['A'..'Z'];
      mn2:=['0'..'9', '!', '?', '.', ',', ' '];
    nst:=0;
    while not seekeof(f1) do
      begin
      ks:=0;
      inc(nst);
      while not seekeoln(f1) do
       begin
         read(f1, ch);
         if ch in mn2 then inc(ks);
       end;
      k[nst]:=ks;
      n[nst]:=nst;
      readln(f1);
      end;
     i:=1;
     while i<nst do
     begin
     if k[i]>k[i+1] then
     begin
     swap(k[i],k[i+1]);
     swap(n[i],n[i+1]);
     if i>1 then dec(i);
     end
     else inc(i);
     end;
    rewrite(f2);
    for i:=1 to nst do
     begin reset(f1);
       for j:=1 to n[i] do
       readln(f1,t);
       writeln(f2,t);
     end;
  VIV_FIL(f1,'fail f1');
  VIV_FIL(f2,'fail f2');
end;
close(f1);
close(f2);
readkey;
END.
rusfin01 вне форума Ответить с цитированием
Старый 28.02.2011, 10:25   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,886
По умолчанию

поглядел.

что-то не въехал во все эти одноликие безымянные переменные, но уловил вот какую штуку:
inc(nst); выполняется всего один раз
правда я хз , где мне взять твой файл ввода, будь добр в следующий раз выкладывай таковой, или вообще весь проект, я сделал псевдорандомный fill величинами от 48('0') до 126('~') с помощью винхекса

в итоге условие while i<nst не выполняется никогда, я получил идентичный файл выхода (идентичный файлу входа), кроме добавленного в конец 0D0A
phomm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана строка текста.Определить какой из символов в ней больше . А или О? Райзат Фриланс 23 26.07.2010 21:20
как определить длину мп3? Дима я Мультимедиа в Delphi 6 19.08.2009 19:44
Дана матрица символов. Определить строку, в которой максимальное количество букв. SilentM Помощь студентам 9 23.05.2009 14:30
Что использовать для текста более 2000 символов? Fo][ Общие вопросы Delphi 6 21.03.2009 17:56
тип поля для хранения текста > 255 символов komex БД в Delphi 4 23.09.2007 12:38