funkcja szukajaca numeru w strukturze

0

Mam do napisania funkcje, która dostaje tablice studentów i wyszukuje numer indeksu studenta, zwracając pole tabeli jeśli znajdzie ten indeks i zwraca -1 jeśli nie znajdzie tego numeru nigdzie. Bardzo proszę o jakąś podpowiedź, bo już nie mam pojęcia:

#include <iostream>
using namespace std;

struct student
{
    char imie [20], nazwisko[40], plec[10];
    long long int pesel;
    double indeks;
};

int find_student (student S[], int ilosc_studentow,  double nr_indeksu)
{
int licznik =1;
    for (int i=0; i<ilosc_studentow; i++)
    {
        if (S[i].indeks==nr_indeksu)
        {
            return licznik;
        }
       if (S[i].indeks!=true) return -1;
    }
licznik++;
}


int main()
{
    student A[2];
    for (int i = 0; i < 2; i++) {
        cout << "Podaj dane studenta (imie, nazwisko, plec, nr pesel oraz nr indeksu: ";
        cin >> A[i].imie >> A[i].nazwisko >> A[i].plec >> A[i].pesel >> A[i].indeks;
    }
   find_student(A,2,123456);
    
}

 
0

Tzn co chcesz zwrócić?

0

pozycja w tablicy jak znajdzie numer i -1 jak nigdzie nie znajdzie

0

Jeszcze coś takiego udało mi się skleić po tym jak przeszukałem internety:

int find_student(student A[], int ilosc_studentow, int nr_indeksu)
{
    int szukaj = search_n(A.indeks.begin(),A.indeks.end(),1,&nr_indeksu);
    if (szukaj!=A.indeks.end())
    {
        return szukaj-A.indeks.begin();
    }
    else return -1;
}
 
0

To wywal zmienną licznik bo ona nic nie robi, i jeśli ten if w pętli będzie spełniony to zwracaj i.

if (S[i].indeks!=true) return -1; 

Co to robi?

0

Tylko że program wtedy wywala błędy bo S[i] jest strukturą i tam jest aż 5 zmiennych i program nie wie do której się odwołać

0
int find_student(student S[], int ilosc_studentow, double nr_indeksu)
{
    int licznik = 1;
    for (int i = 0; i < ilosc_studentow; i++) {
        if (S[i].indeks == nr_indeksu) {
            return licznik;
        }
        if (S[i].indeks != true)
            return -1;
    }
    licznik++;
}
  1. Dlaczego indeks jest double? Liczb typu double się nie porównuje za pomocą ==
  2. licznik jest poza pętlą, więc nawet jeśli jakimś cudem znajdziesz ten indeks, to zwrócisz po prostu 1
  3. Jaki sens ma porównanie indeksu to true?
0

Właściwie to racja, ten drugi if nic nie daje. Musi być tu inny warunek

0

Powiem więcej, tam nie musi być żadnego drugiego warunku.

0

bez warunku zwróci mi -1 w razie braku tego nr_indeksu?

0

Jak trochę pomyślisz, to tak. Ale na razie to wygląda na to, że nie wiesz jak działa pętla for.

0

kurde przez to ze zapomnialem couta w wywołaniu zacząłem się motać bo wcześniej mi nie pokazywało to zacząłem kombinować niepotrzebnie. Dzięki wielkie.

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