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

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

Войти
Регистрация
Восстановить пароль
 
Гамбит
14 / 14 / 1
Регистрация: 19.10.2009
Сообщений: 93
#1

Использование возвращенного двумерного массива. - C++

18.05.2011, 15:33. Просмотров 560. Ответов 11
Метки нет (Все метки)

Доброго времени суток. Проблема такая.


int *roc(int a[n][n])
{
//тут преобразования
return *a;
}

void main
{
int *p=roc(a);
вопрос. Как через указатель р обратится к любому элементу матрицы?
типо p[1][2]=(но это не работает)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2011, 15:33     Использование возвращенного двумерного массива.
Посмотрите здесь:

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

Обработка двумерного массива с использование пользовательских функций - C++
Помогите пожалуйста не могу понять в чем дело 1.Консольный ввод/вывод вещественного массива размером 5*5. 2.Определение номера первого...

залить из двумерного массива данные в одномерный длиной, равной количеству всех элементов исходного массива - C++
Доброго времени суток :) Образовался новый глупый вопрос... Предположим у меня есть двухмерный массив: vertex** massiv() { ...

В чем отличие двумерного массива типа char от массива указателей на char? - C++
В чем отличие двумерного массива типа char и массива указателей на char ?

Транспозиция двумерного массива - C++
Мне надо поменять местами строку с столбцом,транспозиция!Помогите!

Сортировка двумерного массива - C++
25) В каждой строке матрицы A(n, n) найти наибольший элемент и поменять его местами с соответствующим диагональным элементом. #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
while(i)k++
48 / 48 / 5
Регистрация: 13.08.2010
Сообщений: 160
18.05.2011, 15:43     Использование возвращенного двумерного массива. #2
Цитата Сообщение от Гамбит Посмотреть сообщение
nt *roc(int a[n][n])
- тут ты возвращаеш одномерный масив, возвращай двохмерный
int **roc(int a[n][n])
{
//тут преобразования
return a;
}
void main
{
int **p=roc(a);
вопрос. Как через указатель р обратится к любому элементу матрицы?
типо p[1][2]=(работает)
Гамбит
14 / 14 / 1
Регистрация: 19.10.2009
Сообщений: 93
18.05.2011, 16:13  [ТС]     Использование возвращенного двумерного массива. #3
Цитата Сообщение от while(i)k++ Посмотреть сообщение
- тут ты возвращаеш одномерный масив, возвращай двохмерный
int **roc(int a[n][n])
{
//тут преобразования
return a;
}
void main
{
int **p=roc(a);
вопрос. Как через указатель р обратится к любому элементу матрицы?
типо p[1][2]=(работает)
Во-первых у меня программа возвращает двумерный массив. Проверено.
Во-вторых ваш вариант не работает.
В-третьих вопрос был в другом
while(i)k++
48 / 48 / 5
Регистрация: 13.08.2010
Сообщений: 160
18.05.2011, 19:38     Использование возвращенного двумерного массива. #4
Цитата Сообщение от Гамбит Посмотреть сообщение
Во-первых у меня программа возвращает двумерный массив. Проверено.
- int* это одномерный масив, провеверено но вопреки синтаксису

Цитата Сообщение от Гамбит Посмотреть сообщение
Во-вторых ваш вариант не работает.
- значит проблема в чем то другом не предоставленом вами в посте

Цитата Сообщение от Гамбит Посмотреть сообщение
В-третьих вопрос был в другом
- неужели?

если у вас p типа int** то это матрица, p[1][2] лиш сахар для *(*(p+1))+2)
матрица это указатель на указатель p+1 увеличивает указатель на 1, тоисть перемещается на одну ечейку памяти, в которой указатель на начало блока памяти масива интов, розыменовывая ечейку *-кой мы получаем этот указатель, прибавив к нему 2 мы передвигаемся уже в текущем масиве по памяти, розыменовав ище раз мы получаем интовое значение которое там лежит

но у вас тип int* тоисть просто масив в итоге p[1][2] равносильно взять второй элемент масива и увеличить его на 2, думаю не совсем то что вам нада

P.S. ваше алгоритмическое ехидство есть признаком вашей не политкоректности в высказываниях, впреть постарайтесь проявлять уважение
Гамбит
14 / 14 / 1
Регистрация: 19.10.2009
Сообщений: 93
18.05.2011, 20:42  [ТС]     Использование возвращенного двумерного массива. #5
Цитата Сообщение от while(i)k++ Посмотреть сообщение
- int* это одномерный масив, провеверено но вопреки синтаксису

- значит проблема в чем то другом не предоставленом вами в посте

- неужели?

если у вас p типа int** то это матрица, p[1][2] лиш сахар для *(*(p+1))+2)
матрица это указатель на указатель p+1 увеличивает указатель на 1, тоисть перемещается на одну ечейку памяти, в которой указатель на начало блока памяти масива интов, розыменовывая ечейку *-кой мы получаем этот указатель, прибавив к нему 2 мы передвигаемся уже в текущем масиве по памяти, розыменовав ище раз мы получаем интовое значение которое там лежит

