• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

funkcja if else

Object Storage Arubacloud
0 głosów
209 wizyt
pytanie zadane 4 czerwca 2018 w C i C++ przez sokratgc Nowicjusz (160 p.)

Witam, nie mogę znaleźć błędu w programie.
Chodziło mi o to, aby program po podaniu loginu sprawdził od razu czy jest on poprawny i dopiero wtedy prosił o hasło. Jeśli login jest zły to ma dać komunikat. Niestety program po podaniu złego loginu wyświetla również informacje o złym haśle, którego jeszcze nie podano. Czy da się to jakoś zrobić?

 

#include <iostream>

using namespace std;
string login,haslo;
int main()
{
    cout << "Podaj login: ";
    cin >> login;
    if(login!="admin")
    cout << "zly login";
    else
{
    cout << "Podaj haslo: ";
    cin >> haslo;
}
    if(haslo!="123")

    cout <<"zle haslo";
    else
    cout << "zalogowano";
    return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 4 czerwca 2018 przez niezalogowany
Jak inicjalizujesz zmienna haslo to domyślnie ma wartość null, więc jest różna od 123 i dlatego wypisuje komunikat.

Zamknij sekcje wprowadzania hasla w else loginu, aby wywoływało się tylko kiedy login jest poprawny.
komentarz 4 czerwca 2018 przez Aisekai Nałogowiec (42,190 p.)
edycja 4 czerwca 2018 przez Aisekai
Domyślnie zmienne typu int, jeśli są globalne mają wartość 0. Ale reszta i tak się zgadza.

 

Edit: nvm, byłem przekonany że hasło było podane jako int, sorry :)
0 głosów
odpowiedź 4 czerwca 2018 przez sokratgc Nowicjusz (160 p.)

Dzięki za info. Te zmienne to były string a nie int o ile to coś zmienia w ich domyślnej wartości. Zmieniłem kod programu, bo wersja pierwotna była trochę do d...y. Teraz jest to co chciałem. Może nie do końca trafnie sformułowałem pytanie na wstępnie i dodam, że dopiero raczkuje w temacie programowania. Oto efekt:

#include <iostream>

using namespace std;
string login,haslo;
int main()
{
    while (login!="admin")
    {
    cout << "Podaj login: ";
    cin >> login;
    if(login!="admin")
    cout << "zly login" << endl;
    }
    while (haslo!="123")
    {
    cout << "Podaj haslo: ";
    cin >> haslo;
    if(haslo!="123")
    cout <<"zle haslo"<< endl;
    }
    cout << "zalogowano";
    return 0;
}

Teraz po źle wpisanym loginie lub haśle prosi o ponowienie próby :)

Dzięki za pomoc 

komentarz 4 czerwca 2018 przez criss Mędrzec (172,590 p.)

 Te zmienne to były string a nie int o ile to coś zmienia w ich domyślnej wartości.

zmienne std::string są obiektami, więc ich inicjalizacją zajmuje się konstruktor - zawsze mają tą samą wartość domyślną czyli pusty string (niezależnie czy to obiekt globalny, lokalny czy jaki sobie nie wymyślisz). Tak dla wyjaśnienia

Podobne pytania

0 głosów
2 odpowiedzi 1,772 wizyt
pytanie zadane 4 października 2016 w C i C++ przez Tymek Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 783 wizyt
pytanie zadane 21 lipca 2020 w Java przez T100 Obywatel (1,450 p.)
0 głosów
1 odpowiedź 512 wizyt
pytanie zadane 13 lutego 2020 w C i C++ przez kasialke Nowicjusz (230 p.)

92,617 zapytań

141,466 odpowiedzi

319,783 komentarzy

61,999 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...