Выяснить, в каких классах насчитывается 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.

Объяснение кода листинга программы

  1. Объявление переменных и массива:
    • f: текстовый файл для чтения данных;
    • k: массив объектов типа TKlass для хранения информации о классах;
    • n, i, j: целочисленные переменные для подсчёта количества классов и обработки данных;
    • s: строковая переменная для хранения прочитанной строки;
    • s1, s2: строки типа string[20] для обработки строк.
  2. Открытие файла f.txt для чтения.
  3. Инициализация первого класса:
    • Если n=0, то увеличивается счётчик классов n;
    • Массив k выделяется памятью под новый элемент;
    • k[n-1].nm присваивается значение strtoint(s1) - номер класса;
    • k[n-1].bk присваивается значение s[1] - буква класса;
    • k[n-1].kl присваивается значение 1 - количество учеников в классе.
  4. Обработка всех строк в файле:
    • Если n>0, то для каждого нового класса проверяется наличие учеников с помощью функции seekeof.
    • Для каждого класса проверяется соответствие номера класса и буквы класса.
    • Если соответствие найдено, то к количеству учеников в классе добавляется единица.
    • Если класс пуст, то создается новый класс с номером n и одним учеником.
  5. Закрытие файла f.txt.
  6. Вывод на экран классов, в которых 35 учеников.
    • Если таких классов нет, то выводится сообщение Таких классов нет.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5
Похожие ответы