[C] Średnia arytmetyczna kolumn w tablicy dynamicznej.

darnok662
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 17 lis 2011, o 12:44
Płeć: Mężczyzna
Lokalizacja: Korzyn

[C] Średnia arytmetyczna kolumn w tablicy dynamicznej.

Post autor: darnok662 »

Witam,
usiłuję napisać program, który wczyta do dwuwymiarowej tablicy dynamicznej podane przez użytkownika liczby, a następnie policzy średnią każdej z kolumn, wyświetli je, i powie która jest największa:)

Napisałem taki oto kod:

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int **t=NULL, n, m, i, e, sum=0, sr=0, a=0, b, k=0, f;
    //**t=NULL dynamiczna tablica dwuwymiarowa, o domyslnej wartosci NULL
    //n,m - ilosc wierszy, komórek
    //sum - suma calkowita
    //sr - srednia calkowita
    //a - srednia kolumny
    //b = n*m
    //i,e - liczniki
    //k - najwieksza srednia
    //f - numer kolumny najwiekszej sredniej

    printf("podaj ilosc wierszy: ");   
    scanf("%d",&n);                     // podanie rozmiarów tablicy prze uzytkownika
    printf("
");                           
    printf("podaj ilosc kolumn: ");   
    scanf("%d",&m);                   
    printf("
");                          


    //tworzenie pierwszego wymiaru
    t=(int**)malloc(n*sizeof(int*));

    //tworzenie drugiego wymiaru
    for(i=0; i<n; i++)
    {
        t[i]=(int*)malloc(m*sizeof(int));
    }


    //podawanie wartoœci
    for(i=0; i<n; i++)
    {
        for (e=0; e<m; e++)
        {
            printf("PODAJ WARTOSC DLA KOMORKI [%d] [%d]: ", i, e);
            scanf("%d",&t[i][e]);
        }
    }

    //wypisywanie
    for(i=0; i<n; i++)
    {
        printf("
");
        for (e=0; e<m; e++)
        {
            printf("%d ", t[i][e]);
        }
    }

    //suma wszystkiego
    for(i=0; i<n; i++)
    {
        for(e=0; e<m; e++)
        {
            sum += t[i][e];
        }
    }
    printf("

SUMA CALKOWITA: %d", sum);

    //srednia arytmetyczna wszystkiego
    b=n*m;
    sr=sum/b;
    printf("
SREDNIA WSZYSTKIEGO: %d 
",sr);

   //srednia dla pojedynczej kolumny





   return 0;
   }

Jak widać, nie wiem jak policzyć średnią dla kolumn...zrobiłem podobne zadanie, gdzie trzeba było liczyc średnią wierszy:

Kod: Zaznacz cały

//srednia arytmetyczna kazdego wiersza
    for (i=0; i<n; i++)
    {
        for (e=0; e<m; e++)
        {
            a += t[i][e];
        }
        a = a/m;
        if(a>k)
        {
            k=a;
            f=i+1;
        }
        printf ("Srednia wiersza %d to: %d 
", i+1,a);
        a = 0;
    }
    printf("Najwieksza srednia to: %d. 
Numer wiersza tej sredniej to: %d", k,f);
Ale nie umiem analogicznie tego przełożyć na kolumny. Ma ktoś jakiś pomysł?
Z góry dziękuję za poświęcony czas.
Pozdrawiam, darnok662.


@edit
Moj problem polega na tym, ze licznik po komórkach, porusza się poziomo, jak na obrazku:

Uploaded with
Więc łatwo jest w pętli sumować kolejne komórki każdego wiersza, następnie dzielić je na ilość komórek wiersza a na koniec wiersza wyświetlać wynik:) Tylko jak to teraz zrobić w pionie...Czekam na podpowiedzi jak to zrobić dla kolumn...
Awatar użytkownika
thenighthawk4
Użytkownik
Użytkownik
Posty: 76
Rejestracja: 31 sty 2011, o 20:18
Płeć: Mężczyzna
Podziękował: 1 raz
Pomógł: 7 razy

[C] Średnia arytmetyczna kolumn w tablicy dynamicznej.

Post autor: thenighthawk4 »

Jeżeli dobrze zrozumiałem problem, to chyba wystarczy w pętli głównej iterować przez kolumny, a w podpętli wiersze. Wtedy w jednym przebiegu głównej pętli zostaną zsumowane wiersze tej kolumny itd.
Poprostu zamień indeksy w odwołaniu do tablicy.
ODPOWIEDZ