Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2010, 20:42   #1
boing
 
Регистрация: 13.04.2010
Сообщений: 7
Сообщение число, встречающееся в матрице максимальное количество раз

помогите решить программу пожалуйста

Найти число, встречающееся в матрице максимальное количество раз. Массив NxM состоит из случайных вещественных чисел.
boing вне форума Ответить с цитированием
Старый 25.05.2010, 21:06   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
из случайных вещественных чисел.
если числа реально вещественные и действительно случайные, шансы, что в матрице N*M они хоть повторятся - чрезвычайно малы!

но общий алгоритм такой.
Код:
MaxCount := 0;
цикл по I от 1-го числа до (N*M)-1
  CurrCount := 1;
  преобразуете I в координаты xI, yI,
  цикл по J от I+1 до (N*M)
     преобразуете J в координаты xJ, yJ,
     if Mas[xI,yI] = Mas[xJ,yJ] then Inc(CurrCount);
  конец цикла по J 
  if CurrCount > MaxCount then begin
        MaxCount := CurrCount;
        MaxValue := Mas[xI,yI];
  end;
 конец цикла по I

 вывод результата MaxCount и MaxValue
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.05.2010, 23:00   #3
boing
 
Регистрация: 13.04.2010
Сообщений: 7
По умолчанию

Код:
program Project2;
type
m1=array[1..5,1..5]  of real;
var   a:m1;
procedure Input(var g:m1);
var x,y:integer;
begin
randomize;
   for x:=1 to 5 do
   for y:=1 to 5 do
     begin
      a[x,y]:=random(5);;
      a[x,y]:=a[x,y]*100;
     end;
end;

procedure Output(var g:m1);
var x,y:integer;
begin
   for x:=1 to 5 do
   begin
   for y:=1 to 5 do
     begin
         Write(g[x,y]:1:2,' ')
     end;
     writeln;
     end;
end;

procedure Search(var g:m1);
var x,m,y,xx,yy:integer;
    el,max:real;
     k:boolean;
begin
   m:=1;
   k:=false;
   max:=0;
      for x:=1 to 5 do
      for y:=1 to 5 do
        begin
          el:=g[x,y];
           for xx:=1 to 5 do
           for yy:=1 to 5 do
             begin
                 if (el=g[xx,yy])  and (m=1) then
                  begin
                   if (x<>xx) or (y<>yy) then
                     begin
                       max:=el;
                       k:=true;
                       m:=2;
                     end;
                  end
                 else
                    if (el=g[xx,yy])and (el>max) then
                       if (x<>xx) or (y<>yy) then
                         begin
                            max:=el;
                         end;
             end;
        end;
    if k=true then
     WriteLn('max=',max:1:4)
    else
     WriteLn('no max>1 raza');
end;
 
begin
Input(a);
WriteLn;
Output(a);
WriteLn;
Search(a);
ReadLn;
end.
а можете в этой задаче код поправить прога с сайбер форума сам немного доработал но она находит самый большой элемент из частовстречаемых
boing вне форума Ответить с цитированием
Старый 25.05.2010, 23:22   #4
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Код:
const
m=5;
var a,kol:array[1..m,1..m] of real;
 i,b,c,i2,j2,j:integer;
 max:real;
 begin
 randomize;
 for i:=1 to m do
  begin
  for j:=1 to m do
    begin
    a[i,j]:=random(10)-5/2;
    write(a[i,j]:1:3,' ');
    end;
    writeln;
    end;
    writeln;
    for i2:=1 to m do
    for j2:=1 to m do
    begin
    kol[i2,j2]:=0;
    for i:=1 to m do
    for j:=1 to m do
    begin
    if a[i,j]=a[i2,j2] then
    kol[i2,j2]:=kol[i2,j2]+1;
    end;
    end;
    max:=kol[1,1];
    i:=1;
    j:=1;
    for i2:=1 to m do
    begin
    for j2:=1 to m do
    if kol[i2,j2]>max then
    begin
    max:=kol[i2,j2];
    i:=i2;
    j:=j2;
    end;
    end;
    writeln;
    writeln('Самое часто повторяющееся число в массиве:',a[i,j]:1:3,' ');
    end.
Вроди так.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 28.05.2010, 09:59   #5
boing
 
Регистрация: 13.04.2010
Сообщений: 7
По умолчанию

спасибо за программу а не подскажете как её поправить чтобы если нет встречающихся чисел то вывести сообщение что их нет
boing вне форума Ответить с цитированием
Старый 28.05.2010, 10:25   #6
boing
 
Регистрация: 13.04.2010
Сообщений: 7
По умолчанию

объясните пож что тут происходит??????

Код:
for i:=1 to m do
    for j:=1 to m do
    begin
    if a[i,j]=a[i2,j2] then
    kol[i2,j2]:=kol[i2,j2]+1;
    end;
    end;
    max:=kol[1,1];
    i:=1;
    j:=1;
    for i2:=1 to m do
    begin
    for j2:=1 to m do
    if kol[i2,j2]>max then
    begin
    max:=kol[i2,j2];
    i:=i2;
    j:=j2;
    end;
    end;
    writeln;
    writeln('Самое часто повторяющееся число в массиве:',a[i,j]:1:3,' ');
    end.
boing вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти в массиве наиболее часто встречающееся число. с++ lbvflbvf Общие вопросы C/C++ 52 23.05.2010 22:34
Максимальное число LOVELY Помощь студентам 2 12.02.2010 01:21
Pascal: Наиболее часто встречающееся число в массиве. MaGWaY_minsk Помощь студентам 2 20.01.2010 00:22
Наибольшее встречающееся число pechenka. Общие вопросы C/C++ 14 01.02.2009 00:08
Найти максимальное число.Паскаль. Karabas Паскаль, Turbo Pascal, PascalABC.NET 2 16.12.2008 21:13