Выяснить, в каких классах насчитывается 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 учеников.
- Если таких классов нет, то выводится сообщение
Таких классов нет
.
- Если таких классов нет, то выводится сообщение
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д