Witam wszystkich. Mam problem z otrzymaniem prawidłowego wyniki zwracanego przez funkcję "compute3". Ma ona sumować ilość elementów tablicy, które posiadają wartości większe od zadanej wartości (przekazanej jako argument). W moim kodzie dla tej funkcji uzyskuje niepoprawny wynik. Proszę o pomoc. W jaki sposób przerobić kod aby te wszystkie funkcje (compute1, compute2 i compute3) utworzyć jako jedna funkcja?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int wartosc=3;
int i;
int n=9;
int *tab[n];
for(i=0;i<n;i++) // dynamiczna alokacja pamieci
tab[i]=calloc(n,sizeof(int));
// int tab[n];
wczyt1D(tab,n);
for(i=0;i<n;i++)
printf("\n Element tablicy nr %d wynosi: %d",i,tab[i]);
int sumaDodatnich;
sumaDodatnich=compute1(tab,n);
printf("\n Suma elementow dodatnich wynosi: %d",sumaDodatnich);
int iloscParzystych;
iloscParzystych=compute2(tab,n);
printf("\n Ilosc elementow parzystych wynosi: %d", iloscParzystych);
int iloscLiczbWieksz;
iloscLiczbWieksz=compute3(tab,n,wartosc);
printf("\n Ilosc liczb wiekszych od zadanej wartosci wynosi: %d", iloscLiczbWieksz);
return 0;
}
void wczyt1D(int tab[], int n)
{
int i;
for(i=0;i<n;i++)
{
printf("\n Podaj element tablicy nr %d:",i);
scanf("%d", &tab[i]);
}
}
int compute1(int tab[],int n)
{
int sumaD=0;
int iloscParz=0;
int i;
for(i=0;i<n;i++)
{
if(tab[i]>0) sumaD=sumaD+tab[i];
}
return sumaD;
}
int compute2(int tab[],int n)
{
int iloscParz=0;
int i;
for(i=0;i<n;i++)
{
if(tab[i]%2==0) iloscParz=iloscParz+1;
}
return iloscParz;
}
int compute3(int tab[],int n,int x)
{
int i;
int lWieksze;
for(i=0;i<n;i++)
{
if(tab[i]>x) lWieksze=lWieksze+1;
}
return lWieksze;
}