Problem z warunkiem if/else

0

Witam. Mam problem z warunkiem if/else. Funkcja tak jakby nie widzi warunku if i przechodzi do elsa.

show_vehicle();
    char choice;
    int rid;
    int max_id = ((Administrator*)adm) -> max_id_vehicle();
    int Id = user ->return_id();
    do
    {
        cout <<"Enter id vehicle you want to return: ";
        cin.clear();
        cin.sync();
        cin >> rid;
        if(cin.fail())
            cout <<"Enter good id" << endl;
    }while(cin.fail());


    int uID, vID;
    time_t return_time;

    if(rid < 1 || rid > max_id)
    {
        cout <<"ID does not exists" << endl;
            cout <<"[1]. Confirm" << endl;
                         choice = getch();
                            return false;
    }
    ifstream hirelist("Hirelist.txt");
    if(!hirelist.good())
        cout << "Error" << endl;
    ofstream hirelist2("Hirelist2.txt", ios_base::app);
    if(!hirelist2.good())
        cout << "Error" << endl;



    while(hirelist >> uID >> vID >> return_time)
    {
        if(Id == uID)
        {
            if(rid == vID)
            {
                continue;
            }
            else
            {
                cout << "You did not hire this vehicle" << endl;
                    
                            return false;
            }

        }
        hirelist2 << uID << " " << vID << " " << return_time << endl;
    }

    hirelist.close();
    hirelist2.close();

    if(remove ("Hirelist.txt"))
    {
        cout << "Error 1" << endl;
            cout <<"Confirm" << endl;
                     choice = getch();
        exit(0);
    }
    if(rename("Hirelist2.txt", "Hirelist.txt"))
    {
        cout << "Error 2" << endl;
            cout <<"Confirm" << endl;
                choice = getch();
        exit(0);
    }

Jak wspominałem mimo podania poprawnego "rid" program wyrzuca mi zawartość elsa. Bardzo proszę o pomoc. Z góry dziękuje :D

0

Podaj, jaką wartość mają rid oraz vID przed ifem, to znaczy w tym miejscu:

if(Id == uID)
{
    // rid == ?
    // vID == ?
    if(rid == vID)
    {
        continue;
    }
    else
    {
        cout << "You did not hire this vehicle" << endl;
        return false;
    }
}

?

0

Wartość rid wprowadz użytkownik a vID jest zawarte w pliku tekstowym.

    {
        cout <<"Enter id vehicle you want to return: ";
        cin.clear();
        cin.sync();
        cin >> rid;
        if(cin.fail())
            cout <<"Enter good id" << endl;
    }while(cin.fail());
0

Rozumiem, ale sprawdź, jaką mają wartość. Wypisz na przykład na standardowe wyjście instrukcją cout. Co wychodzi?

0

Zakładając że w pliku tekstowym mam wartości vID kolejno 1, 2. Wpisując rid = 2 to w cout mam rid =2, a vID =1. Rozumiem, że to oznacza, że pętla nie przeszukuje całej zawartości pliku a jedynie pierwszy element zgadza się?

0

Dobra, problem rozwiązany. Dzięki za zainteresowanie.

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