Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/43: Рейтинг темы: голосов - 43, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 09.11.2008
Сообщений: 8

Найти максимальное из чисел, встречающееся в данной матрице более одного раза

14.11.2008, 10:47. Показов 8502. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Тут такое задание:
Задав двумерный массив вещественных данных (матрицу А), реализовать его обработку, как указано в варианте. Исходные данные задать самостоятельно, учитывая специфику задачи.

В программе должны быть предусмотрены процедуры ввода-вывода элементов массива А и его обработки.

Задана квадратная матрица A размером N x N (N<=10), состоящая из действительных элементов.
Найти максимальное из чисел, встречающееся в данной матрице более одного раза.

Вот код где я нашел минимальное из чисел, встечающееся в данной матрице более одного раза, только незнаю в чем проблема, не запускается.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Program f2;
type
m1=array[1..3,1..3]  of real;
var
a:m1;
i,j,n:integer;
b:real;
procedure fan(var g:m1; x,y:integer);
begin
for x:=1 to 3 do
    for y:=1 to 3 do
       readln(g[x,y]);
end;
begin
writeln(‘введіть значення елементів масиву’);
fan(a,i,j);
b:=a[1,1];
n:=0;
for i:=1 to 3 do
   for j:=1 to 3 do
      if b>a[i,j] then b:=a[i,j];
   for i:=1 to 3 do 
      for j:=1 to 3 do
       if b=a[i,j] then n:=n+1;
  if n>1 then wrineln(‘найменше значення матриці яке зустрічаеться більш ніж 1 раз=,b:5:2)
else writeln(‘найменше значення матриці =,b:5:2,’воно зустрічається тільки 1 раз’);
writeln(‘вигляд матриці’);
for i:=1 to 3 do
begin
   for j:=1 to 3 do
   write(a[i,j]);
   writeln;
end;
readln;
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.11.2008, 10:47
Ответы с готовыми решениями:

Найти максимальное из чисел, встречающееся в матрице более одного раза
X={ a*b+1, если а&gt;b, -b, если а=и, (a-5)/b, если а&lt;b. ...

Найти минимальное из чисел, встречающееся в данной матрице более одного раза
Задана квадратная матрица A размером N x N (N&lt;=10), состоящая из действительных элементов 1)Найти минимальное из чисел, встречающееся в...

Найти наибольшее из чисел встречающееся в матрице более одного раза
найти наибольш из чисел встречающееся в матрице более одного раза. с помощью подпрограммы

26
 Аватар для Arriba
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
15.11.2008, 00:38
Вот решение на твой вопрос, а что ты в своей программе наворотил,это если честно ужас, советую почитать как задавать простые операции присваивания,циклы, условие.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
program Project2;
 
type
     m1=array[1..3,1..3]  of real;
 
var   a:m1;
 
procedure Input(var g:m1);
var x,y:integer;
begin
   for x:=1 to 3 do
   for y:=1 to 3 do
     begin
      Write('g[',x,',',y,']=');
      ReadLn(g[x,y]);
     end;
end;
 
procedure Output(var g:m1);
var x,y:integer;
begin
   for x:=1 to 3 do
   for y:=1 to 3 do
     begin
       if y<>3 then
         Write('g[',x,',',y,']=',g[x,y]:1:4,' ')
       else
         WriteLn('g[',x,',',y,']=',g[x,y]:1:4);
     end;
end;
 
procedure Search(var g:m1);
var x,y,xx,yy:integer;
    el,max:real;
     k:boolean;
begin
   max:=g[1,1];
   k:=false;
      for x:=1 to 3 do
      for y:=1 to 3 do
        begin
          el:=g[x,y];
           for xx:=1 to 3 do
           for yy:=1 to 3 do
             begin
               if (el=g[xx,yy])and (el>max) then
                    if (x<>xx) or (y<>yy) then
                      begin
                         max:=el;
                         k:=true;
                      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.
1
Почетный модератор
 Аватар для Puporev
64316 / 47612 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
15.11.2008, 06:53
Мне кажется это неверное решение. Нужно ведь найти не обязательно самый большой элемент, а самый большой, который встречается более одного раза, т.е. если максимум равен 10, но это число встречается один раз, то ищем следующий максимум и так пока не найдем хотя бы 2 одинаковых, возможно это будет даже самое маленькое число. У Вас же макс=g11, и если это самое большое число и оно не повторяется, то решений не будет. Знаю два варианта решения. 1- отсортировать матрицу по убыванию и найти два первых одинаковых. 2- Найти минимум и после каждого нахождения макс, если он не повторяется, присваивать ему значение мин и снова искать макс.
0
 Аватар для Arriba
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
15.11.2008, 15:18
Цитата Сообщение от Puporev Посмотреть сообщение
Нужно ведь найти не обязательно самый большой элемент, а самый большой, который встречается более одного раза, т.е. если максимум равен 10, но это число встречается один раз, то ищем следующий максимум и так пока не найдем хотя бы 2 одинаковых.
Если честно, то я несовсем понял, чем отличается твоё высказывание от моего, единственное, что я иду от низа к верху, а ты от верха к низу.

