Wartość max w tablicy [struktury]
Ostatnio zmodyfikowano 2014-12-19 00:50
lvcky Temat założony przez niniejszego użytkownika |
Wartość max w tablicy [struktury] » 2014-12-18 20:57:32 Witam, Mam napisaną strukturę gdzie podaje dane osobowe różnych ludzi. Imię, nazwisko, waga, wzrost i wiek. Mam napisać funkcję, która zwróci najwyższą osobę. Następnie wyświetl jej wszystkie dane. void najwyzszy( Osoba * tab ) { float max; max =( & tab[ 1 ] )->wzrost; for( int i = 1; i < 5; i++ ) { if( max <( tab + i )->wzrost ); max =( tab + i )->wzrost; } cout << "Najwyższy facet ma: " << max << endl; } Jak na razie tyle mi się udało zrobić ale niestety nie działa to prawidłowo :) Prosiłbym o pomoc. |
|
darko202 |
» 2014-12-19 00:50:52 wydaje mi się ,że powinieneś przyjrzeć się linii
1. max =( & tab[ 1 ] )->wzrost; // tu odwołujesz się do 2 elementu tablicy - tablice indeksuje się od 0 // to mało prawdopodobne, ale jeśli tablica ma tylko 1 element to przyjmujesz śmieciowe dane tu podobnie jak opis w p5
2. podobnie przeglądanie tablicy zaczynasz też od 2 elementu
3. void najwyzszy( Osoba * tab ) //tu powinno być raczej void najwyzszy( Osoba * tab, int rozmiar_tablicy ) gdyż funkcja powinna być autonomiczna nie powinna odwoływać się do zmiennych globalnych
4. for( int i = 1; i < 5; i++ ) // tu powinno być raczej (i=0) (rozmiar_tablicy argument funkcji nie zmienna globalna) for( int i = 0; i < rozmiar_tablicy ; i++ )
5. jak zaczynasz bawić się wskaźnikami to powinieneś być pewny czy nie sięgasz poza zakres tablicy i faktycznie co pobierasz w ( tab + i )->wzrost masz wartość referencji do pamięci w które masz dane o wzroście czy wzrost - sprawdź co jest pod *( tab + i )->wzrost i pomyśl dlaczego
w celach kontrolnych wyświetlaj sobie co pobrałeś do porównania (jeśli nie używasz debugera)
|
|
« 1 » |