• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите решить задачу

Лена12

Ученик
Регистрация
20 Ноя 2017
Сообщения
8
Реакции
0
Баллы
0
Помогите решить задачу

Помогите решить задачу на двумерные массивы: составьте программу нахождения максимального из чисел, встречающихся в заданном
двухмерном массиве более одного раза.
Нужно решить задачу с использованием в двумерном массиве новый массив и выписать все числа, как то так говорили решать....
Заранее спасибо!
 
как то так говорили решать...
Лена, а Вам, случайно, не говорили, на каком языке программирования следует это решать? А то наши телепаты, знаете ли, опять разбежались кто куда...
 
Язык программирования Паскаль ABC... И желательно с подпрограммами
 
Извините, не знаю, что Вам там "говорили решать", зачем тут вспомогательные массивы да подпрограммы, но самое простое решение — вот:
Код:
Const
 N=8;
Var
 A:Array [1..N,1..N] of Integer;
 i,j,i1,j1:Byte;
 M:Integer;

Begin
 Randomize;
 for i:=1 to N do
  begin
   for j:=1 to N do
    begin
     A[i,j]:=Random(100);
     write(A[i,j]:5);
    end;
   writeln;
  end;
 Writeln;
 M:=0;
 for i1:=1 to N do
  for j1:=1 to N do
   for i:=1 to N do
    for j:=1 to N do
     if (A[i,j]=A[i1,j1]) and ((i<>i1) or (j<>j1)) and (A[i,j]>M) then M:=A[i,j];
 Writeln('Max = ',M);
 Readln
End.
Это, правда, Free Pascal, но, думаю, сойдёт. Можно последний Readln убрать.
 
Спасибо большое за решение!
 
Подскажите, пожалуйста, а что обозначает переменная М?
 
Последние строки, после М:=0 можно упростить. Иначе излишние команды.
M:=0;

for i:=1 to N do
for j:=1 to N do
If M<=A[i,j] then M:=A[i,j];
Writeln('Max = ',M);
 
Иначе излишние команды.
Задание внимательно прочитали?
составьте программу нахождения максимального из чисел, встречающихся в заданном двухмерном массиве более одного раза.
Абсолютно верно! То, что кажется моему тёзке "излишним", как раз и есть проверка неоднократности.
 
Код:
 Max:=0; { Полагаем, что массив из положительных чисел } for i:=1 to N do   for j:=1 to M do     if Max 1 then Max:=A[i,j]     end
 
Чёт хрень с кодом в предыдущем сообщении
Код:
 Max:=0; { Полагаем, что массив из положительных чисел } for i:=1 to N do   for j:=1 to M do     if Max 1 then Max:=A[i,j]     end
 
Max:=0; { Полагаем, что массив из положительных чисел } for i:=1 to N do for j:=1 to M do if Max 1 then Max:=A[i,j] end
 
Код:
Max:=0; { Полагаем, что массив из положительных чисел }
for i:=1 to N do
  for j:=1 to M do
    if Max<A[i,j] then
    begin
       Count:=0;
       for k:=1 to N do for l:=1 to M do if A[i,j] = A[k,l] then Inc(Count);
       if Count > 1 then Max:=A[i,j]
    end
 
Назад
Сверху