Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Заполнение динамического массива через функцию

2.1K
20 февраля 2006 года
AD_min
36 / / 11.02.2004
Ребят, подскажите, пожалуйста. Как мне заполнить динамический массив через функцию? Объявление массива:
/////
a=(float**)malloc(x1*sizeof(float*));
while(i<x1)
{
a=(float*)malloc(x2*sizeof(float));
i++;
}
i=0;
//////
Заполнение массива без функции:
/////
while(i<x1)
{
while(i2<x1)
{
scanf("%f",&a[i2]);
i2++;
}
i++;
i2=0;
}
/////


Подскажите, (вместо последнего) через функцию?
1.9K
21 февраля 2006 года
Anton Chik
175 / / 26.09.2005
то что ты называешь "объявлением массива" называется "выделение памяти под массив",а объявить массив ты так и не объявил...
короче, думаю, надо сделать так:
Код:
float** My_New_Massiv(int x1,int x2)
{
int i=0,i2=0;
float **a;
a =(float**)malloc(x1*sizeof(float*));
while(i<x1)
 {
  a=(float*)malloc(x2*sizeof(float));
  i++;
 }
i=0;
while(i<x1)
{
 while(i2<x1)
 {
 scanf("%f",&a[i2]);
 i2++;
 }
 i++;
 i2=0;
 }
return a;
}

main()
{
float **a;
a=My_New_Massiv(4,5);
return;
}

а вообще в таких случаях лучше юзать for вместо while, хотя хз...
585
21 февраля 2006 года
honeybeer
297 / / 06.09.2004
Эээ.... А где тут собственно [SIZE=3]динамический массив[/SIZE]?
2.1K
21 февраля 2006 года
AD_min
36 / / 11.02.2004
Цитата:
Originally posted by honeybeer
Эээ.... А где тут собственно [SIZE=3]динамический массив[/SIZE]?



Ну извини, уж если не так сказал. Я только начинающий. А, кстати, как тогда это правильно называется (то что я делаю)? И что такое тогда "динамический массив"?

2.1K
21 февраля 2006 года
AD_min
36 / / 11.02.2004
Цитата:
Originally posted by Anton Chik
короче, думаю, надо сделать так:
Код:
float** My_New_Massiv(int x1,int x2)
{
int i=0,i2=0;
float **a;
a =(float**)malloc(x1*sizeof(float*));
.
.
.

main()
{
float **a;
a=My_New_Massiv(4,5);
return;
}

а вообще в таких случаях лучше юзать for вместо while, хотя хз...



Спасибо. Только поздновато немножко :) Перездавать придеться. Сказали: "все чтоб через функции было!" :))

1.9K
22 февраля 2006 года
Anton Chik
175 / / 26.09.2005
Цитата:
Originally posted by AD_min
Ну извини, уж если не так сказал. Я только начинающий. А, кстати, как тогда это правильно называется (то что я делаю)? И что такое тогда "динамический массив"?



ага.мне тоже что-то интересно стало...

259
22 февраля 2006 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by Anton Chik

короче, думаю, надо сделать так:
Код:
float** My_New_Massiv(int x1,int x2)
{
int i=0,i2=0;
float **a;
a =(float**)malloc(x1*sizeof(float*));
while(i<x1)
 {
  a=(float*)malloc(x2*sizeof(float));
  i++;
 }
i=0;
while(i<x1)
{
 while(i2<x1)
 {
 scanf("%f",&a[i2]);
 i2++;
 }
 i++;
 i2=0;
 }
return a;
}

main()
{
float **a;
a=My_New_Massiv(4,5);
return;
}

а вообще в таких случаях лучше юзать for вместо while, хотя хз...


Если вспомнить, что malloc выделяет память одним последовательным куском, то для двумерного массива совсем необязательно городить указатель указателя. Достаточно float* arr = malloc(dim1*dim2*sizeof(float));. Да и пользовать лучше new.

2.1K
22 февраля 2006 года
AD_min
36 / / 11.02.2004
Цитата:
Originally posted by AlexandrVSmirno
Да и пользовать лучше new.



А не подскажешь как по конкретнее. Просто одномерный массив через NEW я объявлял, а вот двумерный не получалось. Где то это должно быть так, если я не ошибаюсь:
float **a;
new **a;
new *a[j];
или как?

8.7K
22 февраля 2006 года
Yellow Raven
15 / / 04.04.2005
Цитата:
Originally posted by AD_min
float **a;
new **a;
new *a[j];
или как?



float **a; //Создаём указатель на 2D массив
int i=10, j=20; //Переменные...
//Создаём массив [i x j]
a = new float*;
for (int count = 0; count <= i; count++)
a = new float[j];

Всё это в try...catch лучше бы взять. j может быть разным для каждой a.
Потом в конце удалять надо, кстати тоже в цикле :)

2.1K
24 февраля 2006 года
AD_min
36 / / 11.02.2004
спасибо :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог