Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.77
ScaleS
 Аватар для ScaleS
46 / 46 / 0
Регистрация: 06.12.2009
Сообщений: 68
#1

Поиск элементов и замена в двумерном массиве - C++

06.12.2009, 21:37. Просмотров 3907. Ответов 22
Метки нет (Все метки)

В массиве все элементы ,стоящие выше максимального элемента,заменить на максимальный элемент первого столбца!
Есть часть кода где производит рандомное заполнение,поиск максимального элемента и вывод,подскажите пожалуйста как написать код для поиска в первом столбце макс. элемента и как произвести замену? Заранее благодарю.
C++
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
#define MAXN 10
#define MAXM 10
 
int a[MAXN][MAXM];
int n, m;
int imax;
int jmax;
 
void GenerateArray()
{
  int i, j;
  n = random(10) + 1;
  m = random(10) + 1;
  for (i = 0; i < n; i++)
    for (j = 0; j < m; j++)
     a[i][j] = random(5) + 1; 
}
void FindMaxElement()
{
  int i,j;
  int max;
  max = a[0][0];
  imax = 0;
  jmax = 0;
  for(i = 0; i < n; i++)
    for(j = 0; j < m; j++)
     if (a[i][j] > max)
     {
      max = a[i][j];
      imax = i;
      jmax = j;
     }
}
 
void OutputArray()
{
 int i, j;
 for (i = 0; i < n; i++)
  {
  for (j = 0; j < m; j++) 
    printf("%4d ", a[i][j]);
  printf("\n");
  }
}
 
int main()
{
 clrscr();
 randomize();
 GenerateArray();
 FindMaxElement();
 OutputArray();
 getch();
 
 return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2009, 21:37     Поиск элементов и замена в двумерном массиве
Посмотрите здесь:

Поиск трех максимальных элементов в двумерном массиве C++
замена строки на столбец в двумерном массиве C++
Выполнить в двумерном массиве поиск столбца с максимальной суммой элементов C++
Поиск минимального числа в двумерном массиве C++
C++ Замена элементов в двумерном массиве
Не происходит замена в двумерном массиве C++
C++ Поиск самой длиной серии одинаковых элементов в двумерном массиве
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
breeve
 Аватар для breeve
73 / 73 / 14
Регистрация: 01.08.2009
Сообщений: 177
06.12.2009, 21:46     Поиск элементов и замена в двумерном массиве #2
что-то я не много не понял..
стоящие выше максимального элемента,заменить на максимальный элемент первого столбца!
максимальный элемент и максимальный элемент первого столбца это разные числа?
вот допустим есть у тебя матрица:
1 5 7 4 2 1 ..
2 5 2 5 2 3 ..
1 1 7 5 1 0 ..
.. .. .. .. .. ..
какие числа надо заменить?
ScaleS
 Аватар для ScaleS
46 / 46 / 0
Регистрация: 06.12.2009
Сообщений: 68
06.12.2009, 21:51  [ТС]     Поиск элементов и замена в двумерном массиве #3
да это разные,с начало должен производиться поиск по всему массиву потом только по первому столбцу

Добавлено через 2 минуты
сейчас у тебя получатся что максимальный это в первой строке в третьем столбце,тут тогда ничего не увеличивается. т.к выше строк уже нет
breeve
 Аватар для breeve
73 / 73 / 14
Регистрация: 01.08.2009
Сообщений: 177
06.12.2009, 21:54     Поиск элементов и замена в двумерном массиве #4
Цитата Сообщение от ScaleS Посмотреть сообщение
да это разные,с начало должен производиться поиск по всему массиву потом только по первому столбцу

Добавлено через 2 минуты
сейчас у тебя получатся что максимальный это в первой строке в третьем столбце,тут тогда ничего не увеличивается. т.к выше строк уже нет
я чето просто все равно не понимаю в каком случае должен будет производиться поиск по первому столбцу..
я могу понять если допустим заменить в массиве все числа выше мах на мах..
ScaleS
 Аватар для ScaleS
46 / 46 / 0
Регистрация: 06.12.2009
Сообщений: 68
06.12.2009, 21:57  [ТС]     Поиск элементов и замена в двумерном массиве #5
ну вот к примеру массив

1 2 3 4 5
2 3 4 5 6
4 5 5 9 3
6 3 4 4 4
1 2 4 5 6
тут получается 9 макс. во всем массиве над ним две строки нужно заменить на 6 так как в первом столбце 6 это максимальный элемент
тоесть получится должно вот что

6 6 6 6 6
6 6 6 6 6
4 5 5 9 3
6 3 4 4 4
1 2 4 5 6
breeve
 Аватар для breeve
73 / 73 / 14
Регистрация: 01.08.2009
Сообщений: 177
06.12.2009, 22:06     Поиск элементов и замена в двумерном массиве #6
Цитата Сообщение от ScaleS Посмотреть сообщение
ну вот к примеру массив

1 2 3 4 5
2 3 4 5 6
4 5 5 9 3
6 3 4 4 4
1 2 4 5 6
тут получается 9 макс. во всем массиве над ним две строки нужно заменить на 6 так как в первом столбце 6 это максимальный элемент
тоесть получится должно вот что

6 6 6 6 6
6 6 6 6 6
4 5 5 9 3
6 3 4 4 4
1 2 4 5 6
ну это довольно легко.. находишь максимальный элемент вот эту 9. во время того как находишь запоминаешь в какой строке находится, и записываешь в отдельную перменную далее ищешь в первом столбце макс. заменяешь все символы пока не наступит строка где находиться 9..
ScaleS
 Аватар для ScaleS
46 / 46 / 0
Регистрация: 06.12.2009
Сообщений: 68
06.12.2009, 22:11  [ТС]     Поиск элементов и замена в двумерном массиве #7
Это я понимаю=) а вот как это в коде записать,можешь подсказать?
breeve
 Аватар для breeve