но у вас тип int* тоисть просто масив в итоге p[1][2] равносильно взять второй элемент масива и увеличить его на 2, думаю не совсем то что вам нада

P.S. ваше алгоритмическое ехидство есть признаком вашей не политкоректности в высказываниях, впреть постарайтесь проявлять уважение
на return a; выскакивает ошибка Cannot convert ' int[5] *' to ' int**'
while(i)k++
48 / 48 / 5
Регистрация: 13.08.2010
Сообщений: 160
18.05.2011, 21:09     Использование возвращенного двумерного массива. #6
какой компилятор?
Гамбит
14 / 14 / 1
Регистрация: 19.10.2009
Сообщений: 93
18.05.2011, 21:13  [ТС]     Использование возвращенного двумерного массива. #7
борланд с++ версия 3.1
while(i)k++
48 / 48 / 5
Регистрация: 13.08.2010
Сообщений: 160
18.05.2011, 21:19     Использование возвращенного двумерного массива. #8
ок, ща на роботе, нет компилятора, дома посмотрю

борланд с++ версия 3.1 - под ДОС такой синий интэрфейс?
Гамбит
14 / 14 / 1
Регистрация: 19.10.2009
Сообщений: 93
18.05.2011, 23:15  [ТС]     Использование возвращенного двумерного массива. #9
он самый

Добавлено через 1 час 53 минуты
ну почему эта ошибка вылезает?????
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
19.05.2011, 04:00     Использование возвращенного двумерного массива. #10
p[i*j_size+j]
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
19.05.2011, 04:08     Использование возвращенного двумерного массива. #11
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#define N 10
 
typedef int Arrnn_t[N][N];
typedef int (*ArrnnPtr_t)[N];
 
ArrnnPtr_t roc(Arrnn_t a)
{
    ;
    return a;
}
 
int main(void)
{
    Arrnn_t a;
    ArrnnPtr_t p = roc(a);
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2011, 10:33     Использование возвращенного двумерного массива.
Еще ссылки по теме:

Формирование двумерного массива - C++
массив данных А размерностью M на N задан пользователем с клавиатуры вместе с параметром M и N. Кроме того задан одномерный массив P...

Заполнение двумерного массива - C++
Есть простой код, но он не работает. Выскакивает сообщение о необработанном исключении. Типо обращение к недоступному участку памяти void...

Обработка двумерного массива - C++
Сформировать массив из столбца с максимальным произведением элементов Добавлено через 51 минуту 5 задач решил, а на этой мозги кипят...

Преобразование двумерного массива - C++
Есть массив: 1 4 5 7 6 4 5 3 7 8 2 7 4 1 3 4 5 6 9 1 3 2 6 8 5 На выходе получится: 7 0 0 4 0 8 7 0 4 3 7 4 3 2 1


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

Или воспользуйтесь поиском по форуму:
Гамбит
14 / 14 / 1
Регистрация: 19.10.2009
Сообщений: 93
19.05.2011, 10:33  [ТС]     Использование возвращенного двумерного массива. #12
эх а делов то было......в общем ответ такой. просто обращаться к р как к одномерному масииву.=)
Всем спасибо за помощь.
Yandex
Объявления
19.05.2011, 10:33     Использование возвращенного двумерного массива.
Ответ Создать тему
Опции темы

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