Задание 24 предлагает проанализировать по различным критериям текстовый файл, который состоит из набора символов. Для этого, в начале программы, требуется файл открыть в режиме посимвольного считывания (данная формулировка верна для Паскаля, Python открывает в общем, а далее все зависит от команд считывания) , ну а потом, считывая следующий символ и сравнивая его с предыдущим, настраивать реакцию программы.
Приведем решение наиболее часто встречающегося варианта задания на разных языках программирования.
Текстовый файл состоит из символов X, Y и Z.
Определите максимальное количество подряд идущих одинаковых символов.
PascalABC.NET
var f:file of char; s, s_last, s_max:char; i,i_max:integer; begin assign(f,'C:/EGE/24.txt'); reset(f); read(f,s_last); i:=1;i_max:=1; while not eof(f) do begin read(f,s); if s = s_last then i:=i+1 else begin if i>i_max then begin i_max:=i; s_max:=s_last end; i:=1; s_last:=s end end; write(i_max,' ',s_max) end.
Python
f=open('c:/EGE/24.txt') s=f.read(1); s_last=s; s_max=s i=1; i_max=1 while len(s)>0: s=f.read(1) if s==s_last: i+=1 else: if i>i_max: i_max=i; s_max=s_last i=1; s_last=s print(i_max, ' ', s_max)
Java
package zadanie24; import java.io.*; import java.text.*; public class Zadanie24 { public static void main(String[] args) { try{FileReader reader = new FileReader("C:\\Java\\24.txt"); DecimalFormat dF = new DecimalFormat(); int c,c_last,i, i_max; c_last=reader.read(); i=1; i_max=1; while((c=reader.read())>10) { if (c==c_last){i+=1;} else { if (i>i_max) {i_max=i;} i=1; c_last=c; } } System.out.print(dF.format(i_max)+' '+(char)c_last); System.out.println(); } catch(IOException ex){System.out.println(ex.getMessage());} } }