Dla wiersza dostaje dostaje bardzo duży wynik, kompiluje to:
#include <stdio.h>
#include <stdlib.h>
void wczyt2D(int x, int y, int tab[x][y]);
int *computeSRC(int x, int y, int tab[x][y], int w, int k);
int main()
{
int x,y;
printf("\n Podaj ilosc wierszy [x][] tablicy:");
scanf("%d", &x);
printf("\n Podaj ilosc kolumn [][y] tablicy:");
scanf("%d", &y);
int tab[x][y];
wczyt2D(x,y,tab);
int w,k;
printf("\n Podaj numer wiersza:");
scanf("%d", &w);
printf("\n Podaj numer wybranej kolumny:");
scanf("%d", &k);
//int sumaW;
//sumaW=computeSRC(x,y,tab,w,k);
//printf("\n Suma elementow wiersza wynosi: %d", sumaW);
//int sumaK;
//sumaK=computeSRC(x,y,tab,w,k);
//printf("\n Suma elementow kolumny wynosi: %d", sumaK);
int *numbers;
numbers = computeSRC(x,y,tab,w,k);
printf("\n Suma elementow wiersza wynosi: %d", numbers[0]);
printf("\n Suma elementow kolumny wynosi: %d", numbers[1]);
free(numbers); // Zwolnienie używanego obszaru pamięci.
return 0;
}
void wczyt2D(int x, int y, int tab[x][y])
{
int i;
int j;
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
printf("\n Podaj element tablicy nr [%d][%d]:",i,j);
scanf("%d", &tab[i][j]);
}
}
}
int *computeSRC(int x, int y, int tab[x][y], int w, int k)
{
int *sums = malloc(sizeof(int) * 2);
sums[0] = sums[1] = 0;
// Albo lepiej z inicjalizacją 2 elementów do 0:
*sums = calloc(2, sizeof(int));
int i;
// Oblicz sumę wierszu w
for(i=0;i<y;i++)
{
sums[0] += tab[w][i];
}
// Oblicz sumę kolumny k
for(i=0;i<x;i++)
{
sums[1] += tab[i][k];
}
// Zwróć wskaźnik
return sums;
}