Задача А. Соревнование. В некоторых видах спортивных состязаний выступление каждого спортсмена независимо оценивается несколькими судьями, затем из всей совокупности оценок удаляется наиболее высокая и наиболее низкая, а для оставшихся оценок вычисляется среднее арифметическое, которое и идет в зачет спортсмену. Если наиболее высокую оценку выставили несколько судей, то из совокупности оценок удаляется только одна такая оценка, аналогично поступают и с наиболее низкой оценкой. Дано: натуральное n>4, действительные положительные числа а1, а2,…аn. Считая, что числа a1, а2, аn - это оценки, выставленные судьями одному из участников соревнований, определить ту оценку, которая пойдет в зачет этому спортсмену (с точностью 2 знака после запятой).
Формат входных данных
Вводится натуральные числа m (m<100) количество спортсменов и n (n<100) количество судей и выставленных оценок. Далее идут фамилии спортсменов и выставленные оценки (a1, а2, аn не большее 1000).
Формат результата
Выводится m фамилий спортсменов и оценки, которые пойдут в зачет этим спортсменам.
Примеры
Входные данные Результат работы
6 10
7 8 10 4 5 10 4 8 5 6
7 8 10 5 5 4 8 1 2 3
8 8 8 8 9 9 9 9 6 7
7 7 7 7 5 5 5 6 6 6
8 8 8 10 2 5 8 9 6 10
4 7 8 4 5 6 1 0 2 3 10
6.62
5.25
8.25
6.12
7.75
5.88
6 5
7 8 10 4 5
7 8 10 5 5
8 8 9 9 9
7 7 7 5 5
8 10 2 5 8
4 7 8 4 5
6.67
6.67
8.67
6.33
7.00
5.33
Потом работаем с ним.
Нам нужны 2 переменные:
1 - переменная, для сохранения результата (номера).
2 - переменная флажок.
Мы обходим весь массив ПО СТОЛБЦАМ.
В начале обхода конкретного столбца переменной флажка присвоим 1.
Сравниваем текущий элемент столбца с последующим,
если они не равны то ставим флажок 0
Код:
//Размерность массива
const n = 3;
//Сам массив
var
ar : array[1..n,1..n] of integer;
//Переменные для работы с массивом
var
i,j : integer;
//Переменные для поиска столбца
//f - переменная флажок, которая по окончанию обхода столбца будет
//показывать одинаковы ли элементы в нем
//numb - переменная, в которой сохраним номер столбца с
//одинаковыми значениями элементов.
var
f,numb : integer;
begin
//Создание и вывод на экран массива
//Элементы генерируются случайным образом
//
for i:=1 to n do
begin
for j:=1 to n do
begin
ar[i,j] := random(2);
write(ar[i,j]:3);
end;
writeln;
end;
//
//Вот сам алгоритм поиска
//
//Записываем в numb значение -1
//Если в процессе работы значение не изменится (-1)
//То означает, что в массиве нет одинаковых столбцов
numb := -1;
//Идем по массиву
//
for j:=1 to n do
//Момент начала конкретного j столбца
begin
//записываем в f значение 1
//Предполагаем, что столбец одинаков
//Если в конце обхода конкретного столбца значение f=1
//Значит, что данный столбец одинаков
f := 1;
//Идем по столбцу
// n-1
//(т.к сравниваем текущий со следующим)
for i:=1 to n-1 do
begin
//Сравниваем текущий элемент столбца, со следующим
if (ar[i,j] <> ar[i+1,j]) then
//Если они не равны, то изменяем значение флажка f на 0
f := 0;
end;
//Конец обхода конкретного столбца
//Если столбец одинаков
if (f = 1) then
//то записываем его номер в numb
numb := j;
end;
//
//Вывод результата
if (numb <> -1) then
writeln('Столбец №: ',numb)
else
writeln('Нет ни одного одинакового столбца');
end.
Алгоритм выглядит таким образом:
ввести x, y;
если x>y то
s:=(x*y)*2;
иначе
s:=(x+y)/2;
вывод s
конец. (блок-схема прилагается в скриншоте 1)
На паскале выглядит примерно так:
var
x, y, s:real;
begin
readln(x,y);
if x>y then
s:=(x*y)*2;
else
s:=(x+y)/2;
writeln(s:2:2);
end.
ответ на 2 задачу
Тут идентичный алгоритм: вводим 2 переменные x, y, далее создаем условие и возводим в модуль... (скриншот 2 с блок-схемой)
ответ на 3 задачу
Тут тоже.. в условии указываешь просто a<b<c, если условие верно, то выводишь "Верно", иначе "Не верно".
На паскале выглядит примерно так:
var
a, b, c:integer; {если число вещественное}
begin
readln(a, b, c);
if (a<b<c) then
writeln("Верно");
else
writeln("Неверно");
end.
ответ на 4 задачу
На паскале:
var
a, b, c, max:integer;
begin
max:=0;
readln(a,b,c);
if max<a then
max:=a;
if max<b then
max:=b;
if max<c then
max:=c;
writeln(max);
end.
ответ на 5 вопрос
На паскале:
Var
a,b,c:integer;
begin
readln(a,b,c);
if (a<0) then
a:=a*a;
writeln(a);
if (b<0) then
b:=b*b;
writeln(b);
if (c<0) then
c:=c*c;
writeln(c);
end.
Удачи!