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

Wpisywanie pinu

Aruba Cloud - Virtual Private Server VPS
0 głosów
649 wizyt
pytanie zadane 28 marca 2024 w C i C++ przez Killer Nowicjusz (240 p.)
edycja 30 marca 2024 przez Killer
Witam

Próbuje dokończyć program ale w pewnym momencie nie mogę znaleźć błędu jakie popełniam aby dokonczyc zadanie. Kazda sugestia mile widziana

1 odpowiedź

0 głosów
odpowiedź 28 marca 2024 przez VBService Ekspert (256,600 p.)
wybrane 30 marca 2024 przez Killer
 
Najlepsza

Nie ma zapisanego warunku dla while

while (?)
{
   // ...
}

pobierasz dane do zmiennej x

cin >> x;

a porównujesz zmienną pin

 if (pin == pin_baza)

 

komentarz 28 marca 2024 przez Killer Nowicjusz (240 p.)
#include <iostream>
#include <string>

using namespace std;

int main()
{

    string pin, pin_baza = "2817";

   int x;

        cout << "Wprowadź czterocyfrowy PIN: ";
        cin >> x;
        while
        {

        if (pin==pin_baza)
        {
        cout << "PIN POPRAWNY" << endl;

        }
        else
        {
            cout << "PIN niepoprawny" << endl;
        }
        }
        cin >> x;

 

 

tak lepiej?
1
komentarz 28 marca 2024 przez VBService Ekspert (256,600 p.)

Zmienna x jest zbędna w Twoim kodzie, zapisz po prostu (użyj zmiennej pin)

cout << "Wprowadź czterocyfrowy PIN: ";
cin >> pin;

dalej nie zapisałeś poprawnie while, w tym przypadku brakuje zapisu

while (pin != pin_baza) // Pętla będzie się powtarzać, dopóki wprowadzony PIN jest niepoprawny
{

}

 

    cout << "Wprowadź czterocyfrowy PIN: ";
    cin >> pin;

    while(pin != pin_baza) // Pętla będzie się powtarzać, dopóki wprowadzony PIN jest niepoprawny
    {
        cout << "PIN niepoprawny. Wprowadź ponownie: ";
        cin >> pin; // Ponowne wczytanie PIN-u
    }

    // Po wyjściu z pętli oznacza to, że wprowadzony PIN jest poprawny
    cout << "PIN POPRAWNY" << endl;

 

komentarz 28 marca 2024 przez Killer Nowicjusz (240 p.)
edycja 28 marca 2024 przez Killer
wszystko już jest okej tylko nie wyświetla siie komunikat pin poprawny

 

#include <iostream>
#include <string>

using namespace std;

int main()
{

    string pin, pin_baza = "2817";

   int x;

        cout << "Wprowadz czterocyfrowy PIN: ";
        cin >> pin;
        while (pin != pin_baza)
        {

        if (pin==pin_baza)
        {
        cout << pin << "PIN POPRAWNY" << endl;

        }
        else
        {
            cout << pin << " PIN niepoprawny, wprowadz kolejny PIN" << endl;
        }
        cin >> pin;
        }

    return 0;
}
komentarz 28 marca 2024 przez VBService Ekspert (256,600 p.)
edycja 28 marca 2024 przez VBService

nie wyświetla siie komunikat pin poprawny

dzieje się tak, ponieważ gdy pin jest wprowadzony poprawny, warunek w 

 while (pin != pin_baza)

staje się nieprawdziwy (false) i pętla while zaprzestaje swoje działanie i wykonywanie kodu przechodzi do kolejnej linii po znaku } czyli w Twoim przypadku do return 0, co w zasadzie kończy działanie programu.

    while(true) // Pętla będzie się powtarzać, dopóki wprowadzony PIN jest niepoprawny
    {
        // ... kod we wnętrzu while
    }

    // while false
    return 0;

 

Sprawdź  [ działający kod on-line ]

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string pin, pin_baza = "2817"; // Wcześniej zadeklarowany poprawny PIN

    cout << "Wprowadź czterocyfrowy PIN: ";
    cin >> pin;

    while(pin != pin_baza) // Pętla będzie się powtarzać, dopóki wprowadzony PIN jest niepoprawny
    {
        cout << "PIN niepoprawny. Wprowadź ponownie: ";
        cin >> pin; // Ponowne wczytanie PIN-u
    }

    // Po wyjściu z pętli oznacza to, że wprowadzony PIN jest poprawny
    cout << "PIN POPRAWNY" << endl;

    return 0;
}

 

komentarz 28 marca 2024 przez Killer Nowicjusz (240 p.)
musze użyc równiez if oraz else
komentarz 28 marca 2024 przez VBService Ekspert (256,600 p.)

