Записи о студентах: вывести номер курса, на котором больше всего мужчин - Turbo Pascal
Формулировка задачи:
Решение задачи: «Записи о студентах: вывести номер курса, на котором больше всего мужчин»
uses
crt;
const
n=100;{максимальное количество студентов}
type
tStr=string[20];
tData=record
Fam,Nam,Sur,Sex,Age,Krs:tStr;
end;
var
a:array[0..n]of tData;
b:tData;
c:char;
z:integer;
{подпрограммма ввода}
procedure pInput;
var
c:tStr;
begin
repeat
writeln('I N P U T D A T A');
write(b.Fam,':');
readln(c);
if length(c)>0 then
begin
inc(z);
a[z].Fam:=c;
write(b.Nam,':');
readln(c);
a[z].Nam:=c;
write(b.Sur,':');
readln(c);
a[z].Sur:=c;
write(b.Sex,':');
readln(c);
a[z].Sex:=c[1];
write(b.Age,':');
readln(c);
a[z].Age:=c;
write(b.Krs,':');
readln(c);
a[z].Krs:=c[1];
end;
until length(c)=0;
end;
{подпрограмма получения значения записи}
function Fild(c:tStr;d:integer):tStr;
begin
with a[d] do
begin
if c=b.Fam then Fild:=Fam;
if c=b.Nam then Fild:=Nam;
if c=b.Sur then Fild:=Sur;
if c=b.Sex then Fild:=Sex;
if c=b.Age then Fild:=Age;
if c=b.Krs then Fild:=Krs;
end
end;
{подпрограмма поиска по заданию а}
procedure pFind;
var
c,d,e,f,g:integer;
begin
f:=0;
for d:=1 to z do
begin
e:=0;
for c:=1 to z do
if(Fild('Sex',c)='m')and(Fild('Kurs',c)=Fild('Kurs',d))then inc(e);
if e>f then
begin
f:=e;
g:=d;
end;
end;
Write('Kurs = ',a[g].Krs,' : ',f);
ReadKey
end;
{подпрограмма просмотра всех записей}
procedure pList;
var
c:integer;
begin
for c:=1 to z do
with a[c]do
writeln(Fam,',',Nam,',',Sur,',',Sex,',',Age,',',Krs);
ReadKey
end;
{основная программа}
begin
{setup data}
b.Fam:='Familya';
b.Nam:='Name';
b.Sur:='Surname';
b.Sex:='Sex';
b.Age:='Age';
b.Krs:='Kurs';
z:=0;
{меню}
repeat
ClrScr;
writeln('0 - exit');
writeln('1 - input data');
writeln('2 - find data');
writeln('3 - list data');
c:=ReadKey;
case c of
'1':pInput;
'2':pFind;
'3':pList;
end
until c='0'
end.
Объяснение кода листинга программы
В данном коде используется язык программирования Turbo Pascal. Он содержит структуру данных tData, которая представляет запись о студенте. Эта структура содержит поля Fam (семья), Nam (имя), Sur (фамилия), Sex (пол), Age (возраст) и Krs (курс). Для хранения информации о студентах используется массив a, который содержит n записей о студентах. Функция Fild используется для получения значения поля записи по его имени. Процедура pFind используется для поиска студента по полу и курсу. Она изменяет переменные f и g, которые представляют номер найденного студента и его пол. Процедура pList используется для вывода информации о всех студентах. Она проходит по всем записям в массиве a и выводит информацию о студенте. Основная программа начинается с инициализации структуры данных tData и переходит к меню, которое предлагает пользователю выбрать действие. В зависимости от выбранного действия выполняется соответствующая процедура. Код использует подпрограмму ввода данных, которая запрашивает у пользователя информацию о студентах и записывает ее в массив a. Вложенных списков в данном коде нет.