Вывести на экран фамилии имена «отличников» - 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.
Объяснение кода листинга программы
- Переменная
f
используется для чтения строк из файла. - Переменные
mbal
,nbal
,n
,k
,i
,b
,miprop
иmaxprop
используются для хранения информации о фамилиях, именах, баллах и свойствах студентов. - Переменные
Fam
,name
,bal
иprop
используются для хранения информации о студентах. - В цикле
while
считываются строки из файла до тех пор, пока не достигнут конец файла. - В цикле
for
перебираются все баллы студентов. - В цикле
if
проверяется, является ли текущий балл минимальным или максимальным среди всех баллов студентов. - Если текущий балл является минимальным, то выводится информация о студенте.
- Если текущий балл является максимальным, то выводится информация о студенте.
- В конце программы закрывается файл.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д