• 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.

Object Storage Arubacloud
0 głosów
447 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,416 wizyt
pytanie zadane 2 września 2018 w C i C++ przez Archeon Początkujący (480 p.)
0 głosów
1 odpowiedź 338 wizyt
0 głosów
1 odpowiedź 592 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...