raVVal Opublikowano 28 Czerwca 2012 Udostępnij Opublikowano 28 Czerwca 2012 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 Więcej opcji udostępniania...
Sernat Opublikowano 28 Czerwca 2012 Udostępnij Opublikowano 28 Czerwca 2012 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 Więcej opcji udostępniania...
raVVal Opublikowano 28 Czerwca 2012 Autor Udostępnij Opublikowano 28 Czerwca 2012 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 Więcej opcji udostępniania...
Sernat Opublikowano 28 Czerwca 2012 Udostępnij Opublikowano 28 Czerwca 2012 Albo jestem ślepy, albo tam nie ma błędu. Podaj przykładowe dane wejścia i wyjścia. Edit: Znalazłem możliwą przyczynę. Sprawdzasz element bieżący, a następnego już nie ;) . Jeśli następny ma wartość -1, wyniki mogą być nieciekawe. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
raVVal Opublikowano 28 Czerwca 2012 Autor Udostępnij Opublikowano 28 Czerwca 2012 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 Więcej opcji udostępniania...
raVVal Opublikowano 28 Czerwca 2012 Autor Udostępnij Opublikowano 28 Czerwca 2012 Edit: Znalazłem możliwą przyczynę. Sprawdzasz element bieżący, a następnego już nie . Jeśli następny ma wartość -1, wyniki mogą być nieciekawe. nistety tablice na których eksperymenuje nie mają -1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
raVVal Opublikowano 28 Czerwca 2012 Autor Udostępnij Opublikowano 28 Czerwca 2012 to pierwsze (0.75) to tendencja a reszta to tablica na której pracuję. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheMarcQ Opublikowano 28 Czerwca 2012 Udostępnij Opublikowano 28 Czerwca 2012 Błąd jest gdzie indziej. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 28 Czerwca 2012 Udostępnij Opublikowano 28 Czerwca 2012 http://www.wolframalpha.com/input/?i=%28+8...%2F53+%29+%2F+4 Hmm.. Czy tablica prevSell[] jest typu int? Jeśli tak, to wiadomo co z nią zrobić. A w ogóle to nie wiem czy C++ w takiej sytuacji błędu nie wywala. @Up: Wyjdź. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
raVVal Opublikowano 28 Czerwca 2012 Autor Udostępnij Opublikowano 28 Czerwca 2012 http://www.wolframalpha.com/input/?i=%28+8...%2F53+%29+%2F+4 Hmm.. Czy tablica prevSell[] jest typu int? Tak, int! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 28 Czerwca 2012 Udostępnij Opublikowano 28 Czerwca 2012 1/4 * ( ~0 + ~1 + ~1 + ~1 ) = 3/4 ;) . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
raVVal Opublikowano 28 Czerwca 2012 Autor Udostępnij Opublikowano 28 Czerwca 2012 Czy to może być wina wypisywania w konsoli cout<<Tesco.tendencja() Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
raVVal Opublikowano 28 Czerwca 2012 Autor Udostępnij Opublikowano 28 Czerwca 2012 1/4 * ( ~0 + ~1 + ~1 + ~1 ) = 3/4 ;) . spróbuję z flaotami! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 28 Czerwca 2012 Udostępnij Opublikowano 28 Czerwca 2012 Przecież już podałem Ci przyczynę :rolleyes: . Jeśli dzielisz liczby całkowite, to i otrzymasz liczby całkowite. Matko, jak ty nawalasz postami. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
raVVal Opublikowano 28 Czerwca 2012 Autor Udostępnij Opublikowano 28 Czerwca 2012 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 Więcej opcji udostępniania...
Rekomendowane odpowiedzi