Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wartość max w tablicy [struktury]

Ostatnio zmodyfikowano 2014-12-19 00:50
Autor Wiadomość
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.

C/C++
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.
P-123076
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)

P-123090
« 1 »
  Strona 1 z 1