73 / 73 / 14
Регистрация: 01.08.2009
Сообщений: 177
06.12.2009, 22:12     Поиск элементов и замена в двумерном массиве #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void FindMaxElement()
{
  int i,j;
  int max;
  max = a[0][0];
  imax = 0;
  jmax = 0;
  for(i = 0; i < n; i++)
    for(j = 0; j < m; j++)
     if (a[i][j] > max)
     {
      max = a[i][j];
      imax = i;
      jmax = j;
     }
}
вот здесь ты как раз сделал запоминание строки с максом.. только во первых как функция выполниться она сотрет все переменные которые ты в ней создавал.. надо передавать указатель или ссылку в функцию.. и изменять его. или сделать так чтобы ф-ия возвращала jmax. и еще зачем тебе imax тебе же главное строка а не столбец..
а насчет ссылок гоню.. не заметил глобальных переменных..

ну найти максимум в первом столбце ты сможешь я думаю.. а дальше..
ScaleS
 Аватар для ScaleS
46 / 46 / 0
Регистрация: 06.12.2009
Сообщений: 68
06.12.2009, 22:19  [ТС]     Поиск элементов и замена в двумерном массиве #9
ну как я понимаю тут ищется максимальный элемент во всём массиве,а как передать указатель?

Добавлено через 2 минуты
Цитата Сообщение от breeve Посмотреть сообщение
ну найти максимум в первом столбце ты сможешь я думаю..
вот как раз и не соображу как это сделать
breeve
 Аватар для breeve
73 / 73 / 14
Регистрация: 01.08.2009
Сообщений: 177
06.12.2009, 22:26     Поиск элементов и замена в двумерном массиве #10
Цитата Сообщение от ScaleS Посмотреть сообщение
ну как я понимаю тут ищется максимальный элемент во всём массиве,а как передать указатель?
не не не.. да ищется во всем массиве.. насчет указателя забей я просто не заметил что ты объявил как глобальные массив, н,м ..


только ты мне объясни что такое m и n?
я не понимаю зачем они задаются рандомом и во всех циклах идет условие до них?

