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

Return многомерного массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сортировка массива методом пузырька http://www.cyberforum.ru/cpp-beginners/thread1187435.html
Доброго времени суток уважаемые форумчане. Столкнулся с такой проблемой, не знаю как её решить. Суть задачи такова: Нужно реализовать функции: void max(int* tab) // загоняет в массив цифры по возрастанию void min(int* tab) // по убыванию void bubble(int* tab) Первые две функции заполняют массив значениями в соответствующем порядке. (по возрастанию: 0, 1, 2...n-1; по убыванию: n-1, n-2,...,...
C++ Функция находит в строке первый символ, который не входит в другую строку Нужно написать собственную функцию, которая находит в строке первый символ, который не входит в другую заданную строку. Есть код, но работает не очень. Если ввести: 1 строка "малая рама" и 2 строка "малая рана" то он выведет символ "м", а символ "м", входит в строку:( Вообще функция сравнения, сделана не правильно, как переделать не знаю:( Помогите пожалуйста... #include <iostream> #include... http://www.cyberforum.ru/cpp-beginners/thread1187428.html
C++ Даны целые числа a1…a10, целочисленная квадратная матрица порядка n
Даны целые числа a1…a10, целочисленная квадратная матрица порядка n. Заменить нулями в матрице те элементы с четной суммой индексов, для которых имеются равные среди a1…a10. Помогите написать код, пожалуйста. Добавлено через 1 час 17 минут Уже не нужно, сам написал уже.
Ошибка "Debug Assertion Failed" C++
Привет всем. Я практикуюсь в работе с файлами. Решил написать простенькую программу для вывода суммы двух чисел. Но программа выдает ошибку "Debug Assertion Failed". Что я должен исправить в коде? #include <stdio.h> #include <conio.h> int main() { int n,m; FILE *c; FILE *d;
C++ Прокомментировать код http://www.cyberforum.ru/cpp-beginners/thread1187418.html
#include <iostream> #include <cstring> #include <cstdio> using namespace std; const int maxnode = 4010*100; const int sigma_size = 26; const int MAXN = 300010; const int MOD = 20071027;
C++ Удалить из массива первое простое число, Создать функции для определения максимума простого числа в массиве вещественных чисел найти элемент , превышающий его среднее арифметическое значение если таких элементов несколько , определить их количество . Удалить из массива первое простое число . Создать функции для определения максимума простого числа подробнее

Показать сообщение отдельно
Юрий77
0 / 0 / 0
Регистрация: 23.04.2015
Сообщений: 2
23.04.2015, 22:09     Return многомерного массива
Ну хоть кто нибудь сказал как возвращать многомерный массив,
Ну сколько можно мучить эту тему, замучили со своими указателями, инициализациями...
Вот как правильно возвращать многомерный массив на примере двумерного:

C++
1
2
3
4
5
6
7
8
9
10
11
12
int (*getArr())[10]
{
   static int arr[10][10];
   return arr;
}
int main()
{
   int (*arr2)[10];
   arr2=getArr();
   //example of use
   cout << arr2[1][5];
}
Вот и вся мудрость, и не надо говорить, что массивы из функции не возвращаются.

Добавлено через 2 часа 7 минут
Не вводите в заблуждение ни себя ни других пользователей, если точно не уверены в ответе.
В массиве будь он одномерный или многомерный в качестве данных не содержатся указатели.

Самый первых элемент массива указывает на начало сплошного потока данных, например int.
Число элементов массива будет равна произведению размерностей массива друг на друга.
Размерности массива указываются только для компилятора и Вашего удобства.
Когда Вы инициализируете размерности для массива, то компилятор запоминает эти данные.
Далее, при попытке доступа к данным, компилятор отсчитывает от самого начала массива
число равное смещению на примере покажу:
int arr[measure1][measure2][measure3], допустим cout << arr[1][2][3];

смещение данных будет: 1 * measure2 * measure3 + 2 * measure3 + 3;
можете убедиться :
получаем указатель на первый элемент int* arrPtr = &arr[0][0][0];
прибавляем к нему вычисленное смещение arrPtr+=1 * measure2 * measure3 + 2 * measure3 + 3;
заносим в массив данные arr[1][2][3]=5;
и получаем значение из указателя, полученного выше cout<< *arrPtr;
Таким образом все указатели идут в массиве один за другим без разбиения.
На самом нижнем уровне массивы и не существуют вовсе.
 
Текущее время: 21:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru