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

Zaakceptowanie liczby z zakresu 1-1000, wieksze liczby mają zostać odrzucone.

VPS Starter Arubacloud
0 głosów
176 wizyt
pytanie zadane 13 października 2016 w C i C++ przez Błażej Szczesny Początkujący (330 p.)

Witam. Mam pewien dylemat w moim pierwszym programie c++

Otóż w ostatnim pytaniu nie wiem jakiego kodu użyć aby akceptowało tylko liczby (a w zasadzie kwotę) z zakresu 1-1000.

Działa mi tylko wtedy gdy podam liczbę w cztero cyfrowej postaci, a chcę aby działało normalnie :)

W miejscu w jakim mam problem podałem komentarz.

Oto mój kod:

#include <iostream>
#include <cstdlib>

using namespace std;

    string PIN,login,haslo,rok,kwota;

int main()
{
    cout<<"podaj login:" <<endl;
    cin>>login;
    cout<<"podaj haslo:" <<endl;
    cin>>haslo;

    if ((login=="blazej")&&(haslo=="uczy"))
        {
            cout<<"uda³o sie zalogowac!!!" <<endl;
            system( "cls" );
        }
        else
        {
            cout<<"Bledne dane logowania" <<endl;
            cout<<"podaj wlasciwe dane logowania!"<<endl;
            cout<<"Nastapi wylogowanie..." ;
            exit( 0 ) ;

            system( "cls" );
        }

    cout << "Witaj w banku!" << endl;
    cout << "podaj numer pin swojej karty:" ;
    cin >> PIN;

    if (PIN=="1562")
    {
        cout<<"POPRAWNY PIN!"  <<endl;


    }
    else
    {
        cout<<"Zly pin!" ;

    }
        system( "cls" );
        cout<<"potwierdz swoj wiek! (podaj rok urodzenia):"<<endl;
        cin>>rok ;

    if (rok=="1997")
    {
        cout<<"Jestes dorosly, zapraszamy do wyplaty pieniedzy!:" <<endl;
        system( "cls" );
    }
    else
    {
        cout<<"Nie jestes pelnoletni!" <<endl;
        cout<<"Zapraszamy do naszego banku po ukonczeniu 18 roku zycia!"<<endl;
        cout<<"Nastapi wylogowanie..." ;
        exit( 0 ) ;
    }
        {
         cout<<"Srodki dostepne na koncie:1000zl"  <<endl;
         cout<<"Kwote jaka chcesz podac zapisz w wartosci cztero cyfrowej. NP 500zapisz w postaci 0500:" <<endl;
         cout<<"Jaka kwote pieniedzy chcesz wyplacic?(zl):" <<endl;

         cin>>kwota ;
        }
        if(kwota<="1000") //chodzi mi o ten kod

        {
            cout<<"Pieniadze mozesz odebrac w dolnej czesci bankomatu!"<<endl;
        }
        else
        {
            cout<<"nie posiadasz wystarczajacych srodkow na koncie!"<<endl;
            cout<<"sprobuj jeszcze raz, wyplacic mniejsza kwote!" <<endl;
            cout<<"Nastapi wylogowanie..." <<endl;
            exit( 0 ) ;
        }

            cout<<"zapraszamy do naszego banku ponownie !" ;


    return 0;
}

 

3 odpowiedzi

+1 głos
odpowiedź 13 października 2016 przez luknik360 Początkujący (460 p.)
wybrane 13 października 2016 przez Błażej Szczesny
 
Najlepsza
Hej

Zdaje się, że operujesz na stringach (ciągach znaków - czyli tekście a nie na liczbach). Używanie znaków " powoduje że jest to interpretowane jako tekst, czyli, a porównanie czy tekst jest większy niż tekst to nie to na czym Ci zależy, kwota powinna być typu int i porównanie powinno wyglądać kwota<=1000

