Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2012, 13:26   #1
Alendorff
Форумчанин
 
Аватар для Alendorff
 
Регистрация: 04.06.2011
Сообщений: 104
По умолчанию Объявить массив через функцию. (С++)

Здравствуйте. Подскажите, как самому написать функцию, которая объявляла бы двумерный динамический массив в программе?
Т.е. мне нужно передать моей функции имя создаваемого массива, число строк, число столбцов. Как передать имя? Как будет выглядеть получившаяся функция? Спасибо.
Alendorff вне форума Ответить с цитированием
Старый 19.02.2012, 15:28   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так подойдет?: http://www.programmersforum.ru/showp...4&postcount=27
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.02.2012, 15:33   #3
Alendorff
Форумчанин
 
Аватар для Alendorff
 
Регистрация: 04.06.2011
Сообщений: 104
По умолчанию

Ммм... Прикольно, но нет желания держать параметры матрицы внутри неё же. Выглядит сложно =(
И я про имя так и не понял. Нужно указать имя, размерность и получить матрицу с указанными именем и размерностью.
Alendorff вне форума Ответить с цитированием
Старый 19.02.2012, 15:40   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

ИМХО в твоем случае тогда стоит сделать на ООП...
Каждая матрица - объект с полем name в качестве имени.
Ну и менеджер матриц, хранящий в себе список этих объектов, и выбирающий по имени...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.02.2012, 15:49   #5
Alendorff
Форумчанин
 
Аватар для Alendorff
 
Регистрация: 04.06.2011
Сообщений: 104
По умолчанию

На ООП... хм, нам ничего такого ещё не рассказывали )
Может не использовать функции вообще...
Вот именно проблема с именем матрицы - допустим нужны в программе 3 разных матрицы... хочется иметь функции для объявления/ввода/вывода матриц, но упираюсь в то, чтобы это получились именно 3 разных матрицы с 3 разными именами типа A, B, C... Хм...
Alendorff вне форума Ответить с цитированием
Старый 19.02.2012, 16:05   #6
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Мммм... а вы уверены, что вы не усложняете задание?
Думаю, от вас хотят функцию, которая принимает только размерность массива и возвращает созданный массив. А вызов ее будет такой:
массив_A = ваша_функция(размерность_х, размерность_у);
массив_Б = ваша_функция(размерность_х, размерность_у);
массив_В = ваша_функция(размерность_х, размерность_у);
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 19.02.2012, 16:35   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Кстати да, я тоже думаю что насчет имени это ты накрутил... Согласен с Лерой, врядли препод настолько хочет загнобить тебя...
Впрочем... Если без ООП то опиши структуру типа:
Код:
struct matrix{
 char name[255];
 int **array;
}
И будет тебе именованная матрица.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.02.2012, 18:26   #8
Alendorff
Форумчанин
 
Аватар для Alendorff
 
Регистрация: 04.06.2011
Сообщений: 104
По умолчанию

Ну на самом деле, да, накрутил ) Просто стало интересно...
Цитата:
массив_A = ваша_функция(размерность_х, размерность_у);
массив_Б = ваша_функция(размерность_х, размерность_у);
А можно конкретный пример, пожалуйста?
Alendorff вне форума Ответить с цитированием
Старый 19.02.2012, 18:47   #9
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

ууу... можно, только просьба не принимать мои слова за истину - два года на Си не писала...

Код:
#include <iostream>
#include <Ctime>
using namespace std;

int ** func(int n, int m);
void print(int n, int m, int** arr);

int main()
{
	srand(time(0));
	int** a = func(5, 6);
	int** b = func(1, 4);
	int** c = func(3, 7);

	cout<<"first array"<<endl;
	print(5, 6, a);

	cout<<"second array"<<endl;
	print(1, 4, b);

	cout<<"third array"<<endl;
	print(3, 7, c);

	getchar();
	return 0;
}

// создание массива заданной размерности и заполнение рандомными числами от 0 до 10
int ** func(int n, int m)
{
	int ** arr = new int*[n];
	for(int i = 0; i < n; i++){
		arr[i] = new int[m];
		for(int j = 0; j < m; j++){
			arr[i][j] = rand() % 10; 
		}
	}
	return arr;
}

// распечатка массива
void print(int n, int m, int** arr){
	for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cout<<arr[i][j]<<" ";
		}
        cout<<endl;
    }
}
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать

Последний раз редактировалось ACE Valery; 19.02.2012 в 18:50.
ACE Valery вне форума Ответить с цитированием
Старый 19.02.2012, 18:58   #10
Alendorff
Форумчанин
 
Аватар для Alendorff
 
Регистрация: 04.06.2011
Сообщений: 104
По умолчанию

Большое Вам спасибо
Alendorff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
объявить массив 5на5. 3аполнить массив '0' Sylar9 Общие вопросы C/C++ 9 31.12.2011 16:44
Как правильно объявить и определить функцию? -ushёl- Общие вопросы C/C++ 0 14.06.2010 13:30
Как правильно инициализировать через функцию массив? Catharsis Общие вопросы C/C++ 3 14.05.2010 16:34
Как лучше объявить функцию? Иллидан Общие вопросы C/C++ 1 20.05.2008 14:31
как в процедуре объявить массив? kolduev Помощь студентам 7 18.02.2008 23:35