Помощь - Поиск - Пользователи - Календарь
Полная версия: Си Передача в функцию..
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Marya
Код
#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
volvo
Функции (вернее, их параметры) - они могут быть разные. Есть те, которые не будут изменяться, а есть - те, которые будут. Те, которые должны изменяться, должны передаваться через указатель. Вот тебе пример двух функций: в одной массив просто распечатывается, а в другой - вводится, обрати внимание на разницу. Кстати, на типы тоже обращай внимание, 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)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.