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

Gdzie jest błąd? Krótki i prosty program.

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
705 wizyt
pytanie zadane 3 października 2015 w C i C++ przez filowsky Nowicjusz (150 p.)
edycja 3 października 2015 przez Patrycjerz
#include <iostream>

using namespace std;

string uzytkownik, haslo, powtorzonehaslo, login, password;

int main ()

{{{{
    cout << "Zajerestruj sie" << endl;
    cout << "utworz login:";
    cin >> uzytkownik;

    cout <<"utworz haslo:";
    cin >> haslo;

    cout <<"powtorz haslo:";
    cin >> powtorzonehaslo;

    if  ((powtorzonehaslo==haslo));
    {{{
    cout <<"dziekujemy za rejestracje" << endl;
    cout <<"zaloguj sie"<<endl;

    cout <<"podaj login:";
    cin >> login;

    cout <<"podaj haslo:";
    cin >> password;

    if ((login==uzytkownik)&&(haslo==password));
    {
        cout <<"zalogowano do systemu";
    }

    else

    {
        cout <<"nie zalogowano do systemu";
    }

    }}} // tu jest instrukcja poprawna

    else
    {{{
      while ((powtorzonehaslo==haslo));

      cout << "Zajerestruj sie" << endl;
      cout << "utworz login:";
      cin >> uzytkownik;

      cout <<"utworz haslo:";
      cin >> haslo;

      cout <<"powtorz haslo:";
      cin >> powtorzonehaslo;

    if  ((powtorzonehaslo==haslo));

   {{
    cout <<"dziekujemy za rejestracje" << endl;
    cout <<"zaloguj sie"<<endl;

    cout <<"podaj login:";
    cin >> login;

    cout <<"podaj haslo:";
    cin >> password;

    if ((login==uzytkownik)&&(haslo==password));
    {
        cout <<"zalogowano do systemu";
    }

    else
    {
        cout <<"nie zalogowano do systemu";
    }

    }}

    return 0;
}}}}

 

3 odpowiedzi

0 głosów
odpowiedź 3 października 2015 przez niezalogowany
edycja 3 października 2015
 
Najlepsza
Słuchaj, po co ci tyle tych klamerek? I czemu nie podałeś błędu? Chociaż i tak w tym wypadku wszyscy go widzą...
komentarz 3 października 2015 przez filowsky Nowicjusz (150 p.)
edycja 3 października 2015 przez filowsky
Klamerki są jakby dla mnie, żeby móc sobie wszystko rozróżnić, bo jak widać dość zamotany jest ten program, bo w końcu to mój pierwszy program, praktycznie. Czy mógłbyś mi przybliżyć ten błąd?
komentarz 3 października 2015 przez niezalogowany

Nie nie nie, tych klamerek jest po prostu za dużo ;) Nie potrzeba ich aż tyle. Bez nich jest O WIELE czytelniej, a przynajmniej dla... Dla wszystkich ;) Jak chcesz, to sobie rób tyle tych klamerek, ale tylko jeśli jesteś tak uparty ;) Musisz w sobie zaszczepić dobre nawyki, a robienie tylu klamer jest... Dziwne ;D A do tego dajesz średniki na końcu if()-ów i while()-ów. Tak nie można! Wtedy nic się nie wykona ;) Oto gotowy kod, dokładnie go przestudiuj i jakby co to pytaj ;)

#include <iostream>

using namespace std;

string uzytkownik,haslo,powtorzonehaslo,login,password;

int main ()
{
    cout << "Zajerestruj sie" << endl;
    cout << "utworz login:";
    cin >> uzytkownik;

    cout <<"utworz haslo:";
    cin >> haslo;

    cout <<"powtorz haslo:";
    cin >> powtorzonehaslo;

    if(powtorzonehaslo==haslo)
    {
        cout <<"dziekujemy za rejestracje" << endl;
        cout <<"zaloguj sie"<<endl;

        cout <<"podaj login:";
        cin >> login;

        cout <<"podaj haslo:";
        cin >> password;

        if((login==uzytkownik)&&(haslo==password))
        {
            cout <<"zalogowano do systemu";
        }
        else
        {
            cout <<"nie zalogowano do systemu";
        }
    } // tu jest instrukcja poprawna
    else
    {
        while((powtorzonehaslo==haslo))
        {
            cout << "Zajerestruj sie" << endl;
            cout << "utworz login:";
            cin >> uzytkownik;

            cout <<"utworz haslo:";
            cin >> haslo;

            cout <<"powtorz haslo:";
            cin >> powtorzonehaslo;

            if((powtorzonehaslo==haslo))
            {
                cout <<"dziekujemy za rejestracje" << endl;
                cout <<"zaloguj sie"<<endl;

                cout <<"podaj login:";
                cin >> login;

                cout <<"podaj haslo:";
                cin >> password;

                if((login==uzytkownik)&&(haslo==password))
                    cout <<"zalogowano do systemu";
                else
                    cout <<"nie zalogowano do systemu";
            }
        }
    }
    return 0;
}

 

