Помощь - Поиск - Пользователи - Календарь
Полная версия: Текстовый файл
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
D1ma
Код
USES CRT;
VAR
F:TEXT;
I:WORD;
S,C:CHAR;
N:WORD;
BEGIN
CLRSCR;
     ASSIGN(F,'C:\F1.TXT');
     RESET(F);
     I:=0;
     N:=60000;
     WHILE NOT EOF(F) DO
     BEGIN
          IF EOLN(F) THEN
          BEGIN
               IF I<N THEN N:=I;
               I:=0;
               READ(F,C);
               READ(F,C);
          END;
          READ(F,C);
          I:=I+1;
     END;
     IF I<N THEN N:=I;
     IF N=60000 THEN I:=0 ELSE I:=N;
     WRITE('MIN = ');
     WRITELN(I);

END.

Необходимо написать программу, выводящую длину короткой строки. Работает немного неправильно, в чем ошибка?
p.s. +как осуществить посимвольный ввод, используя char? -)
пробывал сделать, вводить по 1 символу ток smile.gif
amega

var
s:string;
...
min:=-1;
while not eof(f) do
begin
readln(s);
if min=-1 then min:=lengs(s);
if lengs(s)<min then min:=lengs(s);
end;
writeln('min =',min);
....

D1ma
Цитата(amega @ 6.05.2009 22:12) *


var
s:string;
...
min:=-1;
while not eof(f) do
begin
readln(s);
if min=-1 then min:=lengs(s);
if lengs(s)<min then min:=lengs(s);
end;
writeln('min =',min);
....



Нужно без использования string....
volvo
Проблема твоей программы - в том, что если будет пустая строка, то все летит, ты читаешь не те символы #13#10, которые надо читать, а пропуская #13, читаешь #10 и затем - первый символ следующей строки. И еще одно совсем непонятное место - это пляски вокруг I и N перед выводом результата. Не проще выводить N, чем делать то, что ты делаешь? В общем как-то вот так:

USES CRT;
VAR
F:TEXT;
I:WORD;
C:CHAR;
N:WORD;
BEGIN
CLRSCR;
ASSIGN(F,'F1.TXT');
RESET(F);
I:=0;
N:=60000;
WHILE NOT EOF(F) DO
BEGIN
IF EOLN(F) THEN
BEGIN
IF (i > 0) and (I<N) THEN N:=I;
I:=0;
READ(F,C);
READ(F,C);
END;

if not eoln(f) then begin { <--- Это НЕ ветка Else предыдущего условия !!! }
READ(F,C);
I:=I+1;
end;
END;
WRITE('MIN = ');
WRITELN(N);

END.

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.