Максимум, минимум и среднее одномерного массива

Ответить
Любанечка
Сообщения: 3
Зарегистрирован: 18 май 2009, 18:14

Помогите, пожалуйста!!! :( Ничего не понимаю...
1. В заданном массиве заменить значения минимального и максимального элементов на 0. Вещественный массив К(20).
2. Найти среднее арифметическое тех элементов массива, значение которых меньше первого элемента. Вещественный массив Х(20).
Заранее большое спасибо!!!
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

См. Список похожих тем ниже и поиск по меткам.
Тимур1994
Сообщения: 7
Зарегистрирован: 24 май 2009, 12:57

Код: Выделить всё

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
  var k:array [1..20] of integer;
  max,min:integer;
  i:integer;
begin
 writeln('unsortit vassiv');
 max:=-999;
 min:=999;

 for i:=1 to 20 do
  begin
   k[i]:=random(100)-50;
   write(' ',k[i],' ');
   if k[i]> max then max:=k[i];
   if k[i]< min then min:=k[i];
  end;

  writeln;
  writeln('sortit massiv');

  for i:=1 to 20 do
   begin
    if k[i]=max then k[i]:=0;
    if k[i]=min then k[i]:=0;
    write(' ',k[i],' ');
   end;

readln;
end.
Любанечка
Сообщения: 3
Зарегистрирован: 18 май 2009, 18:14

спасиб ))))))))) только непонятно, почему max:=-999;
min:=999;
Тимур1994
Сообщения: 7
Зарегистрирован: 24 май 2009, 12:57

(За граматические и пунтакционые ошибки не ругай еле смог ответить на твой вопрос)Пожауста! Ну во-первых почему max=-999 a min=999 когда мы находим максимальное значение в массиве мы проверяем переменныю max с a поэтомы мы max делаем самым минимальным т.к. масссив берет 1 элемент он равен 34 или -34 поэтомы он проверяет если a>max then max:=a или -34 или 34 > -999 then a:=34 или -34 аналогично с min :) :)
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Тимур1994,
во-первых: для обозначения "самого максимального" в типе Integer используется слово MaxInt
во-вторых: есть вычисляемое на этапе компиляции выражение High(имя_типа) и Low(имя_типа)
в-третьих: здесь уже неоднократно такие задачи решены и во всех правильных примерах полагается максимальным/минимальным первый элемент, а просмотр массива ведется со второго элемента. Понятна идея?
Тимур1994
Сообщения: 7
Зарегистрирован: 24 май 2009, 12:57

во первых что означает High(имя_типа) и Low(имя_типа);
Во вторых почемы минимальный\максимальный элемент берётся первы элемент массива
:confused:
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

High и Low описаны в справочной системе.

Так константа MaxInt определена как High(Integer).
High(Byte), например будет равна 255, и т.д.

По поводу максимума и минимума следовало бы просто посмотреть готовые решения, имеющиеся тут в изобилии. Идея проста: какой-то из элементов обязательно окажется наибольшим. Его поиск в цикле это последовательная проверка каждого элемента. "Может этот?" Следовательно первый элемент можно сразу считать максимальным, до той поры, пока мы не знакомы с остальными. Количество итераций цикла при этом попутно уменьшается на одну.

Код: Выделить всё

Max:=a[1];
For i:=2 to N do if a[i]>Max then Max:=a[i];
Max - это максимум

Если требуется найти не только значение максимума, а еще и позицию максимального элемента, то это ничуть не сложнее:

Код: Выделить всё

PosMax:=1;
For i:=2 to N do if a[i]>a[PosMax] then PosMax:=i;
PosMax - это номер максимального элемента
a[PosMax] - это его значение
Тимур1994
Сообщения: 7
Зарегистрирован: 24 май 2009, 12:57

Спасибо!! Но насчет low и :confused: High всё равно не понял
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

F1 нажимали? :)

Вместо +999 и -999 надо использовать MaxInt и Low(Integer) соответственно.
Ответить