по идеи тут:
C
1
2
3
4
5
6
7
8
9
void GenerateArray()
{
  int i, j;
  n = random(10) + 1;
  m = random(10) + 1;
  for (i = 0; i < n; i++)
    for (j = 0; j < m; j++)
     a[i][j] = random(5) + 1; 
}
должно быть так:
C
1
2
3
4
5
6
void GenerateArray()
{
  for (i = 0; i < MAXN; i++) // максн - размер строки 
    for (j = 0; j < MAXM; j++) // максм - размер столбца
     a[i][j] = random(5) + 1; 
}
Добавлено через 2 минуты
а максимум в первом столбце:
C
1
2
3
4
int max = 0; 
 for (i = 0; i < maxn; i++)
    if (max < a[i][0]) // 0 тут поскоку ты ищешь только в первом символе.. 
     max = a[i][0];
а дальше чтобы приравнять пишешь:
C
1
2
3
4
5
for (i = 0; i < jmax; i++)
  {
  for (j = 0; j < кол-во_символов_в_строке; j++) 
    a[i][j] = max_в_первом_столбце
  }
ScaleS
 Аватар для ScaleS
46 / 46 / 0
Регистрация: 06.12.2009
Сообщений: 68
06.12.2009, 22:29  [ТС]     Поиск элементов и замена в двумерном массиве #11
Цитата Сообщение от breeve Посмотреть сообщение
void GenerateArray()
{
for (i = 0; i < MAXN; i++) //т.е максн - размер строки и столбца
for (j = 0; j < MAXM; j++)
a[i][j] = random(5) + 1;
}
если так ввести то массив вообще не выводится.

а m n это число столбцов и строк
breeve
 Аватар для breeve
73 / 73 / 14
Регистрация: 01.08.2009
Сообщений: 177
06.12.2009, 22:32     Поиск элементов и замена в двумерном массиве #12
Цитата Сообщение от ScaleS Посмотреть сообщение
если так ввести то массив вообще не выводится.

а m n это число столбцов и строк
а зачем ты m и n задаешь рандомом?
смотри мои предыдущий пост. а не выводит потому что забыл я поставить:
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
убрал а поставить забыл.. Извини за дезинформацию..
manfeese
 Аватар для manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
06.12.2009, 22:34     Поиск элементов и замена в двумерном массиве #13
Цитата Сообщение от breeve Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void FindMaxElement()
{
 int i,j;
 int max;
 max = a[0][0];
 imax = 0;
 jmax = 0;
 for(i = 0; i < n; i++)
 for(j = 0; j < m; j++)
 if (a[i][j] > max)
 {
 max = a[i][j];
 imax = i;
 jmax = j;
 }
}
breeve, по-моему это неправильный код нахождения максимального и минимального элементов столбца и строки соответственно. Лучше по отдельности в разных циклах.
Либо поиск макс.элем. конкретного столбца или строки

C++
1
2
3
4
5
6
7
8
9
10
11
12
void FindMaxElement()
{
  int i,j;
  int max;
  imax=max = a[0][0];
  for(i = 0; i < n; i++)
  {
    for(j = 0; j < m; j++)
     if (a[i][j] > max)  max = a[i][j];
    if (a[i][0]>imax) imax = a[i][0];
  }
}
Добавлено через 1 минуту
Оп... Не обратил внимание, что ты индексы ищешь...
ScaleS
 Аватар для ScaleS
46 / 46 / 0
Регистрация: 06.12.2009
Сообщений: 68
06.12.2009, 22:35  [ТС]     Поиск элементов и замена в двумерном массиве #14
Цитата Сообщение от breeve Посмотреть сообщение
void GenerateArray()
{
for (i = 0; i < MAXN; i++) // максн - размер строки
for (j = 0; j < MAXM; j++) // максм - размер столбца
a[i][j] = random(5) + 1;
если это прописать то у меня массив вообще не выводится

а n m это число строк и столбцов
breeve
 Аватар для breeve
73 / 73 / 14
Регистрация: 01.08.2009
Сообщений: 177
06.12.2009, 22:37     Поиск элементов и замена в двумерном массиве #15
Цитата Сообщение от ScaleS Посмотреть сообщение
если это прописать то у меня массив вообще не выводится

а n m это число строк и столбцов
эм.. смотри выше..
ScaleS
 Аватар для ScaleS
46 / 46 / 0
Регистрация: 06.12.2009
Сообщений: 68
06.12.2009, 22:40  [ТС]     Поиск элементов и замена в двумерном массиве #16
извиняюсь сеть заглючило видать посты не отображались.

for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)

