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

funkcja if else

0 głosów
328 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,570 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,284 wizyt
pytanie zadane 4 października 2016 w C i C++ przez Tymek Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 1,047 wizyt
pytanie zadane 21 lipca 2020 w Java przez T100 Obywatel (1,450 p.)
0 głosów
1 odpowiedź 858 wizyt
pytanie zadane 13 lutego 2020 w C i C++ przez kasialke Nowicjusz (230 p.)

93,631 zapytań

142,553 odpowiedzi

323,056 komentarzy

63,139 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2459p. - CC PL
  9. 2184p. - Maurycy W
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1811p. - rafalszastok
  13. 1600p. - Rafał Trójniak
  14. 1588p. - Tomasz Bielak
  15. 1494p. - 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

Kursy INF.02 i INF.03
...