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

Создать функцию для создания динамического массива - C++

Восстановить пароль Регистрация
 
13oops13
1 / 1 / 0
Регистрация: 24.02.2013
Сообщений: 47
28.02.2013, 00:45     Создать функцию для создания динамического массива #1
Как создать функцию в другом заголовочном файле, которая будет создавать двумерный динамический массив.
входящие параметры такие (имя массива,переменная кол ва строк,перемен кол ва столбов)
функция сама просит ввести данные "переменная кол ва строк,перемен кол ва столбов" и затем эти пременные можно использ в мэйне(я так понимаю через указатель)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2013, 00:45     Создать функцию для создания динамического массива
Посмотрите здесь:

C++ Передача динамического массива в функцию
Передача в функцию динамического массива C++
C++ Реализовать и протестировать функцию создания двумерного динамического массива
Написать функцию для создания массива записей со сведениями о студентах C++
Разработать программу создания динамического массива с использованием функций C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
28.02.2013, 01:15     Создать функцию для создания динамического массива #2
C++
1
2
3
4
5
6
7
8
int ** alloc_matr (int _row, int _col){
    //1. создаем массив,где будем хранить указатели на массивы строк
    int **a=new int *[_row];
    //2. выделяем память под каждую строку массива
    for (int i=0; i<_row; i++)
            a[i]=new int[_col]; 
    return a;
    };
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
28.02.2013, 02:17     Создать функцию для создания динамического массива #3
C++
1
2
3
4
5
6
7
int ** alloc_matr (int _row, int _col){
    int **a=new int *[_row];
    a[0]=new int[_row*_col];
    for (int i=1; i<_row; i++)
            a[i]=a[i-1]+col;
    return a;
};
Добавлено через 2 минуты
Цитата Сообщение от 13oops13 Посмотреть сообщение
Как создать функцию в другом заголовочном файле
Лучше в заголовочных файлах писать только прототипы функций,
иначе, если этот файл будет включён в несколько *.срр файлов проекта, получишь ошибку
Linker Error: alloc_matr already defined in xxx.obj
ITcrusader
Эксперт C++
 Аватар для ITcrusader
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
28.02.2013, 08:09     Создать функцию для создания динамического массива #4
А еще лучше - не создавать такой функции
13oops13
1 / 1 / 0
Регистрация: 24.02.2013
Сообщений: 47
28.02.2013, 12:52  [ТС]     Создать функцию для создания динамического массива #5
эмм......
C++ (Qt)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
// easyClass.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <time.h>
void creat(int**mas,int* numr,int* numcol)
{
    printf("enter row and kol");
    scanf("%d %d",numr,numcol);
    mas=new int*[*numr];
    for(int i=0;i<*numr;i++)
        mas[i]=new int[*numcol];
}
void del(int**mas,int*numr)
{
    for(int i=0;i<*numr;i++)
        delete []mas[i];
    delete[]mas;
}
void ran(int**mas,int *numr,int*numc)
{
    srand(time(NULL));
    for(int i=0;i<*numr;i++)
    {
        for(int j=0;j<*numc;j++)
        {
            mas[i][j]=rand()%20;
            printf(" %3d ",mas[i][j]);
        }
        printf("\n");
    }
}
void _tmain(int argc, _TCHAR* argv[])
{
    int **mas,row,col;
    creat(mas,&row,&col);
    ran(mas,&row,&col);
    del(mas,&row);
}
что то типа этого(функции я потом сам в заголовочный файл закину)
надо исправить функцию creat
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
28.02.2013, 15:03     Создать функцию для создания динамического массива #6
Цитата Сообщение от 13oops13 Посмотреть сообщение
C++
1
void creat(int**mas,int* numr,int* numcol)
зачем передавать кол-во строк и столбцов по адресу? ты же их не меняешь, передвай по значению, если ты хочешь создать двумерный массив внутри функции, то тебе надо или не передавать указатель а создать внутри и просто его вернуть, или передать что то вроде int**& и используя его ему присвоить значение, которое тебе вернет оператор new
13oops13
1 / 1 / 0
Регистрация: 24.02.2013
Сообщений: 47
28.02.2013, 15:08  [ТС]     Создать функцию для создания динамического массива #7
просто количество строк и столбцов определяется в функции, но потом в главной функции их тоже надо использовать
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
28.02.2013, 15:11     Создать функцию для создания динамического массива #8
упс не то скопировал,
Цитата Сообщение от 13oops13 Посмотреть сообщение
C++
1
void ran(int**mas,int *numr,int*numc)
и остальные

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void creat(int**&mas,int* numr,int* numcol)
{
    printf("enter row and kol");
    scanf("%d %d",numr,numcol);
    mas=new int*[*numr];
    for(int i=0;i<*numr;i++)
        mas[i]=new int[*numcol];
}
или 
int ** creat(int* numr,int* numcol)
{
    printf("enter row and kol");
    scanf("%d %d",numr,numcol);
    mas=new int*[*numr];
    for(int i=0;i<*numr;i++)
        mas[i]=new int[*numcol];
return mas;
}
13oops13
1 / 1 / 0
Регистрация: 24.02.2013
Сообщений: 47
28.02.2013, 15:26  [ТС]     Создать функцию для создания динамического массива #9
Цитата Сообщение от aLarman Посмотреть сообщение
int**&mas
а передать как тогда массив ? так же??7 creat(mas,....)
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
28.02.2013, 15:49     Создать функцию для создания динамического массива #10
угу Вы совершенно правы
13oops13
1 / 1 / 0
Регистрация: 24.02.2013
Сообщений: 47
01.03.2013, 00:48  [ТС]     Создать функцию для создания динамического массива #11
а пояснение можно вот про это int**&mas
это что то типа 2-ного указателя на адрес?????
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2013, 10:59     Создать функцию для создания динамического массива
Еще ссылки по теме:

Создать класс для реализации динамического массива C++
Передача динамического массива в функцию C++
Передача динамического массива в функцию C++

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

Или воспользуйтесь поиском по форуму:
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
04.03.2013, 10:59     Создать функцию для создания динамического массива #12
ссылка на 2ой указатель, что бы можно было менять его значение(указателя) внутри функции, или так называемая передача параметра по ссылке
Yandex
Объявления
04.03.2013, 10:59     Создать функцию для создания динамического массива
Ответ Создать тему
Опции темы

Текущее время: 11:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru