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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
13oops13
1 / 1 / 0
Регистрация: 24.02.2013
Сообщений: 47
#1

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

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

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

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

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

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

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

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

Передача динамического массива в функцию - C++
Добрый вечер! Пытаюсь передать динамический массив a с размером n в функцию ii, изменить его, вернуть и вывести. Но выводятся какие-то...

11
vua72
415 / 415 / 85
Регистрация: 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
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 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
Эксперт С++
176 / 162 / 8
Регистрация: 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
642 / 563 / 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
1
13oops13
1 / 1 / 0
Регистрация: 24.02.2013
Сообщений: 47
28.02.2013, 15:08  [ТС] #7
просто количество строк и столбцов определяется в функции, но потом в главной функции их тоже надо использовать
0
aLarman
642 / 563 / 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;
}
1
13oops13
1 / 1 / 0
Регистрация: 24.02.2013
Сообщений: 47
28.02.2013, 15:26  [ТС] #9
Цитата Сообщение от aLarman Посмотреть сообщение
int**&mas
а передать как тогда массив ? так же??7 creat(mas,....)
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
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
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
04.03.2013, 10:59 #12
ссылка на 2ой указатель, что бы можно было менять его значение(указателя) внутри функции, или так называемая передача параметра по ссылке
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2013, 10:59
Привет! Вот еще темы с ответами:

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

Передача динамического массива в функцию - C++
Помогите разобраться, не могу понять где ошибка. Отлаживал, программа &quot;вываливается&quot; при вызове функции освобождения памяти #include...

Передача динамического массива в функцию - C++
Скажите пожалуйста, почему при передаче динамического массива в функцию, адрес локальной переменной (b) отличается от адреса исходной...

Передача динамического массива в функцию - C++
извините мб глупый вопрос но не знаю как передать в функцию свой массив в 2 примере( в 1 примере все норм работает. void...


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

Или воспользуйтесь поиском по форуму:
12
Yandex
Объявления
04.03.2013, 10:59
Ответ Создать тему
Опции темы

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