
Вопрос задан 08.04.2020 в 12:38.
Предмет Информатика.
Спрашивает Шеметова Настя.
В файле содержатся данные об учениках и их оценки по трем предметам. Найти фамилия ученика у
которого самый высокий средний балл . Помогите , паскаль

Ответы на вопрос

Отвечает Кот Вадим.
1. Современное решение
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!
begin
var s:=ReadLines('input.txt').Select(s->s.ToWords).
Select(w->(w[0]+' '+w[1],
(w[2].ToInteger+w[3].ToInteger+w[4].ToInteger)/3)).ToArray;
var max:=s.Max(fb->fb[1]);
s.Where(fb->fb[1]=max).Select(fb->fb[0]).Println(NewLine)
end.
2. Школьное решение в стиле "TurboPascal 1983г"
const
n=50; // максимум лучших учеников
var
f:Text;
i,p,pa,b,sum,max:integer;
sb:real;
s,fio:string;
flag:boolean;
a:array[1..n] of string;
begin
Assign(f,'input.txt');
Reset(f);
max:=0;
pa:=1;
while not Eof(f) do begin
Readln(f,s);
fio:='';
flag:=true;
for i:=1 to Length(s) do
if s[i]<>' ' then fio:=fio+s[i]
else
if flag then begin
fio:=fio+' ';
flag:=false
end
else break;
p:=Length(fio)+2;
sum:=0;
for i:=1 to 3 do begin
b:=Ord(s[p])-Ord('0');
sum:=sum+b;
p:=p+2
end;
if sum>max then begin
a[1]:=fio; pa:=2; max:=sum
end
else
if sum=max then begin
a[pa]:=fio; pa:=pa+1
end;
end;
Close(f);
for i:=1 to pa-1 do Writeln(a[i]);
end.
3. Пример выполнения
Исходные данные (файл во вложении)
Иванов И.И. 4 5 4
Сидорова С.С. 5 3 4
Петров П.П. 5 5 4
Козлов К.К. 3 3 5
Васечкин В.В. 4 4 4
Сорокина С.С. 5 5 4
Тарасова Т.Т. 5 4 5
Результат
Петров П.П.
Сорокина С.С.
Тарасова Т.Т.
Предвижу возражение, что современное решение "непонятно". А что, школьное понятнее? Текст в 42 строчки понятнее чем в 5 строк? (я выкинул из обоих текстов по одному begin и end, окаймляющие программу).
Что дольше писать и отлаживать? Где больше ошибок можно сделать? В конце-концов, что проще изучить с нуля - программирование в 5 строк или в 42?
Вот и вопрос - для чего в школах массово изучают такое несуразное программирование?
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!
begin
var s:=ReadLines('input.txt').Select(s->s.ToWords).
Select(w->(w[0]+' '+w[1],
(w[2].ToInteger+w[3].ToInteger+w[4].ToInteger)/3)).ToArray;
var max:=s.Max(fb->fb[1]);
s.Where(fb->fb[1]=max).Select(fb->fb[0]).Println(NewLine)
end.
2. Школьное решение в стиле "TurboPascal 1983г"
const
n=50; // максимум лучших учеников
var
f:Text;
i,p,pa,b,sum,max:integer;
sb:real;
s,fio:string;
flag:boolean;
a:array[1..n] of string;
begin
Assign(f,'input.txt');
Reset(f);
max:=0;
pa:=1;
while not Eof(f) do begin
Readln(f,s);
fio:='';
flag:=true;
for i:=1 to Length(s) do
if s[i]<>' ' then fio:=fio+s[i]
else
if flag then begin
fio:=fio+' ';
flag:=false
end
else break;
p:=Length(fio)+2;
sum:=0;
for i:=1 to 3 do begin
b:=Ord(s[p])-Ord('0');
sum:=sum+b;
p:=p+2
end;
if sum>max then begin
a[1]:=fio; pa:=2; max:=sum
end
else
if sum=max then begin
a[pa]:=fio; pa:=pa+1
end;
end;
Close(f);
for i:=1 to pa-1 do Writeln(a[i]);
end.
3. Пример выполнения
Исходные данные (файл во вложении)
Иванов И.И. 4 5 4
Сидорова С.С. 5 3 4
Петров П.П. 5 5 4
Козлов К.К. 3 3 5
Васечкин В.В. 4 4 4
Сорокина С.С. 5 5 4
Тарасова Т.Т. 5 4 5
Результат
Петров П.П.
Сорокина С.С.
Тарасова Т.Т.
Предвижу возражение, что современное решение "непонятно". А что, школьное понятнее? Текст в 42 строчки понятнее чем в 5 строк? (я выкинул из обоих текстов по одному begin и end, окаймляющие программу).
Что дольше писать и отлаживать? Где больше ошибок можно сделать? В конце-концов, что проще изучить с нуля - программирование в 5 строк или в 42?
Вот и вопрос - для чего в школах массово изучают такое несуразное программирование?


Топ вопросов за вчера в категории Информатика

Информатика 47

Информатика 33

Информатика 67

Информатика 18

Информатика 25

Информатика 563

Информатика 16
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili