Wątek przeniesiony 2018-10-17 21:22 z C/C++ przez furious programming.

Problem ze zmienną w bankomacie

0

Witam, posiadam problem z programem "Bankomat' w C++. Program ma za zadanie na poczatku zapytać nas jaki PIN chcemy ustawić a potem zalogować nas do karty.
W momencie logowania program odczytał że pinem jest slowo "PIN" więc jeżeli podamy na początku wpisany pin np. 1234. Wyrzuci nas do else'a.
I tu jest moje pytanie, co zrobić żeby PINEM który sprawdza warunek IF była zmienna podana na początku?

#include <iostream>
#include <windows.h>
using namespace std;
int proby = 1;
string PIN;
string wybor;
int main ()
{
	cout << "Podaj 4 cyfrowy PIN jaki chcesz uzyc do swojej karty kredytowej: ";
	cin >> PIN;
	cout << "Gratulacje twoj pin to: " << PIN << endl;
    cout << "Czy chcialbys sie teraz zalogowac? Jesli tak prosze wybrac 1: ";
    cin >> wybor;
    if (wybor=="1") ;
    {
    cout << "Prosze wlozyc karte do czytnika..." << endl;
    Sleep (2000);
    cout << "Wykryto karte, teraz prosze podac swoj kod PIN: ";
    cin >> PIN;	
	}
	if (PIN == "PIN") { cout << "Kod PIN poprawny" << endl; exit; }
	else 
	{
	do {
	cout << "Kod PIN jest bledny, prosimy sprobowac jeszcze raz. Wykorzystana ilosc prob: " << proby << endl;
	cout << "Podaj kod PIN: ";
	cin >> PIN;
	if (PIN =="PIN"){ cout << "Kod PIN poprawny"; break; }
	proby= proby+1;
	if (proby == 3) {cout<< "Konto zablokowane, prosimy o kontakt telefoniczny z doradca banku";break; }
} while (proby < 3);		
	}
	return 0;	
	}
0

Po zmianie PIN'u z STRING na DOUBLE, program teraz odczytuje kazdy podany PIN jako prawidlowy...

1

Ty najpierw ładujesz ustawiający PIN do zmiennej o nazwie PIN, a potem ładujesz do niej sprawdzanie PINU, czyli kasujesz poprzednią wartość
cpp if(PIN == "PIN") takim czymś sprawdzasz czy zmienna PIN przechowuje ciąg znaków "PIN"
cpp if(PIN == "DUPA") to sprawdza czy zmienna PIN przechowuje słowo "DUPA"

tak to możesz zrobić:

cout << "Podaj 4 cyfrowy PIN jaki chcesz uzyc do swojej karty kredytowej: ";
cin >> PIN;

string sprawdzPIN;
cout << "Wykryto karte, teraz prosze podac swoj kod PIN: ";
cin >> sprawdzPIN; 
if(sprawdzPIN == PIN)
{
cout << "Kod PIN poprawny" << endl; 
exit;
}
0

Wiem, że to nie na temat, ale podoba mi się wytworne sformułowanie "posiadam problem" :) Chciałoby się powiedzieć: wykonuje wrażenie

0

Udało mi się już wczoraj rozwiązać ten program, oraz rozwiąłem opcje programu, dla zainteresowanych wklejam kod :)

