Sumowanie wyrazów

0

Napisałem program do sumowania wyrazów w macierzy kwadratowej znajdujących się nad główną przekątną

float calculateAverageUnderMainDiagonal(float **matrix, int size) {
    if (size <= 1) { 
        return 0.0;
    }
    else {
        float result = 0.0;
        int i, j; //zmienne do iterowania sie po: i - wierszach, j - kolumnach
        for (i = 0; i < size; ++i) {
            for (j = i + 1; j < size; ++j) {
                result += *(*(matrix + i) + j); 
            }
        }

        return result ; 
    }
}

Ktoś może sprawdzić i ewentualnie jeśli dobrze co muszę zmienić by sumowało elementy pod główną przekątną. Z góry dziękuję

1

Jakbyś sam to napisał, to byś wiedział co trzeba zmienić.

0
float calculateAverageUnderMainDiagonal(float **matrix, int size) {
    if (size <= 1) { 
        return 0.0;
    }
    else {
        float result = 0.0;
        int i, j; //zmienne do iterowania sie po: i - wierszach, j - kolumnach
        for (i = size-1; i >=0; --i) {
            for (j =0; j<i;++j) {
                result += *(*(matrix + i) + j); 
            }
        }
 
        return result ; 
    }
}

Ja bym to tak zmienić, ktoś coś. Dziękuję

0
  1. Czemu używasz int do rozmiaru? Umiesz obsłużyć ujemne rozmiary tablic? Użyj size_t
  2. Zastanów się nad lepszym nazewnictwem, y, x zamiast i, j - bo wiadomo y to pion zaś i czy to pion czy może poziom?
  3. Skoro możesz deklarować zmienne nie tylko na początku funkcji (czyli C99 lub C++) to deklaruj jak najpóźniej czyli iteratory w for'ach: for (size_t y=0;y<size;++y)
  4. Czemu nie użyjesz zwyczajnego matrix[y][x]?
  5. Czemu to przy rozmiarze 1 zwracasz 0 ?
  6. Przyśpieszasz obsługę sytuacji nietypowych kosztem sytuacji typowych? Wywal tego if'a
  7. Odradzam użycia float przejdź na double

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