komentarz 3 października 2015 przez filowsky Nowicjusz (150 p.)
Dzięki wielkie :) Jeszcze jestem niedokładny jeśli chodzi o te ważne detale, ale mam czas, zeby się nauczyć i wprawić ;) Niestety, ten poprawiony kod dalej nie działa tak jak chciałem, bo po wprowadzeniu błędnego, powtórzonego hasła program kończy się, nie zapętla rejestracji od nowa... :/
komentarz 3 października 2015 przez Muminek Dyskutant (8,650 p.)

użyj pętli do while poczytaj o niej, pomyśl jak jej użyć.

komentarz 3 października 2015 przez niezalogowany
@filowsky - ale chciałbyś, żebym ci ten kod poprawił i powiedział co poprawiłem, czy powiedzieć co sam masz zrobić?
komentarz 3 października 2015 przez filowsky Nowicjusz (150 p.)
Nie, nie, sam pomyślę w takim razie, dzięki za pomoc :)
komentarz 3 października 2015 przez niezalogowany

W takim razie dam ci tylko parę rad:

  • Nie musisz używać w if()-ach i while()-ach dwóch par nawiasów.
if((zmienna==5)) //<--- nie trzeba tak
if(zmienna==5) //<--- wystarczy tak ;)
  • Jak tworzysz zmienne, to nazywaj je tak, żeby były bardziej czytelne:
int zmiennadruga; //<--- dwa wyrazy połączone w całość
int zmiennaDruga; //<--- widać gdzie się zaczyna kolejny wyraz
int zmienna_druga; //<--- tego nie lubię, bo jest zbyt długie, ale widać wyrazy ;)

Takie dwie małe porady. Działanie kodu będzie oczywiście to samo, ale kod będzie wyglądał przejrzyściej ;)

A jeśli chodzi o twój kod, to mała podpowiedź do niego: możesz zastąpić ten pierwszy blok if() - else jednym while()-em, tyle wystarczy ;)

komentarz 3 października 2015 przez filowsky Nowicjusz (150 p.)
Poszło miękko wszystko, dzięki za dobre rady! :D
komentarz 3 października 2015 przez niezalogowany
Nie ma za co, ucz się dalej ;)
komentarz 25 września 2016 przez pimpek Użytkownik (680 p.)
wystarczy ze w petli while wstawisz while(powtorzonehaslo!=haslo) zamiast while (powtorzonehaslo==haslo).
pzdr
+1 głos
odpowiedź 3 października 2015 przez niezalogowany
Mam wrażenie, że nikt tego nie czyta przed zadaniem pytania, a wiele to by przyspieszyło i ułatwiło:

https://forum.pasja-informatyki.pl/faq
komentarz 3 października 2015 przez filowsky Nowicjusz (150 p.)
Wiem, bez sensu jest to pytanie, bo coś mi się pomyliło i niechcący kliknąłem dodaj w ogóle nie uwzględniając problemu. Otóż, zacząłem sobie pisać dosłownie wczoraj w C++ i postanowiłem napisać program, w którym można się zarejestrować, a następnie po wprowadzeniu odpowiednich danych zalogować. Program ma działać tak:
1. Rejestrujesz się i jeśli powtórzysz hasło bez pomyłki, program przenosi do logowania, jeżeli podasz odpowiednie dane przy logowaniu wyskakuje komunikat "zalogowano do systemu", jeżeli dane są błędne to wyświetla "nie zalogowano do systemu".
2. Inna opcja przy rejestracji: podajesz login, haslo i jesli powtarzasz błędnie hasło to program do skutku przenosi się do "panelu" rejestracji od początku. Jeżeli uda się wpisać w końcu poprawne dane przy rejestracji znowu mamy logowanie, które może zakończyć się powodzeniem lub nie itd.

No i problem pojawia się w tym, że gdy jestem w rejestracji i podaje złe powtórzone hasło to program nie zapętla mi ciągle tej czynności z powrotem do początku rejestracji tylko robi to raz i na tym program się kończy. Co tam trzeba poprawić?
komentarz 25 września 2016 przez pimpek Użytkownik (680 p.)
wystarczy ze w petli while wstawisz while(powtorzonehaslo!=haslo) zamiast while (powtorzonehaslo==haslo).
pzdr
0 głosów
odpowiedź 3 października 2015 przez maciek061 Gaduła (4,490 p.)
W linijce pętli / klasy nigdy nie ma średnika

Podobne pytania

0 głosów
1 odpowiedź 2,652 wizyt
pytanie zadane 2 września 2018 w C i C++ przez Archeon Początkujący (480 p.)
0 głosów
1 odpowiedź 493 wizyt
0 głosów
1 odpowiedź 933 wizyt

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!

...