W takim razie sprawdź taki zapis  [ kod on-line ]

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string pin, pin_baza = "2817";

    while(true) // nieskończona pętla while
    {
        cout << "Wprowadź czterocyfrowy PIN: ";
        cin >> pin;
         
        if (pin != pin_baza)
        {
            cout << "PIN niepoprawny. Wprowadź ponownie!" << endl;           
        } 
        else
        {
            cout << "PIN POPRAWNY" << endl;
            break; // przerwanie działania while
        }
    }

    return 0;
}

 

komentarz 28 marca 2024 przez Killer Nowicjusz (240 p.)
nie wyswietla sie ostatni komunikat w sensie ze pin poprawny
komentarz 28 marca 2024 przez VBService Ekspert (256,600 p.)

kod działa poprawnie [ link ]

komentarz 28 marca 2024 przez VBService Ekspert (256,600 p.)

nie wyswietla sie ostatni komunikat

w sensie, że program kończy działanie i zamyka się okno?

jeśli tak, sprawdź

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string pin, pin_baza = "2817";

    while(true) // nieskończona pętla while
    {
        cout << "Wprowadź czterocyfrowy PIN: ";
        cin >> pin;
         
        if (pin != pin_baza)
        {
            cout << "PIN niepoprawny. Wprowadź ponownie!" << endl;           
        } 
        else
        {
            cout << "PIN POPRAWNY" << endl;
            break; // przerwanie działania while
        }
    }

    // Oczekiwanie na dodatkowe wejście użytkownika przed zamknięciem konsoli
    cout << "\nNaciśnij dowolny klawisz, aby zamknąć program...\n";
    cin.ignore(); // Ignorowanie poprzedniego znaku nowej linii w buforze wejścia
    cin.get(); // Oczekiwanie na dodatkowe wejście
    return 0;
}

 

komentarz 28 marca 2024 przez Killer Nowicjusz (240 p.)
mam na myśli że program sie konczy bez zadnego komunikatu typu ze pin poprawny
komentarz 28 marca 2024 przez VBService Ekspert (256,600 p.)
Sprawdź kod zasugerowany powyżej.
komentarz 29 marca 2024 przez Killer Nowicjusz (240 p.)
komentarz 29 marca 2024 przez VBService Ekspert (256,600 p.)

Opisałem już Tobie tutaj dlaczego Twój kod nie działa

#include <iostream>
#include <string>

using namespace std;

int main()
{


    string pin, pin_baza = "2817";


   int x;

        cout << "Wprowadz czterocyfrowy PIN: ";
        cin >> pin;
        while (pin != pin_baza)
        {


        if (pin != pin_baza)
        {
        cout << pin << " PIN NIEPOPRAWNY WPROWADZ PONOWNIE" << endl;

        }
        else
        {
            cout << " PIN poprawny" << endl;
        }
        cin >> pin;
        }





    return 0;
}

sprawdź jak działa pętla while

komentarz 29 marca 2024 przez Killer Nowicjusz (240 p.)
tyle że pętli while (true) raczej nie moge użyć bo na lekcji nie miałam jest jakiś inny sposób?
komentarz 29 marca 2024 przez VBService Ekspert (256,600 p.)
edycja 29 marca 2024 przez VBService
Możesz podać pełną treść zadania?
komentarz 29 marca 2024 przez VBService Ekspert (256,600 p.)
edycja 29 marca 2024 przez VBService

Mieliście na lekcjach w ogóle coś o pętlach while? A może jeszcze jakiś innych pętlach?

komentarz 29 marca 2024 przez VBService Ekspert (256,600 p.)
edycja 29 marca 2024 przez VBService

@Killer, 

tyle że pętli while (true) raczej nie moge użyć bo na lekcji nie miałam

ale zawsze się możesz sama douczyć? Chyba w szkole tego nie zabraniają, przecież możesz powołać się np. na Nasze forum, że dowiedziałaś się tego tutaj.

komentarz 29 marca 2024 przez VBService Ekspert (256,600 p.)

@Killer, 

o pętlach while tak ale nie wspominał o while(tue)

bez obrazy, ale kiepskiego macie nauczyciela od informatyki, bo nieskończone pętle to żadna tajemna wiedza. wink

komentarz 29 marca 2024 przez VBService Ekspert (256,600 p.)

Pierwszy lepszy kurs o tym wspomina już na wstępie np.

wykorzystana tu liczba 1 odpoiwada wartości logicznej (boolean) true.

Podobne pytania

–1 głos
2 odpowiedzi 381 wizyt
pytanie zadane 29 sierpnia 2020 w Systemy operacyjne, programy przez Jajestem Użytkownik (670 p.)
0 głosów
2 odpowiedzi 448 wizyt
0 głosów
2 odpowiedzi 762 wizyt
pytanie zadane 22 września 2017 w C i C++ przez heartagram Obywatel (1,770 p.)

93,335 zapytań

142,331 odpowiedzi

322,415 komentarzy

62,670 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

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!

...