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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 108, средняя оценка - 4.74
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,137
#1

Передача двумерного массива в функцию - C++

24.09.2011, 13:08. Просмотров 14651. Ответов 13
Метки нет (Все метки)

Здравствуйте, появился новый вопрос на тему указателей: как передать двумерный массив в функцию ну и для проверки модифицировать его.
Написал следующую программу:

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
#include <iostream.h>
#include <conio.h>
 
void matSqr (int*, int);
 
main ()
{
   int b[10][10];
   int a = 2;
 
   matSqr(b, a);
 
   for (int i = 0; i < a; i++)
      for (int j = 0; j < a; j++)
     cout << b[i][j] << ' ';
 
   getch();
 
   cout << endl << endl;
 
   return 0;
}
 
void matSqr (int (*xPtr)[10], int n)
{
   for (int i = 0; i < n; i++)
      for (int j = 0; j < n; i++)
     xPtr[i][j] *= 2;
}
Компилер "Cannot convert 'int[10] *' to 'int *'". Битый час бьюсь, но исправить не могу. Пожалуйста, объясните чайнику что к чему, ну и в общем как передаются 2 мерные и >мерные массивы в функции.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2011, 13:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача двумерного массива в функцию (C++):

Передача двумерного массива в функцию - C++
Доброго времени суток, форумчане. Столкнулся с проблемой передачи двумерного массива (матрицы) по указателю в функцию. Подскажите?...

Передача в функцию двумерного массива - C++
Доброго времени суток. Есть двумерный массив, размерностью n на m. Нужно передать его в качестве параметра в функцию 1) обычным способом 2)...

Передача двумерного массива в функцию - C++
в функцию set_ships передаю массив human, появляется ошибка cannot convert `int (*)' to `int**' for argument `1' to `void set_ships(int**)'...

Передача двумерного массива в функцию - C++
проблема в том что в функция inicil не изменяет похожу массива, и в output выводятся нелепые числа... #include &lt;iostream&gt; #include...

Передача двумерного массива в функцию - C++
Доброго времени суток. Как можно передать двумерный массив в функцию? Допустим есть функция: void filingMatrix(??). Пробовал сделать: ...

Передача двумерного массива в функцию - C++
Даны две квадратные матрицы nxn. Напечатать ту из них, которая имеет минимальный “след” (т.е. сумму элементов главной диагонали). При...

13
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
24.09.2011, 13:14 #2
C++
1
void matSqr(int **xPtr, int n)
Добавлено через 45 секунд
В догонку: что за бред у вас в 29 строчке?

Добавлено через 31 секунду
Ну и про поиск по форуму не забываем, тема поднималась не один раз.

Добавлено через 1 минуту
И зачем в функции matSqr n присваивается значение 1, а передается 2?
1
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
24.09.2011, 13:18 #3
soon,
C
1
void matSqr(int **xPtr, int n)
для статических массивов работать не будет, попробуйте скомпилить:
C
1
2
int a[10][10], **p;
p = a;
1
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,137
24.09.2011, 13:24  [ТС] #4
SOON, thanks, бред исправил, просто моей главной задачей была передеча двумерного массива, а всё остальное потом. Исправил, ошибку всё равно выдаёт, только другую. Указывает на место вызова функции. Как изменить вызов функции? Что точно передать? Если вас не затруднит: расскажите об этом поподробнее плиз.
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
24.09.2011, 13:24 #5
dimcoder, замените прототип matSqr на
C
1
void matSqr(int (*)[10], int);
1
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
24.09.2011, 13:26 #6
Действительно. Я больше динамические использовал.
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
24.09.2011, 13:26 #7
и в 27 строке for (int j = 0; j < n; i++) не i++ а j++
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,137
24.09.2011, 13:31  [ТС] #8
Цитата Сообщение от Net_Wanderer Посмотреть сообщение
dimcoder, замените прототип matSqr на
C
1
void matSqr(int (*)[10], int);
Заменил. ОШИПКА! На что конкретно заменить вызов функции? Я пишу: matSqr(b, a);
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
24.09.2011, 13:33 #9
Цитата Сообщение от dimcoder Посмотреть сообщение
Заменил. ОШИПКА! На что конкретно заменить вызов функции? Я пишу: matSqr(b, a);
Текст ошибки?
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
24.09.2011, 13:35 #10
Не вызов(про него вообще ни слова не было), а прототип, в вашем коде он находится в строке #4, строку #24 оставьте как в вашем первом посте.
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,137
24.09.2011, 13:45  [ТС] #11
YAHOOOOOO! Спасибо!
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
24.09.2011, 13:47 #12
Массив не инициализирован, в строке
C
1
xPtr[i][j] *= 2;
xPtr[i][j] содержит мусор который умножается на два, так что результат непредсказуем.
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,137
24.09.2011, 13:59  [ТС] #13
Цитата Сообщение от Net_Wanderer Посмотреть сообщение
Массив не инициализирован, в строке
C
1
xPtr[i][j] *= 2;
xPtr[i][j] содержит мусор который умножается на два, так что результат непредсказуем.
Да, не инициализирован, я этим сейчас и занимаюсь. В общем, не проблема!
0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
24.09.2011, 14:37 #14
Цитата Сообщение от dimcoder Посмотреть сообщение
как передать двумерный массив в функцию ну и для проверки модифицировать его
Вот так(1-ый вариант)
0
24.09.2011, 14:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2011, 14:37
Привет! Вот еще темы с ответами:

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

Передача двумерного массива в функцию - C++
Здравствуйте! Написала код для передачи двумерного массива в функцию: #include &lt;iostream&gt; #include &lt;locale.h&gt; #include...

Передача двумерного массива в функцию - C++
Как я знаю, имя массива и указателя тождественны в С++. Из этого следует, что можно инициализировать указатель, а работать с ним, как с...

Передача двумерного массива в функцию. - C++
Требуется написать функцию которая бы слагала и умножала матрицы. Для этого Я завел двумерный динамический массив, а вот с передачей его в...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

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