Witam.
Mam funkcję, która poszukuje elementów spełniających dane warunki w tablicy struktur, a potem wyświetla je na ekranie. Dany warunek nazwisko, warunek wiek, warunek wzrost1przedzial i wzrost2przedzial (rekordy mieszczące się między nimi są wypisywane). Jeżeli warunki nazwisko i/lub wiek dostaną wartość 0 to nie porównujemy danych elementów.
Funkcja nie działa mi jednak poprawnie: w if'ach gdzie mam nazwisko != 0, operacje wykonują się i działają poprawnie, a kiedy mam nazwisko == 0, funkcja nie wyświetla niczego - pokazuje się menu programu. Kompilator nic nie krzyczy, a ja sam sprawdzałem już czy aby na pewno dobrze przekazuję dane itd. Nie mam pojęcia, co może być nie tak.
if(nazwisko != 0 && wiek != 0)
{
for(int j=0;j<ile;j++)
{
if(!strcmp(tab[j].nazwisko,nazwisko) && tab[j].wiek == wiek && tab[j].wzrost >= wzrost1 && tab[j].wzrost <= wzrost2)
{
printf("%s %d %f", tab[j].nazwisko, tab[j].wiek, tab[j].wzrost);
}
}
} else if(nazwisko == 0 && wiek != 0) {
for(int j=0;j<ile;j++)
{
if(tab[j].wiek == wiek && tab[j].wzrost >= wzrost1 && tab[j].wzrost <= wzrost2)
{
printf("%s %d %f", tab[j].nazwisko, tab[j].wiek, tab[j].wzrost);
}
}
} else if(nazwisko != 0 && wiek == 0) {
for(int j=0;j<ile;j++)
{
if(tab[j].nazwisko == nazwisko && tab[j].wzrost >= wzrost1 && tab[j].wzrost <= wzrost2)
{
printf("%s %d %f", tab[j].nazwisko, tab[j].wiek, tab[j].wzrost);
}
}
} else if(nazwisko == 0 && wiek == 0) {
for(int j=0;j<ile;j++)
{
if(tab[j].wzrost >= wzrost1 && tab[j].wzrost <= wzrost2)
{
printf("%s %d %f", tab[j].nazwisko, tab[j].wiek, tab[j].wzrost);
}
}
}
Dzięki za podpowiedzi.