Выяснить, в каких классах насчитывается 35 учащихся - PascalABC.NET
Формулировка задачи:
3)Сведения об ученике состоят из его имени и фамилии и наименование класса (года обучения и буквы), в котором он учится. Дан файл f, содержащий сведения об учениках школы:
выяснить, в каких классах насчитывается 35 учащихся
Решение задачи: «Выяснить, в каких классах насчитывается 35 учащихся»
textual
Листинг программы
type TKlass=record nm:integer; {номер класса} bk:char; {буква класса} kl:integer;{количество учеников} end; var f:text; k:array of TKlass; n,i,j:integer; s:string; s1,s2:string[20]; begin assign(f,'f.txt'); //файл f.txt в папке с программой reset(f); n:=0; while not seekeof(f) do begin readln(f,s); while pos(' ',s)>0 do delete(s,1,pos(' ',s)); s1:=''; while s[1] in ['0'..'9'] do begin s1:=s1+s[1]; delete(s,1,1); end; if n=0 then begin inc(n); setlength(k,n); k[n-1].nm:=strtoint(s1); k[n-1].bk:=s[1]; k[n-1].kl:=1; end else begin j:=-1; i:=1; while(i<n)and(j=-1)do if(strtoint(s1)=k[i].nm)and(s[1]=k[i].bk)then j:=i else inc(i); if j>-1 then inc(k[j].kl) else begin inc(n); setlength(k,n); k[n-1].nm:=strtoint(s1); k[n-1].bk:=s[1]; k[n-1].kl:=1; end; end; end; close(f); writeln('Классы в которых 35 учащихся'); j:=0; for i:=0 to n-1 do if k[i].kl=35 then begin writeln(k[i].nm,k[i].bk); j:=1; end; if j=0 then write('Таких классов нет'); end.
Объяснение кода листинга программы
- Объявление переменных и массива:
- f: текстовый файл для чтения данных;
- k: массив объектов типа TKlass для хранения информации о классах;
- n, i, j: целочисленные переменные для подсчёта количества классов и обработки данных;
- s: строковая переменная для хранения прочитанной строки;
- s1, s2: строки типа string[20] для обработки строк.
- Открытие файла f.txt для чтения.
- Инициализация первого класса:
- Если n=0, то увеличивается счётчик классов n;
- Массив k выделяется памятью под новый элемент;
- k[n-1].nm присваивается значение strtoint(s1) - номер класса;
- k[n-1].bk присваивается значение s[1] - буква класса;
- k[n-1].kl присваивается значение 1 - количество учеников в классе.
- Обработка всех строк в файле:
- Если n>0, то для каждого нового класса проверяется наличие учеников с помощью функции seekeof.
- Для каждого класса проверяется соответствие номера класса и буквы класса.
- Если соответствие найдено, то к количеству учеников в классе добавляется единица.
- Если класс пуст, то создается новый класс с номером n и одним учеником.
- Закрытие файла f.txt.
- Вывод на экран классов, в которых 35 учеников.
- Если таких классов нет, то выводится сообщение
Таких классов нет
.
- Если таких классов нет, то выводится сообщение
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д