Skocz do zawartości

Zablokowane Funkcja licząca tendencję.


raVVal

Rekomendowane odpowiedzi

Piszę mały eksperyment ekonomiczny. W klasie Shop znajduje się metoda float tendencja() ma za zadanie na podstawie tablicy liczb obliczyć średni stosunek kolejnych liczb do następnej(1/2; 2/3; 3/4 itd.).

Oto ona:

float tendencja()
            {

                  float suma = 0; //suma wszystkich stosunków
                  for(int i=0; i<4; i++) //tablica jest 5-elementowa więc będą 4 stosunki
                  {
                          if(prevSell[i] == -1) // w konstruktorze zamiast zerować tbice nadałem wszystkim elementom -1;
                          {break;}              //do tablicy (jescze w innej metodzie) dodawane są elementy do indeksu zero wypychając inne 
                                                //Dlatego sprawdzam czy element nie jest równy -1.
                          else
                          {
                              suma += prevSell[i]/prevSell[i+1]; //dodaję kolejne stosunki
                          }
                  }

                  return suma/4; //zwracam średnią czyli sumę przez ilość(4)

            }

 

 

PROBLEM: wynik jest niepoprawny!

Liczę to kalkulatorem i się nie zgadza. Poza tym gdy elementy są rosnące to wartość jest mniejsza od 1!! O co chodzi!

Proszę o pomoc!

Odnośnik do komentarza
Udostępnij na innych stronach

To to:

for(int i=0; i<4; i++) //tablica jest 5-elementowa więc będą 4 stosunki

Ile elementów dodajesz ;) ? Dla i=0 => element pierwszy, dla i=1 => element drugi, dla i=2 => element trzeci, dla i=3 => element czwarty. I koniec ;) . Przecież 4 nie jest mniejsze od 4.

 

Pozdrawiam.

 

Edit: Ach, mój fail. Przecież nie możesz operować na elemencie n-1, bo n nie istnieje. Sorka.

Odnośnik do komentarza
Udostępnij na innych stronach

To to:

 

Ile elementów dodajesz ;) ? Dla i=0 => element pierwszy, dla i=1 => element drugi, dla i=2 => element trzeci, dla i=3 => element czwarty. I koniec ;) . Przecież 4 nie jest mniejsze od 4.

 

Pozdrawiam.

 

prevSell[i]/prevSell[i+1];

Otóż: ostatnie 'i' = 3 czyli prevSell[3]/prevSell[4] Wszystko się zgadza.

Odnośnik do komentarza
Udostępnij na innych stronach

Albo jestem ślepy, albo tam nie ma błędu. Podaj przykładowe dane wejścia i wyjścia.

TO SAMO POWIEDZIAŁEM!

Z danymi to jest tak pobierane są metody sprzedającej, ale napisałem komende żeby zobaczyć to wszystko

show_tendence

0.75
82
83
61
58
53

 

z konsoli tekst.

Odnośnik do komentarza
Udostępnij na innych stronach

Przecież już podałem Ci przyczynę :rolleyes: . Jeśli dzielisz liczby całkowite, to i otrzymasz liczby całkowite.

 

Matko, jak ty nawalasz postami.

DZIAŁA! DZIĘKI, DZIĘKI!! DZIęki

 

3post + 2post po raz kolejny. Nie uczysz się na błędach więc warn + 20% oraz blokada na 5 dni - Uzjel

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...