Dodam jeszcze od siebie, że warto żebyś w przypadku sprawdzania pełnoletności zrobił to także za pomocą zmiennej typu int, czyli ustalasz sobie zmienną rok = 2016, i zmienną przechowująca datę urodzenia a potem sprawdzasz czy rok-twojaData >= 18
komentarz 13 października 2016 przez Błażej Szczesny Początkujący (330 p.)
gdy zmieniam if (kwota<="1000") na if (kwota<=1000) to pokazuje mi się błąd w budowie tego kodu :/
komentarz 13 października 2016 przez luknik360 Początkujący (460 p.)
I nic dziwnego, przeanalizuj 6 linijkę Twojego kodu. zmienna kwota to string i porównujesz ją do liczby (int). Zamiast string kwota potrzebujesz utworzyć zmienną typu int i ją porównywać do liczby 1000
+1 głos
odpowiedź 13 października 2016 przez Rivelon Użytkownik (700 p.)
if (rok=="1997")

Tu może byłoby warto zmienić na rok<=1997

 

O samym błędzie spróbuj rok i kwote zapisać jako double albo int zamiast stringa. String służy do przechowywania łańcucha znaków (słów), a nie liczb.
0 głosów
odpowiedź 13 października 2016 przez Błażej Szczesny Początkujący (330 p.)

Już wszystko działa pięknie :)

Dzięki za pomoc wszystkim. 

Teraz będę musiał uczyć się bardziej zaawansowanych kodów :D

Oto naprawiony kod:

#include <iostream>
#include <cstdlib>
#include <stdio.h>

using namespace std;


    string PIN,login,haslo;


    int main()

{


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

    if ((login=="blazej")&&(haslo=="uczy"))
        {
            cout<<"uda³o sie zalogowac!!!" <<endl;
            system( "cls" );
        }
        else
        {
            cout<<"Bledne dane logowania" <<endl;
            cout<<"podaj wlasciwe dane logowania!"<<endl;
            cout<<"Nastapi wylogowanie..." ;
            exit( 0 ) ;

            system( "cls" );
        }

    cout << "Witaj w banku!" << endl;
    cout << "podaj numer pin swojej karty:" ;
    cin >> PIN;

    if (PIN=="1562")
    {
        cout<<"POPRAWNY PIN!"  <<endl;
    }
    else
    {
        cout<<"Zly pin!" ;


    }
        system( "cls" );
        int rok=2016,kwota,data;

        cout<<"potwierdz swoj wiek! (podaj rok urodzenia):"<<endl;
        cin>>data;


    if (rok-data>=18)
        {
            cout<<"Jestes dorosly, zapraszamy do wyplaty pieniedzy!:" <<endl;
            system( "cls" );
        }
        else
        {
            cout<<"Nie jestes pelnoletni!" <<endl;
            cout<<"Zapraszamy do naszego banku po ukonczeniu 18 roku zycia!"<<endl;
            cout<<"Nastapi wylogowanie..." ;
            exit( 0 ) ;
        }
        {
         cout<<"Srodki dostepne na koncie:1000zl"  <<endl;
         cout<<"Jaka kwote pieniedzy chcesz wyplacic?(zl):" <<endl;
         cin>>kwota ;
        }

        if (kwota<=1000)

        {
            cout<<"Pieniadze mozesz odebrac w dolnej czesci bankomatu!"<<endl;
        }
        else
        {
            cout<<"nie posiadasz wystarczajacych srodkow na koncie!"<<endl;
            cout<<"sprobuj jeszcze raz wyplacic mniejsza kwote!" <<endl;
            cout<<"Nastapi wylogowanie..." <<endl;
            exit( 0 ) ;
        }

            cout<<"zapraszamy do naszego banku ponownie !" ;

    getchar();getchar();
    return 0;
}

 

Podobne pytania

0 głosów
2 odpowiedzi 221 wizyt
0 głosów
1 odpowiedź 443 wizyt
0 głosów
0 odpowiedzi 90 wizyt
pytanie zadane 11 września 2016 w C i C++ przez dawid2002 Mądrala (5,190 p.)

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...