#include <stdlib.h>
#include <stdio.h>
#define FOR(i, end) for ((i) = 0; (i) < (end); ++(i))
float **utworz_macierz(int w, int k)
{
float **m;
int i;
m
= (float **) malloc(w
* sizeof(float*)); if(m == NULL) return NULL;
for(i=0 ; i<w ; i++)
{
m
[i
] = (float *) malloc(k
*sizeof(float)); if(m[i]==NULL)
{
/* sprzatanie juz przydzielonej pamieci */
zwolnij_macierz(m,i);
return NULL;
}
}
return m;
}
void wyswietl_macierz(float **m,int w,int k)
{
int i,j;
for(i=0 ; i<w ; i++)
{
for(j=0 ; j<k ; j++)
printf(" %6.1f", *(*(m
+i
)+j
) ); }
}
float** wczytaj_macierz(float **m,int w,int k)
{
int i,j;
for(i=0 ; i<w ; i++)
{
for(j=0 ; j<k ; j++)
{
}
}
return m;
}
void zwolnij_macierz(float **m, int w)
{
while(--w
> 0) free(*(m
+w
)); }
void LiczSrednia( float **m,int w, int k, float srednia, int suma)
{
int i, j;
suma=0;
FOR(i, w)
FOR(j, k)
suma = suma + m[i][j];
srednia = (float ) suma/(w*k);
printf("Suma elementow: %d\n",suma
); printf("Srednia arytmetyczna: %f\n\n",srednia
); }
int main(int argc, char** argv)
{
float **m, srednia;
int w, k, suma;
printf("Podaj wymiary macierzy:"); m = utworz_macierz(w,k);
wyswietl_macierz(wczytaj_macierz(m,w,k),w,k);
LiczSrednia(m, w, k, srednia, suma);
zwolnij_macierz(m,w);
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KIAojZGVmaW5lIEZPUihpLCBlbmQpIGZvciAoKGkpID0gMDsgKGkpIDwgKGVuZCk7ICsrKGkpKSAKIApmbG9hdCAqKnV0d29yel9tYWNpZXJ6KGludCB3LCBpbnQgaykKewogICBmbG9hdCAqKm07CiAgIGludCBpOwogICBtID0gKGZsb2F0ICoqKSBtYWxsb2ModyAqIHNpemVvZihmbG9hdCopKTsKICAgaWYobSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKICAgZm9yKGk9MCA7IGk8dyA7IGkrKykKICAgewogICAgICBtW2ldID0gKGZsb2F0ICopIG1hbGxvYyhrICpzaXplb2YoZmxvYXQpKTsKICAgICAgaWYobVtpXT09TlVMTCkKICAgICAgewogICAgICAgICAvKiAgc3ByemF0YW5pZSBqdXogcHJ6eWR6aWVsb25laiBwYW1pZWNpICovCiAgICAgICAgIHp3b2xuaWpfbWFjaWVyeihtLGkpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgfQogICB9CiAgIHJldHVybiBtOwp9CiAKdm9pZCB3eXN3aWV0bF9tYWNpZXJ6KGZsb2F0ICoqbSxpbnQgdyxpbnQgaykKewogICBpbnQgaSxqOwogICBmb3IoaT0wIDsgaTx3IDsgaSsrKQogICB7CiAgICAgIGZvcihqPTAgOyBqPGsgOyBqKyspCiAgICAgICAgIHByaW50ZigiICU2LjFmIiwgKigqKG0raSkraikgKTsKICAgICAgcHJpbnRmKCJcbiIpOwogICB9Cn0KIApmbG9hdCoqIHdjenl0YWpfbWFjaWVyeihmbG9hdCAqKm0saW50IHcsaW50IGspCnsKICAgaW50IGksajsKICAgZm9yKGk9MCA7IGk8dyA7IGkrKykKICAgewogICAgICBmb3Ioaj0wIDsgajxrIDsgaisrKQogICAgICB7CiAgICAgICAgIHByaW50ZigiIFslZCwlZF0gPSAiLCBpLGopOwogICAgICAgICBzY2FuZigiJWYiLCoobStpKStqKTsKICAgICAgfQogICB9CiAgIHJldHVybiBtOwp9CiAKdm9pZCB6d29sbmlqX21hY2llcnooZmxvYXQgKiptLCBpbnQgdykKewogICAgd2hpbGUoLS13ID4gMCkgZnJlZSgqKG0rdykpOwogICBmcmVlKG0pOwp9Cgp2b2lkIExpY3pTcmVkbmlhKCBmbG9hdCAqKm0saW50IHcsIGludCBrLCBmbG9hdCBzcmVkbmlhLCBpbnQgc3VtYSkKewogICAgaW50IGksIGo7CiAgICBzdW1hPTA7CiAgICBGT1IoaSwgdykKICAgICAgICBGT1IoaiwgaykKICAgICAgICAgICAgc3VtYSA9IHN1bWEgKyBtW2ldW2pdOwogICAgc3JlZG5pYSA9IChmbG9hdCApIHN1bWEvKHcqayk7CiAgICBwcmludGYoIlN1bWEgZWxlbWVudG93OiAlZFxuIixzdW1hKTsKICAgIHByaW50ZigiU3JlZG5pYSBhcnl0bWV0eWN6bmE6ICVmXG5cbiIsc3JlZG5pYSk7Cn0KIAppbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCnsKICAgZmxvYXQgKiptLCBzcmVkbmlhOwogICBpbnQgdywgaywgc3VtYTsKICAgcHJpbnRmKCJQb2RhaiB3eW1pYXJ5IG1hY2llcnp5OiIpOwogICBzY2FuZigiJWQgJWQiLCZ3LCZrKTsKICAgbSA9IHV0d29yel9tYWNpZXJ6KHcsayk7CiAgIHd5c3dpZXRsX21hY2llcnood2N6eXRhal9tYWNpZXJ6KG0sdyxrKSx3LGspOwogICBMaWN6U3JlZG5pYShtLCB3LCBrLCBzcmVkbmlhLCBzdW1hKTsKICAgendvbG5pal9tYWNpZXJ6KG0sdyk7Cn0K