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

funkcja if else

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
249 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 2,022 wizyt
pytanie zadane 4 października 2016 w C i C++ przez Tymek Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 906 wizyt
pytanie zadane 21 lipca 2020 w Java przez T100 Obywatel (1,450 p.)
0 głosów
1 odpowiedź 666 wizyt
pytanie zadane 13 lutego 2020 w C i C++ przez kasialke Nowicjusz (230 p.)

93,187 zapytań

142,202 odpowiedzi

322,013 komentarzy

62,513 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2365p. - dia-Chann
  2. 2326p. - Łukasz Piwowar
  3. 2315p. - Łukasz Eckert
  4. 2301p. - CC PL
  5. 2269p. - Tomasz Bielak
  6. 2235p. - Łukasz Siedlecki
  7. 2232p. - rucin93
  8. 2006p. - Michal Drewniak
  9. 1946p. - Adrian Wieprzkowicz
  10. 1901p. - Mikbac
  11. 1744p. - rafalszastok
  12. 1734p. - Anonim 3619784
  13. 1733p. - Marcin Putra
  14. 1586p. - Dawid128
  15. 1480p. - ssynowiec
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...