Дан текстовый файл, содержащий строки. Найти самую короткую строку
Код
Uses crt; var f:text; i,min:integer; s,smin:string; begin clrscr; assign(f,'text.txt'); rewrite(f); for i:=1 to 5 do begin readln(s); writeln(f,s); end; reset(f); min:=256; while not eof(f) do begin readln(f,s); if length(s)<min then begin smin:=s; min:=length(s); end; end; if min=0 then writeln('net strok'); else begin writeln(smin); write(min); end;end.
Программу написал, но оказалось не обходимо было без использования STRING и СHAR. Что-то не знаю как это реализовать... помоги плз.)
Автор: Unconnected 30.03.2009 0:04
Можно читать файл как типизированный и обращаться по очереди к каждому символу. И считать, сколько букв до пробела. Перенести указатель на первую букву можно так: Seek(File,0);
Автор: amega 30.03.2009 0:10
Цитата
Можно читать файл как типизированный и обращаться по очереди к каждому символу. И считать, сколько букв до пробела.
если допустим это типа стринг то строка тестовый файл:
А сегодня солнечный день А я сижу в интернете
то в типизирован выдаст ответ 1.... вместо 24
Цитата
но оказалось не обходимо было без использования STRING и СHAR
что ты имешш виду?
Автор: volvo 30.03.2009 0:30
Цитата
И считать, сколько букв до пробела
Не до пробела, а до символа #13. Просят же найти самую короткую строку, а не слово... Только вот совсем без Char-ов ты тут вряд-ли обойдешься, хоть один да понадобится. Можно, конечно, работать с File of Byte, но зачем такое извращение?
Цитата
то в типизирован выдаст ответ 1.... вместо 24
А с чего ты решил, что в твоем примере ответ должен быть = 24?
Автор: amega 30.03.2009 1:11
в моем примере будет ответ вторая строка.... (наверно я ее зря в пример вписал) если ж первую строку пощитать посимвольно(включа пробелы) то выйдет 24 а еслиб считать выше предложеным то на 1 пробеле ост и выдалоб 1
Автор: Unconnected 30.03.2009 1:25
Это я просто перепутал (Volvo иправил) насчёт того, что нужно не до первого пробела, а до символа переноса каретки, т.е. #13.