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

Рост учащихся класса (16 человек) записан в одномерный массив. записать программу, которая вычисляет максимальный рост и количество учеников, имеющих его. программу написать через процедуры: ввода, вычисления максимума, вычисления количества максимума.

Показать ответ
Ответ:
6классКZ
6классКZ
04.08.2020 16:07
PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018
Внимание! Если программа не работает, обновите версию!

procedure Input(var a:array of integer);
begin
  a:=ReadArrInteger('Вводите через пробел рост в см:',a.Length)
end;

procedure MyMax(a:array of integer; var mr:integer);
begin
  mr:=a.Max
end;

procedure KMax(a:array of integer; mx:integer; var km:integer);
begin
  km:=a.Where(t->t=mx).Count
end;

begin
  var n:=ReadInteger('Количество учеников:');
  var r:=new integer[n];
  Input(r);
  var maxR,kol:integer;
  MyMax(r,maxR);
  KMax(r,maxR,kol);
  Writeln('Максимальный рост ',maxR,' имеют ',kol,' чел.')
end.

Пример
Количество учеников: 5
Вводите через пробел рост в см: 170 168 171 159 171
Максимальный рост 171 имеют 2 чел.

На самом деле, это задание - прекрасный пример того, как НЕ НУЖНО использовать процедуры.
Потому что без процедур эта же задача решается гораздо короче, занимает меньше памяти и быстрее работает.
Ниже - текст такой программы в качестве иллюстрации написанного.

begin
  var a:=ReadArrInteger('Вводите через пробел рост в см:',
      ReadInteger('Количество учеников:'));
  var maxR:=a.Max;
  var kol:=a.Where(t->t=maxR).Count;
  Writeln('Максимальный рост ',maxR,' имеют ',kol,' чел.')
end.

Рост учащихся класса (16 человек) записан в одномерный массив. записать программу, которая вычисляет
0,0(0 оценок)
Ответ:
hammyhjh
hammyhjh
04.08.2020 16:07
Полный текст программы на языке Си (все пояснения в коде)

#include<stdio.h>
#include<locale.h>
int main() {
setlocale(LC_ALL, "Ru");//необходимо исключительно для корректного отображения русского текста в консоли
int h[16]; //инициализируем целочисленный одномерный массив с 16 элементами printf("Введите данные о росте 16 учеников\n");
for(int x = 0; x < 16; x++){ //пользователь вводит информацию о всех 16 учениках scanf("%i\n", &h[x]);
}
int max = h[0];  //переменная для поиска максимального роста int maxcount = 0; //переменная для подсчета количества учеников с максимальным ростом
for(int y = 0; y < 2;y++){ //первый "виток" цикла, который проходит 2 раза. Это нужно для корректного определения количества учеников с максимальным ростом  
maxcount = 0;
for(int x = 0; x < 16; x++){ //в этом блоке происходит подсчет максимального роста и количества учеников
if(h[x] > max){
max = h[x];  //рост
}
if(h[x] == max)
{ maxcount++;      //кол-во
}
}
}
printf("Максимальный найденный рост - %i\nКоличество учеников с максимальным ростом - %i\n", max,maxcount);//вывод на экран результата
return 0 ;
}

P.S. Приложил скриншот для лучшего понимания
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота