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

Refaktoryzacja kodu - bankomat w C++

42 Warsaw Coding Academy
0 głosów
9,016 wizyt
pytanie zadane 4 października 2015 w C i C++ przez Kubix Nowicjusz (120 p.)

Witam, postanowiłem stworzyć program symulujący działanie bankomatu. Użytkownik ma 1+3 próby wpisania PINu. Zauważyłem, że dwa razy powtarzam if'a z prawidłowym PIN'em. Mam jeszcze wątpliwości co do użycia pętli do ... while. Czy mógłby ktoś nakierować mnie na uproszczenie kodu? Zamieszczam kod źródłowy poniżej.

#include <iostream>

using namespace std;

string PIN;
int prob=4;

int main() {
    cout << "Witaj w naszym banku!" << endl;
    cout << "Podaj kod PIN: ";
    cin >> PIN;

    if (PIN=="1729")
    {
        cout << "Twoj kod PIN jest poprawny!";
    } else
    do
    {
        prob--;
        cout << "Bledny kod PIN! Pozostalo " << prob <<" prob. Sprobuj ponownie ";
        cin >> PIN;

        if (PIN=="1729")
        {
            cout << "Twoj kod PIN jest poprawny!";
            return 0;
        }

    } while (prob>=2);

    if (prob==1)
    {
        cout << "Twoje konto zostalo zablokowane!";
    }

    return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 4 października 2015 przez criss Mędrzec (172,590 p.)

Jeśli i tak używasz do...while, to dlaczego wszystkiego nie wrzucisz w tą pętle?
 

do{
  //wprowadzanie pinu
}while(PIN != "<poprawny pin>" || prob < max_prob);

 

komentarz 4 października 2015 przez criss Mędrzec (172,590 p.)
Jeśli zalezy ci na tym komunikacie o błędnym pinie to stwórz sobie np. pomocniczego boola który bedzie ustawiany na true po pierwszym obrocie pętli.
if(pomocniczy_bool) wyswietl kominikat
0 głosów
odpowiedź 5 października 2015 przez Bizkhit Użytkownik (980 p.)

Może coś w tym stylu:

bool stan=0;
	do
	{
	   cout << "Podaj pin: ";
	   cin >> pin; 
	   if(pin==prawidlowy_pin)
	   		stan = 1;
	   else 
	      cout << "Bledny pin! Pozostało" << --prob << "prob.";
	}
	while(stan==0&&prob>0);
	if(stan)
	   cout << "Twoj PIN jest poprawny!";
	else 
	   cout << "Konto zablokowane!";

 

Podobne pytania

0 głosów
5 odpowiedzi 794 wizyt
pytanie zadane 17 stycznia 2016 w C i C++ przez Informatyk# Obywatel (1,060 p.)
0 głosów
2 odpowiedzi 914 wizyt
pytanie zadane 17 grudnia 2015 w C i C++ przez varazand Początkujący (320 p.)
0 głosów
1 odpowiedź 803 wizyt
pytanie zadane 16 sierpnia 2016 w C i C++ przez Informatyk# Obywatel (1,060 p.)

93,379 zapytań

142,380 odpowiedzi

322,533 komentarzy

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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...