Смотри, я беру первый элемент, пробегаюсь по всему массиву ищя второй такойже, если не нашёл, то беру второй элемент, и так же пробегаюсь,если нашёл то записываю его в максимум.При дальнейших пробежках я сравниваю с этим максимумом.Если допустим у меня первый элемент самый маленький и у него есть "друг-такой же но стоящий на другом месте матрицы", и если при дальнейшем прохождении матрицы не встретилось ни одного элемента с другом, и большего чем уже найденный, тогда самый маленький и будет максимальный.Если вообще все элементы разные то напишет, что нет решений.

Пусть дана матрица
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2 4 5
1 5 8
4 2 7
 
ответ будет 4
 
2 4 5
1 5 8
9 1 7
 
ответ будет 1
 
1 2 3
4 5 6
7 8 9
ответ-нет решений
Добавлено через 3 минуты 3 секунды
тьфу, щас попробую подправить...
0
Почетный модератор
 Аватар для Puporev
64316 / 47612 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
15.11.2008, 15:20
Еще раз говорю, что если у тебя самый большой первый и ему нет пары, ты не найдешь другой, потому что все сравниваешь с макс, а он равен первому.
1
 Аватар для Arriba
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
15.11.2008, 15:48
Еще раз говорю, что если у тебя самый большой первый и ему нет пары, ты не найдешь другой, потому что все сравниваешь с макс, а он равен первому.
Извини, всё я понял в чём ошибка, непосмотрев, спорить стал...
Я просто забыл что первый элемент может быть больше других...
Поэтому введя проверку, встречались ли до этого числа одинаковые или нет, стало работать нормально...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
program Project2;
 
type
     m1=array[1..3,1..3]  of real;
 
var   a:m1;
 
procedure Input(var g:m1);
var x,y:integer;
begin
   for x:=1 to 3 do
   for y:=1 to 3 do
     begin
      Write('g[',x,',',y,']=');
      ReadLn(g[x,y]);
     end;
end;
 
procedure Output(var g:m1);
var x,y:integer;
begin
   for x:=1 to 3 do
   for y:=1 to 3 do
     begin
       if y<>3 then
         Write('g[',x,',',y,']=',g[x,y]:1:4,' ')
       else
         WriteLn('g[',x,',',y,']=',g[x,y]:1:4);
     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 3 do
      for y:=1 to 3 do
        begin
          el:=g[x,y];
           for xx:=1 to 3 do
           for yy:=1 to 3 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.
0
Почетный модератор
 Аватар для Puporev
64316 / 47612 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
15.11.2008, 15:57
Извини, что достаю, но все-равно, а если все элементы матрицы отрицательные?
0
 Аватар для Arriba
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
15.11.2008, 16:17
Цитата Сообщение от Puporev Посмотреть сообщение
Извини, что достаю, но все-равно, а если все элементы матрицы отрицательные?
Не не всё правильно.
проверил, он найдёт элемент который ближе всего к нулю...
Code
1
2
3
4
5
-1 -2 -3
-4 -3 -6
-2 -8 -9
 
ответ будет -2
Или нуно по модулю смотреть? Вроде это не указано
0
Почетный модератор
 Аватар для Puporev
64316 / 47612 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
15.11.2008, 16:26
Все, понял.
0
 Аватар для Arriba
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
15.11.2008, 16:34
Puporev, усё? нормально работает?, или какие ещё будут предложения или ошибки?

Проверяйте программы, мыж люди тоже, можем ошибаться...
0
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 36
12.11.2010, 19:16
а что нельзя попроще написать ??уж больно много строчек))мне дз задали напишите плиз, проще и меньше если возможно!
0
Программист 1С
 Аватар для Давид
859 / 647 / 187
Регистрация: 03.03.2009
Сообщений: 1,154
12.11.2010, 19:19
tapah524734, Создайте отдельную тему - в ней напишите ваше ДЗ!Тогда будем смотреть!
0
 Аватар для Arriba
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
12.11.2010, 19:21
Каждое новое задание в новой теме...
Давид, ты прав!!!
0
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 36
12.11.2010, 19:21
Давид, Найти максимальное из чисел, встречающееся в данной матрице более одного раза!Вот это задание!
0
Программист 1С
 Аватар для Давид
