Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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


Ответ
 
Опции темы
Старый 20.04.2009, 15:25   #1
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
Вопрос Как сделать чтобы двумерный массив который создается в функции можно было использовать в других функциях

Как сделать чтобы двумерный массив который создается в функции можно было использовать в других функциях...
Пример но не рабочий ((

Код:
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;

void form_matr(int m,int n, int** matr)
{
matr = new int*[m];
for(int i=0;i<m;i++)
 {
  matr[i] = new int[n];
  for(int j=0;j<n;j++) matr[i][j] = rand()%100;
  cout<<endl;
 }
cout<<endl;
}

void print_matr(int m,int n,int** matr)
{
for(int i=0;i<m;i++)
 {
  for(int j=0;j<n;j++)
   {
    cout.width(4);
    cout<<matr[i][j];
   }
  cout<<endl;
 }
}


int main()
{
    int **matr;
	int n,m;
    cout<<"Vvedite kolichestvo strok: ";
    cin>>m;
    cout<<"Vvedite kolichestvo stolpcov: ";
    cin>>n;
	form_matr(m,n,matr);
	print_matr(m,n,matr);
	return 1;
}
Olya90 вне форума Ответить с цитированием
Старый 20.04.2009, 15:57   #2
NotProCoder
Пользователь
 
Регистрация: 20.04.2009
Сообщений: 15
По умолчанию

Глобальная переменная... А далее возня с указателями. (было б делфи, то пример привёл бы)
NotProCoder вне форума Ответить с цитированием
Старый 20.04.2009, 16:19   #3
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
По умолчанию

эх....жаль ((
Olya90 вне форума Ответить с цитированием
Старый 20.04.2009, 17:20   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Возвращайте в функции указатель на выделенную память.
Код:
int** form_matr(int m,int n)
{
int **matr = new int*[m];
for(int i=0;i<m;i++)
 {
  matr[i] = new int[n];
  for(int j=0;j<n;j++)
    matr[i][j] = rand()%100;
 }
return matr;
}
и вызывайте так:
Код:
matr = form_matr(m,n);
И не забывайте очищать память:
Код:
for(int i=0;i<m;i++)
 delete[] matr[i];
delete[] matr;
Sazary вне форума Ответить с цитированием
Старый 20.04.2009, 17:39   #5
Goblin
Форумчанин
 
Регистрация: 24.11.2007
Сообщений: 196
По умолчанию

------------------
Goblin вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите пожалуйста, как сделать, чтобы в Edit можно было ввести цифры от 0 до 12. ciev Общие вопросы Delphi 6 14.05.2016 17:45
Как сделать, чтобы форму можно было перемещать только внутри главной формы SeregaKo Общие вопросы Delphi 7 26.03.2009 12:48
Как сделать так, чтобы форму можно было тостать не только за заголовок? Никки Общие вопросы Delphi 1 04.09.2008 13:34
Как сделать так, чтобы переключение между окнами было автоматическим? barand Свободное общение 9 07.07.2008 22:54
Подскажите, как сделать так, чтобы тест можно было повторно пройти не перезагружая пр Kamikadze_666 Помощь студентам 2 23.05.2007 01:48


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840