Рост учащихся класса (16 человек) записан в одномерный массив. Записать программу, которая вычисляет максимальный рост и количество учеников, имеющих его.
Программу написать через процедуры: ввода, вычисления максимума, вычисления количества максимума.
Ответы
Ответ дал:
0
Полный текст программы на языке Си (все пояснения в коде)
#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("%in", &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("Максимальный найденный рост - %inКоличество учеников с максимальным ростом - %in", max,maxcount);//вывод на экран результата
return 0 ;
}
P.S. Приложил скриншот для лучшего понимания
#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("%in", &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("Максимальный найденный рост - %inКоличество учеников с максимальным ростом - %in", max,maxcount);//вывод на экран результата
return 0 ;
}
P.S. Приложил скриншот для лучшего понимания
Приложения:
Ответ дал:
0
Ну, написали бы, что необходимо на Паскале. Сэкономили бы время
Ответ дал:
0
ну в 10-11 классе на сколько я знаю не проходят программирование на языке си
Ответ дал:
0
В каждой школе по-своему. И С, С++, С#, Pascal, Basic и даже КУМир. Что учитель информатики знает - то он и дает. Вот такой идиотизм.
Ответ дал:
0
Ах, еще Python забыл перечислить.
Ответ дал:
0
Поинтересуйтесь заданиями ЕГЭ - там на 5 языках дают задачи - думаете, просто так?
Ответ дал:
0
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.
Внимание! Если программа не работает, обновите версию!
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.
Приложения:
Вас заинтересует
2 года назад
3 года назад
10 лет назад