Iloczyn elementów tablicy dwuwymiarowej

0

Witam, mój program między innymi ma za zadanie wyznaczyć iloczyn wybranego wiersza tablicy dwuwymiarowej. Przy drukowaniu wyniku owego iloczynu zawsze wychodzi 0. Wiem, że przy mnożeniu, zmienną do której będziemy zapisywać wynik należy ustawić na 1. Jak to poprawić?


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

void wczyt2D(int x, int y, int tab[x][y]);
int *obliczIlSum(int x, int y, int tab[x][y],int w, int k);

int main()
{
int u[5][5];
int v[3][3];
printf("\n Tablica u:");
wczyt2D(5,5,u);
printf("\n Tablica v");
wczyt2D(3,3,v);

int w,k;
printf("\n Wybierz wiersz:");
scanf("%d", &w);
printf("\n Wybierz kolumne:");
scanf("%d", &k);

printf("\n Dla tablicy u: ");
int *numbers;
numbers=obliczIlSum(5,5,u,w,k);
printf("\n Iloczyn elementow wybranego wiersza wynosi:%d", numbers[0]);
printf("\n SUma elementow na glownej przekatnej wynosi: %d", numbers[1]);

printf("\n DLa tablicy v");
numbers=obliczIlSum(3,3,v,w,k);
printf("\n Iloczyn elementow wybranego wiersza wynosi:%d", numbers[0]);
printf("\n SUma elementow na glownej przekatnej wynosi: %d", numbers[1]);


    return 0;
}


void wczyt2D(int x, int y, int tab[x][y])
{
    int i,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 *obliczIlSum(int x, int y, int tab[x][y],int w, int k)
{
    int i;
    int *sums;
    sums=calloc(2,sizeof(int));

    for(i=0;i<y;i++)  //liczy iloczyn elementow wybranego wiersza
    {
        sums[0]=sums[0] * tab[w][i];
    }
    for(i=0;i<x;i++)    //liczy sume elementow na przekatnej glownej
    {
        sums[1]=sums[1]+tab[i][i];
    }
    return sums;
}



0

Ustawiasz sum[0] (oraz sum[1]) na 0, poprzez calloc. Następnie robisz:

sums[0] = sums[0] * tab[w][i];

A jako że sums[0] = 0 to mnożenie daje Ci również 0.

Poza tym nigdzie nie zwalniasz pamięci przydzielonej w funkcji obliczIlSum(...).

0

No dobra, tak jest. To jak obejść ten problem?

3

Przed pętlą zmień sums[0] na 1.

1 użytkowników online, w tym zalogowanych: 0, gości: 1