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

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

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

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

06.12.2009, 21:37. Просмотров 4183. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2009, 21:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск элементов и замена в двумерном массиве (C++):

Замена элементов в двумерном массиве - C++
В общем, всем здравствуйте. Проблема такая - написал код, который должен заменять элементами из верхнего синего треугольника элементы...

Поиск трех максимальных элементов в двумерном массиве - C++
не могу решить, казалось бы, простую задачку. помогите пожалуйста. В заданной целочисленной матрице a(n,n), которая инициализируется в...

Поиск элементов строк и столбцов в двумерном массиве - C++
Добрый вечер, дорогие форумчане! Имеется такая проблема. Мне необходима функция поиска элементов в двумерном массиве по строкам и...

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

Поиск самой длиной серии одинаковых элементов в двумерном массиве - C++
Помогите, нужно найти самую длинную серию одинаковых элементов в двумерном массиве.

Поиск произведения нечетных отрицательных элементов в двумерном массиве. В чем ошибка? - C++
Мне нужно сделать программу поиск произведения нечетных отрицательных элементов в двумерном массиве using namespace std;// Здесь...

22
breeve
75 / 75 / 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 ..
.. .. .. .. .. ..
какие числа надо заменить?
0
ScaleS
46 / 46 / 0
Регистрация: 06.12.2009
Сообщений: 68
06.12.2009, 21:51  [ТС] #3
да это разные,с начало должен производиться поиск по всему массиву потом только по первому столбцу

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

Добавлено через 2 минуты
сейчас у тебя получатся что максимальный это в первой строке в третьем столбце,тут тогда ничего не увеличивается. т.к выше строк уже нет
я чето просто все равно не понимаю в каком случае должен будет производиться поиск по первому столбцу..
я могу понять если допустим заменить в массиве все числа выше мах на мах..
0
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
0
breeve
75 / 75 / 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..
0
ScaleS
46 / 46 / 0
Регистрация: 06.12.2009
Сообщений: 68
06.12.2009, 22:11  [ТС] #7
Это я понимаю=) а вот как это в коде записать,можешь подсказать?
0
breeve
75 / 75 / 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 тебе же главное строка а не столбец..
а насчет ссылок гоню.. не заметил глобальных переменных..

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

Добавлено через 2 минуты
Цитата Сообщение от breeve Посмотреть сообщение
ну найти максимум в первом столбце ты сможешь я думаю..
вот как раз и не соображу как это сделать
0
breeve
75 / 75 / 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_в_первом_столбце
  }
0
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 это число столбцов и строк
0
breeve
75 / 75 / 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++)
убрал а поставить забыл.. Извини за дезинформацию..
0
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 минуту
Оп... Не обратил внимание, что ты индексы ищешь...
0
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 это число строк и столбцов
0
breeve
75 / 75 / 14
Регистрация: 01.08.2009
Сообщений: 177
06.12.2009, 22:37 #15
Цитата Сообщение от ScaleS Посмотреть сообщение
если это прописать то у меня массив вообще не выводится

а n m это число строк и столбцов
эм.. смотри выше..
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2009, 22:37
Привет! Вот еще темы с ответами:

Замена столбцов в двумерном массиве - C++
Дана матрица размера M x N. Поменять местами столбцы, содержащие минимальный и максимальный элементы матрицы.

Не происходит замена в двумерном массиве - C++
Не могу произвести замену цифр,с 0 1 2 на a b c; Подскажите в чем ошибка? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Замена строки на столбец в двумерном массиве - C++
Здравствуйте! Требуется решить задачку следующего характера: В квадратной матрице A определить номер столбца матрицы, имеющего...

Поиск числа в двумерном массиве (бинарный поиск) - C++
Произвожу поиск элемента в массиве двумя способами: линейным(последовательным) поиском и бинарным(двоичным). Первый работает на ура. Второй...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
06.12.2009, 22:37
Ответ Создать тему
Опции темы

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