Schemat blokowy przepisać w kod

0

Mam taki algorytm,

Czy to waszym zdaniem jest poprawnie wykonane, da rade to jakoś lepiej zrobić?

int void(int A[], int n)
{

    int i = 0, suma = 0, ile = 0;

    while(i<n) {
        if(A[i] > 0) {
            suma=suma+A[i];
            ile++;
        }
        i++;
    }
    while(!(i<n)) {
        if(ile>0){
            return suma/ile;
        } else {
            return 0;
        }
    }

}
3

Czy to waszym zdaniem jest poprawnie wykonane

Nie. Próbowałeś w ogóle to kompilować? int void - cóż to może być?

Ponadto, w schemacie masz jedną pętlę, a w kodzie dwie. Więc niepoprawnie zamieniłeś. Nie zaimplementowałeś też nigdzie wczytywania do tablicy.

0

@kq:
tak zmieniłem void , wczytywanie mam w mainie tam wszystko smiga. Powinno być tylko while(i<n)? Można tez by to zrobić za pomocą do..while ?

int funkcja(int A[], int n)
{

    int i = 0, suma = 0, ile = 0;

    while(i<n) {
        if(A[i] > 0) {
            suma=suma+A[i];
            ile++;
        }
        i++;
    }
   if(ile > 0) {
       return suma/ile;
   } else {
       return 0;
   }

}

Czy to będzie ok? Czy powininem coś zwrócić jest poza tym if'em?

4

Żeby być ściśle zgodnym ze schematem powinno być do..while, ale to co zrobiłeś ma więcej sensu. Ale typem zwracanym powinno być raczej double, w końcu masz policzyć średnią, a ta rzadko będzie całkowita.

Tak właściwie w tablicy też nie jest powiedziane jaki jest typ danych.

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