Заполнение динамического массива через функцию
/////
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;
}
/////
Подскажите, (вместо последнего) через функцию?
короче, думаю, надо сделать так:
{
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, хотя хз...
Эээ.... А где тут собственно [SIZE=3]динамический массив[/SIZE]?
Ну извини, уж если не так сказал. Я только начинающий. А, кстати, как тогда это правильно называется (то что я делаю)? И что такое тогда "динамический массив"?
короче, думаю, надо сделать так:
{
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, хотя хз...
Спасибо. Только поздновато немножко :) Перездавать придеться. Сказали: "все чтоб через функции было!" :))
Ну извини, уж если не так сказал. Я только начинающий. А, кстати, как тогда это правильно называется (то что я делаю)? И что такое тогда "динамический массив"?
ага.мне тоже что-то интересно стало...
короче, думаю, надо сделать так:
{
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.
Да и пользовать лучше new.
А не подскажешь как по конкретнее. Просто одномерный массив через NEW я объявлял, а вот двумерный не получалось. Где то это должно быть так, если я не ошибаюсь:
float **a;
new **a;
new *a[j];
или как?
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.
Потом в конце удалять надо, кстати тоже в цикле :)