я прописал поначалу перед этим вот так
C
1
2
3
4
5
6
7
void GenerateArray()
{
int i, j;
for (i = 0; i < MAXN; i++) 
for (j = 0; j < MAXM; j++)
a[i][j] = random(5) + 1; 
}
всеравно не выводил,сейчас поставил как ты сказал тоже самое
breeve
 Аватар для breeve
73 / 73 / 14
Регистрация: 01.08.2009
Сообщений: 177
06.12.2009, 22:46     Поиск элементов и замена в двумерном массиве #17
Цитата Сообщение от ScaleS Посмотреть сообщение
извиняюсь сеть заглючило видать посты не отображались.

for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)

я прописал поначалу перед этим вот так
C
1
2
3
4
5
6
7
void GenerateArray()
{
int i, j;
for (i = 0; i < MAXN; i++) 
for (j = 0; j < MAXM; j++)
a[i][j] = random(5) + 1; 
}
всеравно не выводил,сейчас поставил как ты сказал тоже самое
что пишет?
ScaleS
 Аватар для ScaleS
46 / 46 / 0
Регистрация: 06.12.2009
Сообщений: 68
06.12.2009, 22:48  [ТС]     Поиск элементов и замена в двумерном массиве #18
просто выводит пустое окно,ошибок нет
manfeese
 Аватар для manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
06.12.2009, 22:49     Поиск элементов и замена в двумерном массиве #19
Вот рабочий вариант!
C++
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
#define MAXN 5
#define MAXM 5
 
int a[MAXN][MAXM];
int n, m;
 
void GenerateArray()
{
  int i, j;
  for (i = 0; i < MAXN; i++)
    for (j = 0; j < MAXM; j++)
     a[i][j] = random(9) + 1;
}
void FixArray()
{
  int i,j;
  int imax=0;
  int maxA = a[0][0];
  int maxF = a[0][0];
 
  for(i = 0; i < MAXN; i++)
    for(j = 0; j < MAXM; j++)
      if (a[i][j] > maxA)
        {
          maxA = a[i][j];
          imax=i;
        }
 
  for(i = 0; i < MAXN; i++)
    if(maxF<a[i][0]) maxF=a[i][0];
 
  for(i = 0; i < imax; i++)
    for(j = 0; j < MAXM; j++)
      a[i][j]=maxF;
}
 
void OutputArray()
{
 int i, j;
 for (i = 0; i < MAXN; i++)
  {
  for (j = 0; j < MAXM; j++)
    printf("%1d ", a[i][j]);
  printf("\n");
  }
  printf("\n");
}
 
int main()
{
 clrscr();
 randomize();
 GenerateArray();
 OutputArray();
 
 FixArray();
 
 OutputArray();
 getch();
 
 return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2009, 22:56     Поиск элементов и замена в двумерном массиве
Еще ссылки по теме:

C++ Замена столбцов в двумерном массиве
C++ Поиск элементов строк и столбцов в двумерном массиве
Поиск произведения нечетных отрицательных элементов в двумерном массиве. В чем ошибка? C++
C++ Поиск пиковых точек в двумерном массиве
Поиск минимума и максимума в двумерном массиве C++

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

Или воспользуйтесь поиском по форуму:
breeve
 Аватар для breeve
73 / 73 / 14
Регистрация: 01.08.2009
Сообщений: 177
06.12.2009, 22:56     Поиск элементов и замена в двумерном массиве #20
а вы на чем компилируете? я что-то даже проверить не могу.. ошибок выводит кучу..
Yandex
Объявления
06.12.2009, 22:56     Поиск элементов и замена в двумерном массиве
Ответ Создать тему
Опции темы

Текущее время: 22:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru