Написать текст программы для решения следующей задачи: В школе четыре девятых класса, в...

0 голосов

Написать текст программы для решения следующей задачи:
В школе четыре девятых класса, в каждом из которых учится по 18 учеников. Рост уче-ников в сантиметрах занесен в таблицу (числа ввести с клавиатуры). Найти средний рост учеников девятых классов. Для каждого класса найти количество учеников, рост которых отличается от среднего роста учеников девятых классов не более чем на пять сантиметров.


спросил от (30 баллов) в категории Информатика
оставил комментарий от Архангел (142k баллов)

18х4=72 значения роста с клавиатуры? Да чтобы столько авторы задачи вводили ежедневно в течении года!

1 Ответ
0 голосов
ответил от Архангел (142k баллов)
 
Лучший ответ

// PascalABC.NET 3.1, сборка 1267 от 10.07.2016
const
  k=4; //количество классов
  u=18; // количество учеников в классе
var
  a:array[1..k,1..u] of real; // массив с ростом
  n:array[1..k] of integer; // массив результатов
  i,j:integer; // счетчики циклов
  m:real; // средний рост ученика в классе
begin
  for i:=1 to k do begin
    Writeln('Введите рост учеников ',i,'-го из классов');
    m:=0;
    for j:=1 to u do begin Read(a[i,j]); m:=m+a[i,j] end;
    m:=m/u;
    n[i]:=0;
    for j:=1 to u do
      if abs(a[i,j]-m)>5.0 then Inc(n[i]);
    end;
  Writeln('Количество учеников с ростом, отличающимся от среднего');
  Writeln('по каждому из классов более, чем на 5');
  for i:=1 to k do Write(n[i]:5)
end.

Пример решения для упрощенного случая, когда в классе на 18, а 5 учеников (чтобы меньше набирать)
Введите рост учеников 1-го из классов
168 174 181 172 175
Введите рост учеников 2-го из классов
162 173 170 158 183
Введите рост учеников 3-го из классов
157 185 159 168 167
Введите рост учеников 4-го из классов
170 173 176 168 171
Количество учеников с ростом, отличающимся от среднего
по каждому из классов более, чем на 5
    2    3    3    0

оставил комментарий от Архангел (142k баллов)

Тип real для роста в массиве a выбран для эффективности выполнения программы. Средний рост почти со 100% вероятностью будет нецелым (real) и если рост ученика хранить как целое (integer), то при каждом сравнении integer с real будет осуществляться преобразование integer -> real, что неэффективно. Расход памяти на хранение real вместо integer для современных версий Паскаля отличается на 2 байта (6 байт real, 4 - integer) и по задаче будет увеличен на 2х4х18=144 байта.

...