kert Opublikowano 27 Stycznia 2005 Zgłoś Opublikowano 27 Stycznia 2005 Witam Mam problem z wyliczeniem średniej dla liczb parzystych i nieparzystych. Opis programu: Napisać program obiektowy działający na statycznej tablicy liczb całkowitych. Tablica ma być zrealizowana w formie klasy a zadana czynność na tej tablicy - jako jedna z metod. Znaleźć średnią liczb nieparzystych oraz średnią liczb parzystych. Określić, która jest większa. Mój kod: #include <iostream.h> #include <stdlib.h> #include <conio.h> class tablica { private: int a[21]; float suma_p; float suma_n; float ilosc_p; float ilosc_n; public: tablica(int i); void liczby(); float sredniap(); float srednianp(); }; tablica::tablica(int i) { for (i=0; i<21; i++) a[i] = random(100); } void tablica::liczby() { int i; int x; for (i=0; i<21; i++) { x=a[i]; if ((x % 2)==0) { suma_p += x; ilosc_p++; } else { suma_n += x; ilosc_n++; } } } float tablica::sredniap() { return float(suma_p)/float(ilosc_p); } float tablica::srednianp() { return float(suma_n)/float(ilosc_n); } int main() { clrscr(); randomize(); { tablica ob(20); cout << "Srednia parzystych: " << ob.sredniap() << endl; cout << "Srednia nieparzystych: " << ob.srednianp() << endl; } return 0; } Program się kompiluje ale źle liczy, a ja nie wiem dlaczego :( Może ktoś mi pomóc i przerobić go tak żeby działał? Pozdrawiam kert Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
spicum Opublikowano 27 Stycznia 2005 Zgłoś Opublikowano 27 Stycznia 2005 :mur: :mur: :mur: :mur: :mur: :mur: no to od poczatku .... 1) nigdzie nie uzyto funkcji liczby() - wiec ciekawe jakim cudem cokolwiek mogloby sie policzyc ... 2) zmienna ob nie zostala wogole zainicjalizowana ... moze jednak zapisac to jak w C++ Pan Bjorne S. uczyl: tablica *ob= new tablica(20); 3) ciekawe do czego uzywana jest wogole zmienna int w konstruktorze - przeciez ona nic nie robi !! 4) ciekawe jak interpretujesz wyniki typu NaN (Not a Number) .... zmodyfikowany main - zeby dzialalo int main() { clrscr(); randomize(); { tablica *ob = new tablica(20); ob->liczby(); cout << "Srednia parzystych: " << ob->sredniap() << endl; cout << "Srednia nieparzystych: " << ob->srednianp() << endl; } return 0; } moze byc ewentualnie konieczne zainicjalizowanie zmiennych w konstuktorze klasy tablica - ale pewnie zostana automatycznie zainicjalizowane - kwestia kompilatora ... :mur: :mur: :mur: :mur: :mur: :mur: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Nargil Opublikowano 27 Stycznia 2005 Zgłoś Opublikowano 27 Stycznia 2005 tablica::tablica(int i) { for (i=0; i<21; i++) a = random(100); suma_p=0; suma_n=0; ilosc_p=0; ilosc_n=0; } Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
kert Opublikowano 27 Stycznia 2005 Zgłoś Opublikowano 27 Stycznia 2005 Dzięki wam za pomoc :D Poprawiłem i już wszystko jest OK. Wcześniej właśnie nie rozumiałem jak się odwoływać do funkcji w "main" - teraz już to zrozumiałem :) Jeszcze raz dziękuje i pozdrawiam Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
spicum Opublikowano 28 Stycznia 2005 Zgłoś Opublikowano 28 Stycznia 2005 Czyzby pierwszy program w C++ z wykorzystaniem klas ?? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
kert Opublikowano 28 Stycznia 2005 Zgłoś Opublikowano 28 Stycznia 2005 Czyzby pierwszy program w C++ z wykorzystaniem klas ?? 1241030[/snapback] Dokładnie :) - wzorowałem się na innych programach i troche namieszałem :oops: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...