859 / 647 / 187
Регистрация: 03.03.2009
Сообщений: 1,154
12.11.2010, 19:28
tapah524734, У меня завалялся исходник - смотри разбирайся!Все обсуждения вверху!
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
program p1714;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
const
  Rows = 5;      // Кол-во строк матрицы
  Cols = 6;      // Кол-во столбцов матрицы
  Limit = 100;   // 0..(Limit - 1) - интервал значений элементов матрицы
 
type
  TMatrix = array[0..Rows - 1, 0..Cols - 1] of Integer; // Тип матрицы
  TMeaning = array[0..Limit - 1] of Integer; // Количество встречающихся значений
 
var
  i, j: Integer;
  M: TMatrix;
  Max: Integer; // Максимальный элемент
  V: TMeaning;  // Вектор встречающихся значений
 
begin
  // Формирование случайной матрицы и вывод на экран,
  // а также формирование количественного вектора
  Randomize();
  FillChar(V, SizeOf(V), 0);
 
  for i:= 0 to Rows - 1 do
    begin
      for j:= 0 to Cols - 1 do
        begin
          M[i, j]:= Random(Limit);
          Inc(V[M[i, j]]);
          Write(' ', M[i, j]: 3);
        end;
      WriteLn;
    end;
 
  // Поиск максимального элемента, встречающегося больше 1 раза
  Max:= -1;
  for i:= 0 to Rows - 1 do
    for j:= 0 to Cols - 1 do
      if (M[i, j] > Max) and (V[M[i, j]] > 1)
        then Max:= M[i, j];
 
  // Вывод максимального элемента и количества раз его присутствия в матрице
  if Max <> -1
    then WriteLn('  Max = ', Max, ' (', V[Max], ' times).')
    else WriteLn('  Not found.'); // Все элементы разные
 
  Write('  Press Enter...');
  ReadLn;
end.
0
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 36
12.11.2010, 19:50
А проще нельзя?мы вот этот Random еще не проходили)спросит еще откуда ты это взял.

Добавлено через 10 минут
Arriba, может ты поможешь?
0
Программист 1С
 Аватар для Давид
859 / 647 / 187
Регистрация: 03.03.2009
Сообщений: 1,154
12.11.2010, 19:52
tapah524734, Это автоматический ввод элементов массива.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Writeln (' vvedite kol-vo strok matrici ');
 Readln (Rows);
Writeln (' vvedite kol-vo stolbcov matrici ');
 Readln (Cols);
  for i:=1 to Rows-1 do
    for j:=1 to Cols-1 do begin
                     write ('M[',i,',',j,']=');
                     Readln (M[i,j]);
                     end;
writeln (' Polychena matrica ');
for i:=1 to Rows - 1 do
 begin
 for j:=1 to Cols - 1 do
    Write ('  ',M[i,j],' ');
    writeln;
 end;
writeln;
0
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 36
14.11.2010, 15:32
Давид, ЧТО ЗНАЧИТ Rows И Cols? МОЖНО ЛИ ВМЕСТО НИХ НАПИСАТЬ I И j ??МЫ ПРОСТО ЕЩЕ НЕ ПРОХОДИЛИ ROWS , COLS
0
 Аватар для SuPeR XaKer
2857 / 1986 / 788
Регистрация: 23.09.2010
Сообщений: 4,875
14.11.2010, 15:34
tapah524734

Не по теме:

ну если вы не проходили переменные то я римский папа.

0
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 36
14.11.2010, 15:36
SuPeR XaKer, ХАХАХАХА))НУ ТОГДА можно х и у поставить??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.11.2010, 15:36
Помогаю со студенческими работами здесь

Найти максимальное из чисел, встречающихся в заданной матрице более одного раза
Найти максимальное из чисел, встречающихся в заданной матрице более одного раза

Найти максимальное число из чисел, встречающихся в матрице более одного раза
найти максимальное число из чисел встречающихся в заданной матрице размером n*n более одного раза. Составить процедуру или функцию...

Найти минимальное по модулю число, встречающееся в матрице более одного раза.
Условие: - Ввести произвольную размерность квадратной матрицы в интервале 1..10. - Предложить ввод данных (чисел целого типа) двумя...

Максимальное из чисел, встречающихся в заданной матрице более одного раза
Задание №3 1. Дана целочисленная прямоугольная матрица. Определить: 1) Количество строк, не содержащих ни одного нулевого элемента; ...

Максимальное из чисел, встречающихся в заданной матрице более одного раза.
Дана целочисленная прямоугольная матрица. Определить: 1) Количество строк, не содержащих ни одного нулевого элемента; 2) Максимальное...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru