Помощь - Поиск - Пользователи - Календарь
Полная версия: Поиск максимального элемента в массиве,нахождение "частого" числа,и кол-ва его повторений.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Andrewshkovskii
Дан одномерный массив,надо найти его максимальный элемент(сделано),после чего найти элемент,который повторяется чаще всех остальных,и найти сколько раз он повторяется(с этим и пробелмы..)
Никак не могу реализовать алгоритм.я так понимаю там нужно 3 массива ,1 массив с числами.2ой массив это какое число повторилось,а 3ий сколько раз,потом их отсортировать..ВОт реализовать не могу никак=(


program test;
uses crt;
const
n=10;
type
mas2 = array [1..n] of integer;
mas = array [1..n] of integer;
var
i,max,p:integer;
a:mas;
c:integer;
begin
clrscr;
for i:=1 to n do
begin
write('A[',i,']=');read(a[i]);
end;
max:=a[1];
for i:=1 to n do
begin
if max<a[i] then
max:=a[i];
end;
p:=0;
for i:=1 to n do
begin
if a[i]=a[i+1] then
С[i]:=a[i];
p:=p+1;
end;
writeln(max);
writeln©;
writeln(p);
readkey;
end.

ну тут не правильно...помогите или подскажите как надо сделать...
Артемий
  max:=a[1];
for i:=1 to n do
begin
if max>a[i] then
max:=a[i];
end;

А в условии другое!
Цитата
который повторяется чаще всех остальных
но не больше! ты хоть определись!

Добавлено через 2 мин.
А найти число повторений просто! Делаешь цикл и ставишь счетчик на повторение этого числа!

Добавлено через 2 мин.
max:=a[1];
for i:=1 to n do
begin
if max<a[i] then
max:=a[i];
end;
p:=0;
for i:=1 to n do
begin
if a[i]=max then inc(p);
end;

Если по second условию..
Andrewshkovskii
секенду
Артемий
Цитата
секенду

Это можно расшифровать как 2-й вариант? smile.gif

Добавлено через 3 мин.
Цитата
Никак не могу реализовать алгоритм.я так понимаю там нужно 3 массива ,1 массив с числами.2ой массив это какое число повторилось,а 3ий сколько раз,потом их отсортировать

Это ты сам додумал, или основное условие задачи?
Andrewshkovskii
да я ошибка,а не второй вариант.
Сам додумался.т.к ты не правильно понял условия(или я не ясно изложил.
Вобшем :
Находим максимальный элемент в массиве.
Находим число ,которое повторяется максимальное количевство раз и находи СКОЛЬКО раз оно повторилось.
Kirill_
Цитата
надо найти его максимальный элемент(сделано),после чего найти элемент,который повторяется чаще всех остальных,и найти сколько раз он повторяется(с этим и пробелмы..)

Не много другое, вот задача: В массиве a[1 .. n] вывести число, повторяющееся максимальное число раз. Если таких чисел несколько, то вывести их все
А вот решение:
Код

program z5;
uses crt;
var
   n,i,j,m,kol,k,max,t,d,rab: integer;
   b: array [1..100] of integer;
   f: boolean;
   a: array [1..100] of integer;
   ch: char;
begin
clrscr;
   repeat
      repeat
         write ('‚ўҐ¤ЁвҐ а §¬ал ¬ ббЁў : n=');
         readln (n);
      until n in [1..100];
      for i:=1 to n do
         begin
            write ('a[',i,']=');
            readln (a[i]);
         end;
      for i:=1 to n-1 do
         if a[i]>a[i+1] then
            begin
               rab:=a[i];
               a[i]:=a[i+1];
               a[i+1]:=rab;
            end;
      for i:=1 to n-1 do
         begin
            kol:=0;
            for j:=i+1 to n do
                  if a[i]=a[j] then kol:=kol+1;
            b[i]:=kol;
         end;
      max:=b[1];
      for i:=2 to n do
         if b[i]>max then max:=b[i];
      for i:=1 to n do

         if b[i]=max then write(a[i], ',' );
      writeln;
      write ('‚л©вЁ (y/n)?');
      writeln;
      ch:=readkey;
   until upcase (ch)='Y';
end.

Осталось добавить счетчик! smile.gif
Andrewshkovskii
Непонятно следущее :
     for i:=1 to n-1 do
begin
kol:=0;
for j:=i+1 to n do
if a[i]=a[j] then kol:=kol+1;
b[i]:=kol;
end; {тут ,как я понимаю,мы ишем одинаковые элементы,и записываем их кол-во в массив B,так?}
max:=b[1];
for i:=2 to n do
if b[i]>max then max:=b[i]; {здесь ,как я понимаю,мы ищем максимальное значение в массиве совпадений B,так?}
for i:=1 to n do

if b[i]=max then write(a[i], ',' ); {Вот это что?есле элемент в массиве совпадений i равен максимальному числу совпадений,тогда выдать на печать элемент массива a[i],но как он таким образом выдает элемент,повторившийся наибольшее кол-во раз??}
writeln;
write ('‚л©вЁ (y/n)?');
writeln;
ch:=readkey;
until upcase (ch)='Y';
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.