Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C++ - funkcja zwracająca wartość bool w podejściu obiektowym

Krzycho92 29 Mar 2015 14:48 894 7
  • #1 29 Mar 2015 14:48
    Krzycho92
    Poziom 19  

    Napisałem program, który imituje bankomat. Kod PIN sobie ustaliłem sam, użytkownik musi go wprowadzić - jeśli jest prawidłowy, to można sobie wypłacić pieniądze z konta (jest tam 4000zł), jeśli nie to po 3 próbach program się zamyka.
    Program działa, a jego kod to:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Jako, że teraz uczę się podejścia obiektowego, chciałem przebudować ten program i jednocześnie dodać nowe funkcje, jak: założenie konta, wpłacanie pieniędzy i co jeszcze wymyślę. Wiem, do tego będę musiał stworzyć nowe klasy i metody. Jednak na początku utknąłem na procedurze sprawdzania PINu, która we wcześniejszej wersji programu działała. Teraz, próbuję ją wywołać przez funkcję "bool". Tylko, że albo program w ogóle nie reaguje na poprawny PIN (jakby nie widział prawidłowego "if"), albo nie chce się uruchomić gdy kombinuję z funkcją "bool" (wyświetla, że niewłaściwy typ danych). Dodam, że tym razem chciałem wczytywać i sprawdzać poprawność PINu z pliku (do którego wcześniej program zapisywałby ustalony przez użytkownika PIN), dlatego nie wiem czy do funkcji bool wstawić "PIN" czy "plik".

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0 7
  • #2 29 Mar 2015 15:15
    -psiak-
    Poziom 32  

    Zacznij od zrozumienia podstawowych zasad programowania obiektowego - żadnych cin wewnątrz klasy no chyba że klasa jest interfejsem TUI.
    Powinno to wyglądać mniej więcej:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    Zaś całą filozofię wyświetlania i wprowadzania masz zrobić w main() lub klasie interfejsowej. Chodzi o to aby przy zmianie programu na tryb okienkowy cała obsługa biznesowa pozostała bez żadnych zmian.

    0
  • #3 29 Mar 2015 15:29
    Krzycho92
    Poziom 19  

    @-psiak-
    Myślałem raczej, aby przerobić poprzedni (działający kod) na obiektowy. Twoja propozycja jest dla mnie zbyt skomplikowana - choćby zmienna "unsigned "check" albo "&pin" ("&" to znak przypisania ampersand?). Wolałbym ten kod napisać prostszym "językiem".

    0
  • #4 29 Mar 2015 15:40
    -psiak-
    Poziom 32  

    Czyli chcesz przerobić wóz na samochód ale nadal używając desek i gwoździ?

    Zacznij od zapoznania się podstawowymi typami danych dostępnymi jeszcze od C.
    Następnie poczytaj o referencji.
    Później wygoogłuj zasady OOP.
    Po czym zastanów się nad tym zadaniem jeszcze raz.

    1
  • #5 29 Mar 2015 18:51
    Krzycho92
    Poziom 19  

    Ja ten program rozumiem tak: definiuje klasę dla kodu PIN (niby bez sensu, ale to na początek), w której definiuje zmienne PIN (string) i plik. Potem robię funkcje zapisującą do pliku wprowadzony przez użytkownika PIN (chwilowo ją wyłączyłem, bo chce najpierw naprawić sprawdzanie PINu). Następnie funkcję sprawdzającą PIN - za 3cim razem przy złym wpisaniu PINu program się wyłącza. Na koniec Wyświetlanie prawidłowego PINu, z pliku. Nie działa jedynie weryfikacja, że PIN jest prawidłowy, bo program zapisuje i odczytuje PIN do i z pliku, a także można 3 krotnie go wprowadzić. Tylko program nie "widzi", prawidłowego wprowadzonego PINu i uważa, że jest on zły, a nawet od razu po starcie twierdzi, że PIN jest zły. I dokładnie o to sprawdzenie mi chodzi - jak to zrobić, aby działało.

    [edit]
    Udało mi się problem rozwiązać. Tylko nie jestem pewien, czy funkcja bool jest dobrze zapisana. Wydaje mi się, że w niej powinny być zawarte "return true;" i/lub "return false;". Jednak gdy to dodawałem to sprawdzanie PINu nei działało, więc nie rozumiem tego.
    Kod:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0
  • #6 29 Mar 2015 19:42
    -psiak-
    Poziom 32  

    Jak zrobić aby działało oraz było sensownie - już ci napisałem.
    Nie istnieje czegoś takiego jak funkcja bool przynajmniej w językach C podobnych.
    Jak już mówiłem, musisz przeczytać jakiś kurs z podstaw inaczej rozmawiamy w rożnych językach.

    0
  • #7 29 Mar 2015 20:47
    Krzycho92
    Poziom 19  

    -psiak- napisał:
    Jak zrobić aby działało oraz było sensownie - już ci napisałem.

    Program działa. Tylko nie rozumiem działania funkcji bool.
    +
    -psiak- napisał:
    Nie istnieje czegoś takiego jak funkcja bool przynajmniej w językach C podobnych.

    Owszem, istnieje:
    http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Operacje-logiczne/15
    http://pl.wikipedia.org/wiki/Logiczny_typ_danych

    -psiak- napisał:
    Jak już mówiłem, musisz przeczytać jakiś kurs z podstaw inaczej rozmawiamy w rożnych językach

    Czyli wg Ciebie osoba bez żadnych podstaw napisała by taki programik? Bo moim zdaniem nie mając żadnych podstaw C++ (czy innego języka) nie da się nawet zrozumieć "Hello World!". Wiem, że mało jeszcze umiem, ale powoli idę do przodu.

    0
  • #8 29 Mar 2015 20:54
    -psiak-
    Poziom 32  

    Człowieku tam jest napisano o funkcji zwracającej wartość typu bool.
    Dla mniej rozgarniętych: nie ma tatusia pieniądza, tylko tatuś przynoszący do domu pieniądz.

    To że tobie wydaje się że działa, wcale nie oznacza że tak jest.
    Ba ta twoja funkcja zadeklarowana z chęcią zwracania wartości typu bool zaś go wcale nie zwraca, samo to oznacza że program się nie skompiluje (w normalnym kompilatorze - jest sporo nienormalnych), a więc nie da się tego czegoś nazwać programem działającym.

    0