Poszukiwanie elementu tablicy w drugiej tablicy

0

Witam, miałbym pytanie. Pewnie nie jest to skomplikowany problem, ale nie bardzo wiem co może być źle. Chodzi mi o wyszukanie elementu jednej tablicy struktur w drugiej tablicy struktur(a dokładniej o pozyskanie indeksu tego elementu w drugiej tablicy).

int search2(struct pro tab[], struct pro tab_posort[], int n, int temp)
{
    int i;
    for(i=0;i<n;i++)
    {
        if(tab[temp].l_k==tab_posort[i].l_k && tab[temp].l_b==tab_posort[i].l_b)
        {
            return i;
        }
    }
} 

Kod wygląda tak, no cóż, nie działa mi on poprawnie, bo nie zwraca potrzebnego indeksu, tylko jakąś inna liczbę. Czy ktoś widzi tu coś nie tak?

0

Kod który pokazałeś zwróci ci indeks elementu z tablicy tab_posort który ma takie same wartości l_k i l_b jak element z tablicy tab o indeksie temp. Ergo ten kod jest poprawny. Błąd zapewne masz w innym miejscu.

0

No cóż, później zapisuje ten indeks do zmiennej typu int, a kiedy próbuje wyprintfować sobie ta zmienną, to zawsze wypisuje mi 4(jako n podaje sobie 4, ale przecież w takim wypadku nie mam nawet takiego indeksu jak 4). W takim razie poszukam błędu gdzie indziej, dzięki za weryfikacje kodu

0

Brak zwracania wartości o ile nie dla żadnego elementu nie zajdzie warunek.
Poza tym zastanów się nad zmianą jeżeli wywoływałeś x=search2(tab,tab_posort,N,tabpos):

int search2(struct pro temp, struct pro tab_posort[], int n)
  {
   int i;
   for(i=0;i<n;++i) if(temp.l_k==tab_posort[i].l_k && temp.l_b==tab_posort[i].l_b) return i;
   return -1;
  }
// wywołanie x=search2(tab[tabpos],tab_posort,N);

lub:

int search2(struct pro *temp, struct pro tab_posort[], int n)
  {
   int i;
   for(i=0;i<n;++i) if(temp->l_k==tab_posort[i].l_k && temp->l_b==tab_posort[i].l_b) return i;
   return -1;
  }
// wywołanie x=search2(tab+tabpos,tab_posort,N);

Nie ma co przekazywać tablicę o ile wykorzystujesz tylko jeden element.

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