Здравствуйте,даны две задачи,нужно написать программу(Паскаль).Пожалуйста распишите свои...

0 голосов
38 просмотров

Здравствуйте,даны две задачи,нужно написать программу(Паскаль).Пожалуйста распишите свои действия,ничего не понимаю.Кто понимает-объясните,пожалуйтса.
1.Найти последнее вхождение наименьшего элеманта массива.
2.Найти количество элементов равных наибольшему элементу массива.


Информатика (317 баллов) | 38 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
// PascalABC.NET 3.2, сборка 1411 от 23.03.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var a:=ArrRandom(ReadInteger('n='),-10,10); a.Println;
  Writeln('Последнее вхождение минимального элемента: ',a.LastIndexMin+1);
  var mx:=a.Max;
  Writeln('Количество элементов, равных максимальному: ',
      a.Where(x->x=mx).Count)
end.

Пример
n= 20
10 10 -10 2 -8 9 8 -8 4 -5 10 -9 9 -2 1 7 -4 9 -10 7
Последнее вхождение минимального элемента: 19
Количество элементов, равных максимальному: 3

Пояснения
ArrRandom(ReadInteger('n='),-10,10); запрашиваем количество элементов n в массиве, а затем создаем целочисленный массив заполняем его случайными целыми числами на интервала [-10;10]

a.Println; выводим содержимое массива а на монитор

a.LastIndexMin+1 находим в массиве a позицию последнего минимального элемента. Счет позиций идет с нуля, поэтому добавляем единицу.

var mx:=a.Max; находим в массиве а максимальный элемент и запоминаем его в mx

a.Where(x->x=mx).Count) выбираем из массива а элементы, равные mx и подсчитываем их количество
(150k баллов)
0

Спасибо большое за решение и пояснение!Немного начинаю понимать.

0 голосов

1)

Const
   N = 33;
Var
   A:array[1..N] of integer;
   i,m:integer;
Begin
{Заполнение массива}
For i:= 1 to N do
    Begin
    A[i]:=random(21)-10;
    Write(A[i],' ')
    End;
WriteLn;
{Поиск минимального элемента}
m:=1;
For i:= 2 to N do
    if A[i]<=A[m] then m:=i;<br>WriteLn('Min = A[',m,'] = ',A[m]);
End.

Пример:
6 0 -4 10 2 -4 -3 -9 10 -5 1 0 -8 2 2 9 -3 -6 8 10 -6 -9 9 -2 -6 2 -1 -2 6 6 -2 -3 -4
Min = A[22] = -9

2)

Const
   N = 33;
Var
   A:array[1..N] of integer;
   i,M,k:integer;
Begin
{Заполнение массива}
For i:= 1 to N do
    Begin
    A[i]:=random(21)-10;
    Write(A[i],' ')
    End;
WriteLn;
{Поиск наибольшего элемента}
M:=A[1];
For i:= 2 to N do
    if A[i] > M then M:=A[i];
{Поиск кол-ва максимальных элементов}
k:=0;
For i:= 1 to N do
    if A[i] = M then k:=k+1;
WriteLn('k_Max = ',k)
End.

Пример:
-10 3 10 -10 1 3 -9 -1 10 0 -10 3 -10 10 -4 -2 -8 3 10 -10 -9 3 -1 -2 9 -5 -6 -5 -5 -5 2 0 8
k_Max = 4

(34.0k баллов)
0

Что именно непонятно?

0

Спасибо Вам большое!Попsтаюсь разобраться.

0

Не могу сама писать программы,не понимаю вобще как даже на словах найти элемент,или что-либо другое.Не знаю как объяснить,пыталась читать,разбираться,но никак не получается.

0

К сожалению,проблемы только с информатикой в школе.но пока каникулы постараюсь больше ей позаниматься.Спасибо Вам большое!