#include <iostream>
#include <windows.h>
#include <time.h>
using namespace std;
int proby2 = 1, kod, kodd,koddd;
double PIN;
int proby = 0;
double login;
string wybor;
string loginn;
string haslo;
string logowanie;
string haselko;
string wybor2;
string numerkonta;
string kwota;
string wybor3;
int main ()
{
	
{


cout << "REJESTRACJA KONTA" << endl;
cout << "Wpisz nazwe konta jakiej chcesz uzyc: ";
cin >> loginn;
cout << "Wpisz swoje haslo: ";
cin >> haslo;
system ("cls");
cout << "Rejestracja konta przebiegla pomyslnie, teraz prosze sie zalogowac: " << endl;
}


{

cout << "LOGOWANIE DO KONTA" << endl;
cout << "Prosze wpisac wczesniej utworzony login: ";
cin >> logowanie;
cout << "Teraz prosze podac haslo do konta: ";
cin >> haselko;
system ("cls");
}
if((logowanie == loginn)&&(haselko == haslo))
{
	cout << "Logowanie udane" << endl;
}
else
{
	do {
	if (proby == 2) {cout << "Zostala ci ostatnia proba, po niej konto zostanie zablokowane" << endl;}
	cout << "Podane haslo lub login jest niepoprawny" << endl;
	cout << "Prosze sprobowac jeszcze raz, pozostala ilosc prob: " << proby << endl;
	cout << "Prosze podac login: " ;
	cin >> logowanie;
	cout << "Teraz prosze podac haslo: ";
	cin >> haselko;
	if ((logowanie == loginn)&&(haselko == haslo))
	{cout << "Dane poprawne" << system ("cls") << endl; break;}
	proby= proby+1;
	
	if (proby == 3) {cout << "Konto zablokowane, prosimy o kontakt telefoniczny z doradca banku";break;}
}while (proby < 3);

}
	cout << "[1] - Ustawia kod PIN do karty i testowo loguje sie do niej" << endl;
	cout << "[2] - Wyswietla ustawienia konta" << endl;
	cout << "[3] - Dokonuje przelewu na podany numer konta" << endl;
	cout << "Prosze dokonac wyboru: ";
	cin >> wybor2;
	if (wybor2=="1")
	{
	cout << "Podaj 4 cyfrowy PIN jaki chcesz uzyc do swojej karty kredytowej: ";
	cin >> PIN;
	cout << "Gratulacje twoj pin to: " << PIN << endl;
	{
    cout << "Po zaladowaniu sie funkcji prosze wpisac swoj kod PIN..." << endl;
    Sleep (2000);
    cout << "Prosze podac swoj kod PIN: ";
    cin >> login;
	}
	if (login == PIN ) { cout << "Kod PIN poprawny" << endl;  }
	else 
	{
	do {
	cout << "Kod PIN jest bledny, prosimy sprobowac jeszcze raz. Wykorzystana ilosc prob: " << proby << endl;
	cout << "Podaj kod PIN: ";
	cin >> login;
	if (login == PIN ){ cout << "Kod PIN poprawny"; break; }
	proby= proby+1;
	if (proby == 2) {cout << "Zostala ci ostatnia proba, po niej konto zostanie zablokowane" << endl;}
	
	if (proby == 3) {cout << "Konto zablokowane, prosimy o kontakt telefoniczny z doradca banku";break; }
} while (proby < 3);		
	}
	}
	if (wybor2=="2"){
	cout << "Login: " << loginn << endl;
	cout << "Haslo: *******" << endl;
	cout << "Karta Kredytowa: TAK" << endl;
	
	}
    if (wybor2=="3")
    {
    system ("cls");	
    cout << "Prosze podac numer konta oraz kwote na jaka ma zostac zrobiony przelew" << endl;
    cout << "Numer Konta: ";
	cin >> numerkonta;	
	cout << "Kwota: ";
	cin >> kwota;
	cout << "Czy napewno chcesz dokonac przelewu na Numer Konta: "<<numerkonta<<" oraz na kwote  "<<kwota<<" PLN wpisz 'TAK' "<< endl;
	cin >> wybor3;
	if (wybor3=="TAK")
	{
    srand (time(NULL));
    kod = rand()%9999+1;
    cout << "Za chwile zostanie wygenerowany kod potwierdzenia platnosci..." << endl;
    Sleep (2000);
    cout << "KOD POTWIERDZENIA TO: "<<kod<< " PO WPISANIU GO PRZELEW ZOSTANIE ZATWIERDZONY"<< endl;
    cout << "Wpisz wyswietlony wyzej kod: ";
    cin >> kodd;
    if (kodd==kod)
    {
  cout << "Kod jest poprawny przelew na konto "<<numerkonta<<" na kwote "<<kwota<<" zostal zatwierdzony i zrealizowany" << endl;
	}
    else
    do
    {
    cout << "Kod potwierdzenia jest nie poprawny,za chwile zostanie wygenerowany nowy ale i ostatni kod " << endl;
    koddd = rand()%9999+1;
    Sleep (2000); 
    proby=proby+1;
    cout << "Nowy kod to: "<<koddd<" prosze o wpisanie go: ";
    cin >> kodd;
    if (kodd==koddd) 
    {
	cout << "Kod jest poprawny przelew na konto "<<numerkonta<<" na kwote "<<kwota<<" zostal zatwierdzony i zrealizowany"; break;
	}
    if (proby2==2){
    cout << "Wprowadzony kod jest bledny, transakcja zostala anulowana. Za chwile zostaniesz wylogowany z konta"; break;	
	}
    	
	}while(proby2<2);	
    	
    	
    	
    	
	}

    }


    	
    	
    	
    return 0;	
	}

0

"Hasło", "hasełko", what could go wrong

0
Jakub Błoński napisał(a):

Udało mi się już wczoraj rozwiązać ten program, oraz rozwiąłem opcje programu, dla zainteresowanych wklejam kod :)

Pomijając zmienne globalne i upchanie wszystkiego do main - kod jest niepoprawny.

  • użycie std::string bez załączenia nagłówka <string>
  • bez względu na na to jaki podamy login i hasło tak czy siak w końcu program przeniesie nas do menu zarządzania kontem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1