Zwracanie struktury przez funkcję

0

Witam, mam problem z tym zadaniem "napisać funkcję, która zwróci najwyższą osobę wśród osób podanych jako tablica.. Następnie wyświetl jej dane w programie głównym."

struktura:

struct Osoba {
	char imie[20];
	char nazwisko[20];
	int wiek;
	float waga;
	float wzrost;
};

dalej wczytuje sobie różne dane do tablicy osób i mam problem z działaniem funkcji:

Osoba najwyzsza(Osoba osoba[], int n) {
	float max = 0.0;
	for (int i = 0; i < n; i++) {
		if (max < osoba[i].wzrost) max = osoba[i].wzrost;
	}
	osoba[n].wzrost = max;

	return osoba[n];
}

int main(){
int n = 5;
Osoba osoba[5];
Osoba osobanaj = najwyzsza(osoba, n);
wyswietlanie(osobanaj); //funkcja do wyswietlania
}

w jaki sposób mogę zwrócić całą osobę o znalezionym największym wzroście?

0
osoba[n].wzrost = max;

czemu modyfikujesz tablicę podczas szukania? W ogóle, n jest za dużym indeksem dla tej tablicy.

Skasuj całość i napisz od nowa, algorytm wygląda tak:

  • za największy przyjmij pierwszy element tablicy (zapamiętaj indeks albo wskaźnik)
  • każdy kolejny element
  • porównaj z obecnym największym
  • jeśli jest większy: zapamiętaj obecny (jego indeks/wskaźnik) jako największy
  • zwróć największy element
0

W jaki sposób mam zapamiętać wskaźnik/indeks? Nie bardzo wiem jak to zapisać
mam coś takiego na razie

Osoba najwyzsza(Osoba osoba[], int n) {
	float max = osoba[0].wzrost;
	for (int i = 0; i < n; i++) {
		if (osoba[i].wzrost>max) max = osoba[i].wzrost;
	}
1
Osoba const& najwyzsza(Osoba* osoby, int liczba)
{
    Osoba* max = &osoby[0];
    for(int i = 1; i < liczba; i++) {
        if(max->wzrost < osoby[i].wzrost)
            max = &osoby[i];
    }
    return *max;
}
0

dziękuję

1 użytkowników online, w tym zalogowanych: 0, gości: 1