IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Си Передача в функцию.., Как можно передать динамический масив в функцию
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Владислав

Репутация: -  0  +


Код
#include<stdio.h>
#include<conio.h>
//#include<alloc.h>
int a (int *** a;)

void main()
{       float N,M;
        float **a;
        unsigned int i,j,sum;
        printf("VVedit k-st elementiv A");
        scanf("%f",&N);
        printf("VVedit k-st elementiv B");
        scanf("%f",&M);
        a=(float**)malloc(N*sizeof(float*));
        for(i=0;i<N;i++)
          a[i]=(float*)malloc(M*sizeof(float));
        for(i=0;i<N;i++)
           for(j=0;j<M;j++)
           {
                printf("VVidit a[%u][%u]",i,j);
                scanf("%f",&a[i][j]);
           }
        for(i=0;i<N;i++)
                             { for(j=0;j<M;j++)

         printf("%.0f ",a[i][j]);
           puts("");
          }
          for(i=0;i<N;i++){
           for (j=0,sum=0.0;j<M;j++)
                {
                    sum += a[i][j];
                }

           printf("Summa %u ryadka=%u\n",i+1,sum);}


        for(i=0;i<N;i++)
           free(a[i]);
        free(a);

         getch();

}

Хотел бы узнать каким образом можно передать динамический масив в функцию(создать функцию для выделения памяти под двух мерный динамический масив)..Если можно поподробней...
И как Записать функцию суммы рядка..матрициsmile.gif
Зарание спасибоsmile.gif

Сообщение отредактировано: Marya -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Функции (вернее, их параметры) - они могут быть разные. Есть те, которые не будут изменяться, а есть - те, которые будут. Те, которые должны изменяться, должны передаваться через указатель. Вот тебе пример двух функций: в одной массив просто распечатывается, а в другой - вводится, обрати внимание на разницу. Кстати, на типы тоже обращай внимание, M, N должны быть целыми, а sum - вещественной...

Функцию суммирования элементов строки допишешь уже сам, я думаю smile.gif

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

void get_arr(float ***a, int M, int N)
{
int i, j;
for(i = 0; i < N; i++)
for(j = 0; j < M; j++)
{
printf("Vvidit a[%u][%u]",i, j);
scanf("%f",&((*a)[i][j]));
}
}

void print_arr(float **a, int M, int N)
{
int i, j;
for(i = 0; i < N; i++)
{
for(j = 0; j < M; j++)
printf("%.0f ",a[i][j]);
puts("");
}
}
int main()
{
int N, M;
float **a;

int i,j;
float sum;

printf("VVedit k-st elementiv A: ");
scanf("%d",&N);
printf("VVedit k-st elementiv B: ");
scanf("%d",&M);

a = (float**)malloc(N*sizeof(float*));
for(i = 0; i < N; i++)
a[i] = (float*)malloc(M * sizeof(float));

get_arr(&a, M, N);
print_arr(a, M, N);

for(i = 0; i < N; i++)
{
for(j = 0, sum = 0.0; j < M; j++)
{
sum += a[i][j];
}
printf("Summa %u ryadka=%f\n",i+1,sum);
}

for(i = 0; i < N; i++)
free(a[i]);
free(a);

getch();
return 0;
}


(тестировалось в Code::Blocks, компилятор GCC)
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 6.05.2024 8:31
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name