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++ - Pętla program kalkulacyjny

Nathian93 14 Lip 2013 14:35 924 4
  • #1 14 Lip 2013 14:35
    Nathian93
    Poziom 2  

    Cześć elektrody!

    Mam problem z pętlą mojego programu (zamysł jest taki żeby zrobić prostą aplikację konsolową, która rozwiązuje większość problemów matematycznych w liceum).

    Postanowiłem rozbić cały tekst na 3 części, funkcje main(), DrawMenu() oraz w osobnym pliku wszystkie funkcje obliczeniowe.

    Próbka DrawMenu() :

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Próbka funkcji liczącej, tak wiem że jest nie taka jak potrzebuje, ale jeszcze nie miałem pomysłu jak ją przerobić :< :
    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Przy pomocy zmiennych int menu i bool redraw zrobiłem pięknie menu do całości, ale mam problem z programem właściwym.

    Chciałem osiągnąć taki efekt, że po przejściu do funkcji za każdym razem jak użytkownik naciśnie escape, to przerzuci go do menu głównego. Jak naciśnie jakikolwiek znak, to program nie zareaguje, a po nacisnieciu cyfry normalnie zmieniaja sie wartosci zmiennych. Czy to w ogole jest mozliwe do osiagniecia?

    Od razu przepraszam za zamęt, jestem początkujący w c++, siedzę w tym od kilku dni. Projekt pewnie jest zbyt trudny jak na moje umiejętności, ale stwierdziłem że to lepszy sposób nauki niż klepanie książek.

    0 4
  • Pomocny post
    #2 14 Lip 2013 14:54
    Dżyszla
    Poziom 42  

    Tak, jest. robisz to także poprzez getch() w takim mniej więcej warunku-pętli:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    Potem taką funkcję wywołujesz w miejscu, gdzie chcesz podać liczbę i jeśli zwróci Ci false - przerywasz działania.

    (Za ewentualnie potknięcia w kodzie przepraszam, ale nie obcuję na co dzień z C)

    Oczywiście przykład dotyczy liczb całkowitych, ale łatwo można rozwinąć o ułamki.

    0
  • #3 14 Lip 2013 15:13
    Nathian93
    Poziom 2  

    Rozumiem, że dzięki temu że nie ma w ogóle default program wcale nie reaguje na inne znaki niż podane?

    A czy mógłbyś dokładniej mi opisać co daje linijka
    zmienne = zmienna * 10 + (c - '0'); ?

    0
  • Pomocny post
    #4 14 Lip 2013 15:22
    Dżyszla
    Poziom 42  

    "Dopisuje" do liczby wciśniętą cyfrę.

    Bardziej "naukowo": Przesuwa obecną cyfrę w lewo (w systemie dziesiętnym), przez co na miejscu jedności powstaje zero, do którego wpisywana jest wartość wciśniętego klawisza pomniejszona o wartość klawisza '0', co daje po prostu wciśniętą cyfrę ('0' - '0' = 0, '1' - '0' = 1 itd... Opiera się to na kodach ASCII znaków).

    Tak, wszystkie pozostałe znaki są ignorowane. Oczywiście funkcja raczej wymaga jeszcze zrobienia takich rzeczy, jak wyświetlanie, czy możliwość kasowania, ale w samym działaniu już zadziała ;)

    0
  • #5 14 Lip 2013 15:35
    Nathian93
    Poziom 2  

    Okej, jesteś wielki! Bo właśnie podchodziłem do tej pętli kilka razy i miałem problemy z wpisywaniem liczb większych od 9.
    Spijam kawkę i przystępuję do działania, jest nowa motywacja! :D

    Odblokowano na prośbę autora. [adamas_nt]

    0