novix8 Opublikowano 12 Czerwca 2010 Opublikowano 12 Czerwca 2010 Witam wszystkich, mam nadzieje, że znajdzie się tutaj ktoś kto będzie w stanie mi pomóc. Mam zadanie z Programowania... mianowicie chodzi oto, że mam napisać program wykorzystujący 2 pętle(while,for albo do-while) obliczający średnią wieku, wzrostu i wagi 10 przypadkowych ludzi. Jeśli by mi ktoś pomógł był bym bardzo wdzięczny ;) Pozdrawiam i z góry dziękuje ;)
waxx Opublikowano 12 Czerwca 2010 Opublikowano 12 Czerwca 2010 pomoc mozemy jak dowiemy sie w czym problem
Konrad-GM Opublikowano 12 Czerwca 2010 Opublikowano 12 Czerwca 2010 #include <stdio> #include <vector> class CPerson { public: CPerson( float old, float height, float weight ) : mOld( old ), mHeight( height ), mWeight( weight ) {} float getOld( void ) { return mOld; } float getHeight( void ) { return mHeight; } float getWeight( void ) { return mWeight; } private: float mOld, mHeight, mWeight; }; #define PERSON_OLD 0 #define PERSON_HEIGHT 1 #define PERSON_WEIGHT 2 typedef unsigned int uint; float* average_persons( std::vector<CPerson> &vec ) { float result[3] = { 0 }; for( uint n = 0; n < vec.size(); n++ ) { result[PERSON_OLD] += vec[n].getOld(); result[PERSON_HEIGHT] += vec[n].getHeight(); result[PERSON_WEIGHT] += vec[n].getWeight(); } for( uint n = 0; n < 3; n++ ) result[n] /= (float)vec.size(); return result; } int main() { std::vector<CPerson> persons; persons.push_back( CPerson( 1, 2, 3 ) ); persons.push_back( CPerson( 2, 3, 4 ) ); float *res = average_persons( persons ); printf( "Averages:\nOlds: %f\nHeights: %f\nWeights: %f\n", res[PERSON_OLD], res[PERSON_HEIGHT], res[PERSON_WEIGHT] ); getchar(); return 0; } Proste zadanie, wystarczy wiedzieć JAK się oblicza średnią :) Btw. Osoby dodaje się po przez: 'persons.push_back( CPerson( x, y, z ) );'
novix8 Opublikowano 13 Czerwca 2010 Autor Opublikowano 13 Czerwca 2010 dzięki tylko że potrzebował bym taki mniej skomplikowany kod z wykorzystaniem tych 2 pętli i w programie Dev-c++ ;/ :( Pozdrawiam
mipo57 Opublikowano 13 Czerwca 2010 Opublikowano 13 Czerwca 2010 z wykorzystaniem tych 2 pętli jak zrobisz mniej pętli to chyba więcej punktów dostaniesz za wydajność... i w programie Dev-c++ każdy kompilator przetworzy ten kod. ed: zaraz napisze ci mniej skomplikowany
Konrad-GM Opublikowano 13 Czerwca 2010 Opublikowano 13 Czerwca 2010 Ale przecież są 2 pętle :rolleyes:
mipo57 Opublikowano 13 Czerwca 2010 Opublikowano 13 Czerwca 2010 ee... o co chodzi z przypadkowych ludzi w sensie że ma losować dane, czy że ma je pobierać od uzytkownika
Will Opublikowano 13 Czerwca 2010 Opublikowano 13 Czerwca 2010 float* average_persons( std::vector<CPerson> &vec ) { float result[3] = { 0 }; for( uint n = 0; n < vec.size(); n++ ) { result[PERSON_OLD] += vec[n].getOld(); result[PERSON_HEIGHT] += vec[n].getHeight(); result[PERSON_WEIGHT] += vec[n].getWeight(); } for( uint n = 0; n < 3; n++ ) result[n] /= (float)vec.size(); return result; } Znajdź błąd w swoim kodzie.
Exigo Opublikowano 13 Czerwca 2010 Opublikowano 13 Czerwca 2010 Ależ Konradzie, pomyśl ; D - skoro dostał tego typu zadanie to na pewno nie miał styczności czymś takim jak prog. obj. . Z tego co pamiętam tego typu rzeczy robiło się na tablicach. #include <iostream> using namespace std; int tab[10][2], sred[2], ludzie=10; int main() { for (int i = 0; i < ludzie; i ++) { tab[i][0] = rand()%100; // wiek tab[i][1] = 150+(rand()%60); // wzrost tab[i][2] = 50+(rand()%60); // waga for (int a = 0; a < 3; a++) { sred[a] += tab[i][a]; } } for (int a = 0; a < 3; a++) { sred[a] = sred[a]/ludzie; cout << "sred" << a << "= " << sred[a] << endl; } return false; }
Konrad-GM Opublikowano 14 Czerwca 2010 Opublikowano 14 Czerwca 2010 Oki doki Will: float* average_persons( std::vector<CPerson> &vec ) { float result = new float[3]; result[0] = result[1] = result[2] = 0.0f; for( uint n = 0; n < vec.size(); n++ ) { result[PERSON_OLD] += vec[n].getOld(); result[PERSON_HEIGHT] += vec[n].getHeight(); result[PERSON_WEIGHT] += vec[n].getWeight(); } for( uint n = 0; n < 3; n++ ) result[n] /= (float)vec.size(); return result; } :3
Filar Społeczności ANtY Opublikowano 14 Czerwca 2010 Filar Społeczności Opublikowano 14 Czerwca 2010 old =/= age
waxx Opublikowano 14 Czerwca 2010 Opublikowano 14 Czerwca 2010 nom wiele to mowi idz sam napisz a nie noobisz tu
Konrad-GM Opublikowano 14 Czerwca 2010 Opublikowano 14 Czerwca 2010 Czy Ty wo gulę znasz podstawy C++a? Masz 2 kody, wystarczy że przerobisz je sobie po swojemu :)
mipo57 Opublikowano 14 Czerwca 2010 Opublikowano 14 Czerwca 2010 ech to jest lekko przerobiona wersja kuby: #include <iostream> #include <conio.h> using namespace std; int tab[10][2], sred[2], ludzie=10; int main() { for (int i = 0; i < ludzie; i ++) { tab[i][0] = rand()%100; // wiek tab[i][1] = 150+(rand()%60); // wzrost tab[i][2] = 50+(rand()%60); // waga for (int a = 0; a < 3; a++) { sred[a] += tab[i][a]; } } for (int a = 0; a < 3; a++) { sred[a] = sred[a]/ludzie; cout << "sred" << a << "= " << sred[a] << endl; getch(); } return false; } a ty Konrad-GM strasznie mu mieszasz on raczej nie miał o wektorach...
Roki Opublikowano 14 Czerwca 2010 Opublikowano 14 Czerwca 2010 Co ja? Ja się tu nie udzielałem :o a ty roki strasznie mu mieszasz on raczej nie miał o wektorach...
mipo57 Opublikowano 14 Czerwca 2010 Opublikowano 14 Czerwca 2010 :poster_oops: z Konradem-GM macie podobne avatary... Ed: Za co ktoś zaraportował rokiego?
novix8 Opublikowano 15 Czerwca 2010 Autor Opublikowano 15 Czerwca 2010 Dziękuje wszystkim za pomoc ;) Temat do zamknięcia;) Pozdrawiam
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się