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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2009, 21:56   #1
Bin
 
Регистрация: 12.12.2009
Сообщений: 4
По умолчанию Работа с матрицей!

Найдите элементы каждой строки матрицы, которые повторяются наибольшее число раз в своей строке, если в строке не повторяется не один элемент то выдать соответствующее сообщение .
Ввод мои наработки, но получилось как-то плохо.
Помогите исправить мои ошибки, чтобы работала правильно.
Код:
Uses crt;
Type ta=array[1..10,1..10] of integer;
     tb=array[1..10] of integer;
     tc=array[1..10] of boolean;
Var a:ta;
    b:tb;
    c:tc;
    el,i,j:integer;
Procedure Elem(b1:tb; c1:tc);
BEGIN
  el:=b1[1];
  for j:=2 to 10 do
  if b1[j]>el then el:=b1[j];
  for j:=1 to 10 do
  begin
  if b1[j]=max el c1[j]:=true;
  {writeln(b1[j],' ',c1[j]); }
  end;
END;
Begin
clrscr;
for i:=1 to 10 do
 for j:=1 to 10 do
  begin
   write('a[',i,',',j,']= ');
   readln(a[i,j]);
  end;
 for i:=1 to 10 do
begin
 for j:=1 to 10 do
   write(a[i,j]:6);
 writeln;
end;

for i:=1 to 10 do
 begin
  for j:=1 to 10 do
  begin
  b[j]:=0;
  c[j]:=false;
  end;
  for j:=1 to 10 do
  b[a[i,j]]:=b[a[i,j]]+1;
 write('наибольшее число раз повторяется в строке',i,'-элемент: ');
 Elem(b,c);
   for j:=1 to 10 do
  if c[j]=true then write(j,' ');
 writeln;
 end;
End.

Последний раз редактировалось Bin; 12.12.2009 в 21:59.
Bin вне форума Ответить с цитированием
Старый 12.12.2009, 23:18   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Предложу другой вариант
Код:
const
  m = 10; n=5;

var
  ta: array[1..m, 1..n] of byte;
  i, j, k, povtor, maxPovtor, elem: byte;

procedure povtorenie;
begin
  //for i := 1 to m do begin
    maxPovtor := 1;
    for j := 1 to n - 1 do
    begin
      povtor := 1;
      for k := j + 1 to n do
      if ta[i, j] = ta[i, k] then inc(povtor);
      if povtor > maxPovtor then
      begin
        maxPovtor := povtor;
        elem := ta[i, j]
      end
    end;
    if maxPovtor = 1 then writeln(' net povtorov')
    else writeln(' element ', elem, ' max povtor = ', maxPovtor)
  //end
end;

begin
  randomize;
  for i := 1 to m do begin
    for j := 1 to n do begin
      ta[i, j] := random(10);
      write(ta[i, j]:2)
    end;
    povtorenie
  end;    
  readln
end.
eoln вне форума Ответить с цитированием
Старый 13.12.2009, 00:17   #3
Bin
 
Регистрация: 12.12.2009
Сообщений: 4
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
Предложу другой вариант
Код:
const
  m = 10; n=5;

var
  ta: array[1..m, 1..n] of byte;
  i, j, k, povtor, maxPovtor, elem: byte;

procedure povtorenie;
begin
  //for i := 1 to m do begin
    maxPovtor := 1;
    for j := 1 to n - 1 do
    begin
      povtor := 1;
      for k := j + 1 to n do
      if ta[i, j] = ta[i, k] then inc(povtor);
      if povtor > maxPovtor then
      begin
        maxPovtor := povtor;
        elem := ta[i, j]
      end
    end;
    if maxPovtor = 1 then writeln(' net povtorov')
    else writeln(' element ', elem, ' max povtor = ', maxPovtor)
  //end
end;

begin
  randomize;
  for i := 1 to m do begin
    for j := 1 to n do begin
      ta[i, j] := random(10);
      write(ta[i, j]:2)
    end;
    povtorenie
  end;    
  readln
end.
Спасибо конечно у тебя код намного проще и легче, но мне надо ввести матрицу в ручную и вот, что сделал
Код:
Uses crt;

var
  ta: array[1..10, 1..10] of byte;
  i, j, k, povtor, maxPovtor, elem: byte;

procedure povtorenie;
begin
  for i := 1 to m do begin
    maxPovtor := 1;
    for j := 1 to n - 1 do
    begin
      povtor := 1;
      for k := j + 1 to n do
      if ta[i, j] = ta[i, k] then inc(povtor);
      if povtor > maxPovtor then
      begin
        maxPovtor := povtor;
        elem := ta[i, j]
      end
    end;
    if maxPovtor = 1 then writeln(' net povtorov')
    else writeln(' element ', elem, ' max povtor = ', maxPovtor);
  end;
end;

begin
Clrscr;
        for i:=1 to 10 do
 for j:=1 to 10 do
  begin
   write('ta[',i,',',j,']= ');
   readln(ta[i,j]);
  end;
 for i:=1 to 10 do
begin
 for j:=1 to 10 do
   write(ta[i,j]:6);
   end;
   Writeln;
 povtorenie;
 readkey;
    end.
Проверь пожалуйста неиспортил ли ответ программы своим вводом матрицы.
Bin вне форума Ответить с цитированием
Старый 13.12.2009, 00:30   #4
Bin
 
Регистрация: 12.12.2009
Сообщений: 4
По умолчанию

Вот всё Теперь работает окончательно, как надо мне =) . Огромное Спасибо ещё раз Eoln за предоставленный код !
Вот код вдруг кому-то понадобиться такой вариант.
Код:
Uses crt;

var
  ta: array[1..10, 1..10] of byte;
  i, j, k, povtor, maxPovtor, elem: byte;

procedure povtorenie;
begin
  for i := 1 to 10 do begin
    maxPovtor := 1;
    for j := 1 to 10 - 1 do
    begin
      povtor := 1;
      for k := j + 1 to 10 do
      if ta[i, j] = ta[i, k] then inc(povtor);
      if povtor > maxPovtor then
      begin
        maxPovtor := povtor;
        elem := ta[i, j]
      end
    end;
    if maxPovtor = 1 then writeln(' net povtorov')
    else writeln(' element ', elem, ' max povtor = ', maxPovtor);
  end;
end;

begin
Clrscr;
        for i:=1 to 10 do
 for j:=1 to 10 do
  begin
   write('ta[',i,',',j,']= ');
   readln(ta[i,j]);
   end;
   Writeln;
 povtorenie;
 readkey;
    end.
Bin вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с матрицей JeyKip Общие вопросы C/C++ 4 25.10.2009 22:47
Работа с матрицей Absent Помощь студентам 2 05.04.2009 15:46
Работа с матрицей Absent Помощь студентам 1 24.05.2008 13:33
Работа с матрицей Absent Помощь студентам 3 17.05.2008 22:20