Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
13oops13
1 / 1 / 0
Регистрация: 24.02.2013
Сообщений: 47
#1

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

28.02.2013, 00:45. Просмотров 1007. Ответов 11
Метки нет (Все метки)

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

Реализовать и протестировать функцию создания двумерного динамического массива
Ребята , помогите решить задачу : Реализовать и протестировать функцию...

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

Создать класс для реализации динамического массива
Доброго времени суток! Помогите создать класс который реализует динамический...

Написать функцию для создания массива записей со сведениями о студентах
Определить средний возраст студентов n курса. знаю, что мало кто сможет...

Разработать программу создания динамического массива с использованием функций
Разработать программу создания массива с использованием функций Элементы...

11
vua72
417 / 417 / 166
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
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;
    };
0
Kuzia domovenok
2261 / 2030 / 459
Регистрация: 25.03.2012
Сообщений: 7,173
Записей в блоге: 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
0
ITcrusader
Эксперт С++
177 / 163 / 21
Регистрация: 12.02.2013
Сообщений: 410
28.02.2013, 08:09 #4
А еще лучше - не создавать такой функции
0
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
0
aLarman
644 / 565 / 164
Регистрация: 13.12.2012
Сообщений: 2,112
Завершенные тесты: 1
28.02.2013, 15:03 #6
Цитата Сообщение от 13oops13 Посмотреть сообщение
C++
1
void creat(int**mas,int* numr,int* numcol)
зачем передавать кол-во строк и столбцов по адресу? ты же их не меняешь, передвай по значению, если ты хочешь создать двумерный массив внутри функции, то тебе надо или не передавать указатель а создать внутри и просто его вернуть, или передать что то вроде int**& и используя его ему присвоить значение, которое тебе вернет оператор new
1
13oops13
1 / 1 / 0
Регистрация: 24.02.2013
Сообщений: 47
28.02.2013, 15:08  [ТС] #7
просто количество строк и столбцов определяется в функции, но потом в главной функции их тоже надо использовать
0
aLarman
644 / 565 / 164
Регистрация: 13.12.2012
Сообщений: 2,112
Завершенные тесты: 1
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;
}
1
13oops13
1 / 1 / 0
Регистрация: 24.02.2013
Сообщений: 47
28.02.2013, 15:26  [ТС] #9
Цитата Сообщение от aLarman Посмотреть сообщение
int**&mas
а передать как тогда массив ? так же??7 creat(mas,....)
0
aLarman
644 / 565 / 164
Регистрация: 13.12.2012
Сообщений: 2,112
Завершенные тесты: 1
28.02.2013, 15:49 #10
угу Вы совершенно правы
1
13oops13
1 / 1 / 0
Регистрация: 24.02.2013
Сообщений: 47
01.03.2013, 00:48  [ТС] #11
а пояснение можно вот про это int**&mas
это что то типа 2-ного указателя на адрес?????
0
aLarman
644 / 565 / 164
Регистрация: 13.12.2012
Сообщений: 2,112
Завершенные тесты: 1
04.03.2013, 10:59 #12
ссылка на 2ой указатель, что бы можно было менять его значение(указателя) внутри функции, или так называемая передача параметра по ссылке
0
04.03.2013, 10:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2013, 10:59

Передача динамического массива в функцию
Скажите пожалуйста, почему при передаче динамического массива в функцию, адрес...

Передача динамического массива в функцию
У меня задача передать в функцию в качестве параметра динамический 2-хмерный...

Передача в функцию динамического массива
Всем привет. Есть, например, функция, работающая с динамическим массивом....


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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