Вывести на экран фамилии имена «отличников» - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

№21. Сформировать текстовой файл, содержащий сведения о студентах(фамилия, имя, отчество, оценка 1, оценка 2, оценка 3). Вывести на экран фамилии имена «отличников».

Решение задачи: «Вывести на экран фамилии имена «отличников»»

textual
Листинг программы
var
f:text;
mbal,nbal:string;
n,k,i,b,miprop,maxprop:integer;
Fam,name,bal,prop:array[1..10] of string;
s:array[1..10] of string;
begin
Assign(f,'Student.txt');
Reset(f);
b:=1;
while not (eof(f)) do
begin
Readln(f,s[b]);
b:=b+1;
end;
n:=1;
i:=1;
for n:=1 to b-1 do
begin
i:=1;
for k:=1 to Length(s[n]) do
begin
if s[n][k]='_' then break;
Fam[n]:=Fam[n]+(s[n][k]);
i:=i+1;
end;
i:=i+1;
for k:=i to Length(s[n]) do
begin
if s[n][k]='_' then break;
name[n]:=name[n]+(s[n][k]);
i:=i+1;
end;
i:=i+1;
for k:=i to Length(s[n]) do
begin
if s[n][k]='_' then break;
bal[n]:=bal[n]+(s[n][k]);
i:=i+1;
end;
i:=i+1;
for k:=i to Length(s[n]) do
begin
if s[n][k]='_' then break;
prop[n]:=prop[n]+(s[n][k]);
i:=i+1;
end;
writeln(Fam[n]);
writeln(name[n]);
writeln(bal[n]);
writeln(prop[n]);
end;
 
 
if bal[1]<bal[2] then mbal:=bal[1]
else mbal:=bal[2];
for i:=1 to 5 do
begin
if mbal>bal[i] then mbal:=bal[i];
end;
 
if bal[1]>bal[2] then nbal:=bal[1]
else nbal:=bal[2];
for i:=1 to 9 do
begin
if nbal<bal[i] then nbal:=bal[i]
end;
for n:=1 to b-1 do
begin
if mbal=bal[n] then
begin
writeln('Минимальный ср. бал у:', Fam[n], ' ', name[n], '=', bal[n]);
end;
end;
for n:=1 to b-1 do
begin
if nbal=bal[n] then
begin
writeln('Максимальный ср. бал у:', Fam[n], ' ', name[n], '=', bal[n]);
end;
end;
if StrToInt(prop[1])<StrToInt(prop[2]) then miprop:=StrToInt(prop[1])
else miprop:=StrToInt(prop[2]);
for i:=2 to 5 do
begin
if miprop>StrToInt(prop[i]) then
begin
miprop:=StrToInt(prop[i]);
end;
end;
 
if StrToInt(prop[1])>StrToInt(prop[2]) then maxprop:=StrToInt(prop[1])
else maxprop:=StrToInt(prop[2]);
for i:=1 to 5 do
begin
if maxprop<StrToInt(prop[i]) then maxprop:=StrToInt(prop[i]);
end;
for n:=1 to b-1 do
begin
if miprop=StrToInt(prop[n]) then
begin
writeln('Минимум пропусков у:', Fam[n], ' ', name[n], '=', prop[n]);
end;
end;
for n:=1 to b-1 do
begin
if maxprop=StrToInt(prop[n]) then
begin
writeln('Максимум пропусков у:', Fam[n], ' ', name[n], '=', prop[n]);
end;
end;
 
Close(f);
end.

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

  1. Переменная f используется для чтения строк из файла.
  2. Переменные mbal, nbal, n, k, i, b, miprop и maxprop используются для хранения информации о фамилиях, именах, баллах и свойствах студентов.
  3. Переменные Fam, name, bal и prop используются для хранения информации о студентах.
  4. В цикле while считываются строки из файла до тех пор, пока не достигнут конец файла.
  5. В цикле for перебираются все баллы студентов.
  6. В цикле if проверяется, является ли текущий балл минимальным или максимальным среди всех баллов студентов.
  7. Если текущий балл является минимальным, то выводится информация о студенте.
  8. Если текущий балл является максимальным, то выводится информация о студенте.
  9. В конце программы закрывается файл.

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


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

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

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