Помогите, пожалуйста с программой (pascal), не знаю, где ошибка и как ее исправить задача: Найти произведение длин самой длинной и k-й строк. var f:text; s:string; max,n:integer; begin assign(f,'1.txt'); reset(f); readln(f,s);...

Помогите, пожалуйста с программой (pascal), не знаю, где ошибка и как ее исправить задача: Найти произведение длин самой длинной и k-й строк. var f:text; s:string; max,n:integer; begin assign(f,'1.txt'); reset(f); readln(f,s); n:=length(s); max:=n; while not eof(f) do begin readln(f,s); if length(s)> max then max:=length(s); end; close(f); writeln('Длина самой длинной строки: ',max); writeln('Длина k строки: ',n); writeln('Произведение длин самой длинной и k строк: ', max*n); end.
Гость
Ответ(ы) на вопрос:
Гость
Мне кажется, что эта программа неверна из-за отсутствия реализации про k-ую строку. Она выдает длину первой строки, а надо k-ой. Как это сделать - просто ввести счетчик на цикле, или использовать ту самую k. Итого код: var f:text; s:string; max,n,k:longword;//longword - беззнаковый аналог integer (если не будет работать, надо заменить обратно на intger) begin read(k);//Или откуда там мы берем это число k?.. assign(f,'1.txt'); reset(f); readln(f,s); n:=length(s); max:=n; while (not eof(f)) and (k>0) do begin k-=0; readln(f,s); if length(s)> max then max:=length(s); end; n:=length(s); while not eof(f) do begin readln(f,s); if length(s)> max then max:=length(s); end; close(f); writeln('Длина самой длинной строки: ',max); writeln('Длина k строки: ',n); writeln('Произведение длин самой длинной и k-ой строки: ', max*n); end. Обращайтесь (/обращайся), если что-то не понятно, я попробую объяснить, причем как в этом решении, так и вообще в самом принципе решения.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы