Wątek przeniesiony 2017-02-13 00:26 z C/C++ przez kq.

Dlaczego porównanie stringów nie domyśla się, że chodzi mi o liczby?

0

Witam mam zadanie "Poproś użytkownika o podanie wieku dwóch osób i wskaż, która z nich jest starsza. Jeśli obie osoby mają powyżej 100 lat, program powinien zachować sie w szczególny sposób." mój kod to

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string wiek1;
    string wiek2;
    cout << "Podaj wiek pierwszej osoby: ";
    getline (cin, wiek1, '\n');
    cout << "\nPodaj wiek drugjej osoby: ";
    getline (cin, wiek2, '\n');
    if (wiek1 > wiek2)
    {
        cout << "\nPierwsza osoba jest starsza";
    }
    if (wiek1 < wiek2)
    {
        cout << "\nDruga osoba jest starsza";
    }
    if( wiek1 >= "100" && wiek2 >= "100")
    {
        cout << "\nOboje zaraz umra";
    }
}

i niestety ale

   if( wiek1 >= "100" && wiek2 >= "100")
    {
        cout << "\nOboje zaraz umra";
    }

zawsze jest prawdziwe, gdzie popełniam błąd? (bez apostrofów przy 100 wyskakuje błąd)

2

Typ string to ciąg znaków, jego porównanie jest określone typowym porządkiem leksykograficznym i jest dokonywane znak po znaku, czyli np:
string("20") > "100", pierw sprawdzi czy '2' > '1' - jeśli tak to już uzna porównanie za zakończone.

Wiek nie powinien być stringiem, tylko liczbą, wtedy też nie musiałbyś porównywać go do innych stringów, tylko mógłbyś porównywać do liczb, np:

int wiek;
cin >> wiek;
if(wiek > 42) // ...

PS: poprawiłem tytuł wątku, staraj się używać bardziej deskryptywnych opisów niż "pomoc dla początkującego".

0

Oczywiście że tak :P, dosłownie dziś (wczoraj) zacząłem programować, już wszystko działa, dzięki

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