Показать сообщение отдельно
Старый 16.10.2019, 12:18   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Так, понятно.
Очень нездорово.
Явно бездумная компиляция из чего-то.
Ладно, давайте разберём задачку.
Итак, у нас есть последовательность вещественных чисел, которая может быть разбита на n "звеньев" по k элементов в каждом. Вот и давайте, прежде всего, зададим эти самые n и k, причем лучше в виде констант — так проще будет задать массивы.
Далее описываем переменные.
Вводим два массива: нашу последовательность длиной kn и искомую последовательность максимумов длиной n. Кроме того, зададим переменные циклов i и j.
Можно, конечно, вводить последовательность с клавиатуры, но проще и быстрее воспользоваться генератором случайных чисел, причём следует использовать команду Random без параметров, поскольку последовательность по условиям задачи вещественная, а не целая. Результат выводим на экран.
Дальше обычным образом ищем максимумы "звеньев" и их тоже выводим.
Программа и результат представлены ниже. Сразу оговорюсь: у меня обычный Turbo (Free) Pascal, у Вас же, похоже, ABC. За неумелки последнего — не отвечаю. Извините.
Код:
Const
 n=4;
 k=3;

Var
 A:Array[1..n*k] of Real;
 Max:Array[1..n] of Real;
 i,j:Integer;

Begin
 Randomize;
 Writeln('Initial array:');
 for i:=1 to n*k do
  begin
   A[i]:=Random*99;
   Write(A[i]:8:3);
  end;
 Writeln;
 Writeln;
 Writeln('Maximal values in ',k,'-component groups:');
 for i:=1 to n do Max[i]:=0;
 for i:=1 to n do
  for j:=1 to k do
   if A[j+k*(i-1)]>Max[i] then Max[i]:=A[j+k*(i-1)];
 for i:=1 to n do Write(Max[i]:8:3);
 Readln
End.
Изображения
 
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070