Работа 3.9 Упр.14 ГДЗ Семакин 10 класс (Информатика)
Рассмотрим вариант решения задания из учебника Семакин, Хеннер, Шеина 10 класс, Бином: 14. Получить фамилии тех учеников класса, которые являются хорошистами и отличниками по итогам года. Также указать, насколько их средний балл отличается от среднего балла класса. *Цитирирование задания со ссылкой на учебник производится исключительно в учебных целях для лучшего понимания разбора решения задания. 10 semakin10 pract/3-9/14 98
Сначала для каждого ученика вводятся фамилия и 10 оценок за четверти. Средний балл ученика вычисляется как сумма всех его оценок, делённая на 10:
$$srb=\frac{ocn_1+ocn_2+\dots+ocn_{10}}{10}$$
Одновременно накапливается сумма средних баллов всех учеников класса, а затем находится средний балл класса:
$$srk=\frac{srb_1+srb_2+\dots+srb_n}{n}$$
После этого просматриваются все записи. Ученик считается хорошистом или отличником, если все его оценки равны $$4$$ или $$5$$. Для таких учеников выводятся фамилия, оценки, средний балл и отклонение от среднего балла класса:
$$\Delta = srb — srk$$
Если $$\Delta > 0$$, выводится знак «+», иначе — само значение отклонения.
type Tuchen=record
fam:string[15];
ocn:array[1..10] of byte;
srb:real;
end;
var sp:array[1..50] of Tuchen;
n,i,j,k,f:byte;
srk:real;
c:char;
begin
writeln(‘Введите данные об учениках, окончание ввода Esc:’);
n:=0;
srk:=0;
repeat
n:=n+1;
writeln(‘Ученик ‘,n);
write(‘Фамилия: ‘); readln(sp[n].fam);
writeln(‘Оценки за четверть:’);
sp[n].srb:=0;
for j:=1 to 10 do
begin
repeat
write(‘Оценка ‘,j,’=’);
readln(sp[n].ocn[j]);
until sp[n].ocn[j] in [2..5];
sp[n].srb:=sp[n].srb+sp[n].ocn[j]/10;
end;
srk:=srk+sp[n].srb;
c:=readkey;
until c=#27;
srk:=srk/n;
clrscr;
writeln(‘Список учеников, являющихся хорошистами и отличниками:’);
writeln(‘Средний балл по классу=’,srk:0:2);
writeln(‘————————————————‘);
writeln(‘| Фамилия | Оценки за четверть | Ср.балл | Отклонение|’);
writeln(‘————————————————‘);
f:=0;
for i:=1 to n do
begin
k:=0;
for j:=1 to 10 do
if (sp[i].ocn[j]=4) or (sp[i].ocn[j]=5) then k:=k+1;
if k=10 then
begin
f:=1;
write(‘| ‘,sp[i].fam);
write(‘ | ‘);
for j:=1 to 10 do write(sp[i].ocn[j],’ ‘);
write(‘ | ‘,sp[i].srb:0:2,’ | ‘);
if sp[i].srb>srk then write(‘+’,sp[i].srb-srk:0:2)
else write(sp[i].srb-srk:0:2);
writeln(‘ |’);
end;
end;
if f=0 then writeln(‘Таких учеников нет!’);
end.
Программа выводит всех учеников, у которых за все 10 оценок стоят только $$4$$ и $$5$$, и показывает, насколько их средний балл отличается от среднего балла класса.