Witam. Napisałem dwie funkcje, stworzyłem strukturę.
typedef struct {
char imie[IMIE_MAX+1];
char nazwisko[NAZW_MAX+1];
int pensja;
} osoba;
osoba spis[IL_OSOB];
int my_compare (const void * a, const void * b)
{
char const *aa = (char const *)a;
char const *bb = (char const *)b;
return strcmp(aa, bb);
}
int znajdz_imie (char im[NAZW_MAX+1], char na[IMIE_MAX+1], int *p)
{
int *a=bsearch(im, spis, IL_OSOB, sizeof(osoba), my_compare);
if(a!=0)
{
strcpy(na,spis[a].nazwisko);
*p=spis[a].pensja;
return 1;
}
else
return 0;
}
Program polega na wczytaniu z bazy danych o kilku osobach (imie,nazwisko,pensja), potem ten spis trzeba posortować(sortuje po imionach) i teraz przez uzytkownika zostaje podane jakieś imię i muszę sprawdzić czy to imię występuje w spisie (jeśli nie to zwracamy wartość 0) jeśli tak to 1 z zapisanymi wartościami nazwiska i pensji. Muszę użyć wyszukiwania binarnego i tu pojawia się problem(oczywiście ciało funkcji, którą podałem jest błędne i nie bardzo wiem jak to poprawić). Funkcja wyznacza mi wskaźnik na element w spisie. Jak wykorzystać ten wskaźnik aby podmienić potem zmienną na i pensje na wartości przypisane do znalezionego imienia? Za wszystkie odpowiedzi będę bardzo wdzięczny!