logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

C++Builder 6 – jak napisać graficzny kalkulator wzorowany na kalkulatorze Windows?

kryst85 21 Mar 2006 17:23 3065 4
REKLAMA
  • #1 2441107
    kryst85
    Poziom 12  
    Posty: 85
    Ocena: 1
    Witam
    Problem jest nastepujacy
    potrzebuje zrobic kalkulator w c++ ale graficzny (na zwyklych buttonach jakie sa w programie c++Builder6 )
    Kalkulator ma dokladnie dzialac jak ten windowsowski
    Czyli
    1) na poczatku w polu textowym ma byc 0
    2)gdzy przycisne przycisk 1 to cyfra podmienia sie pod te zero
    3)jak dodaje druga liczbe to poprzednia sie kasuje w polu textowym i gdzies sie tam w programie zapamietuje
    4) jak naciskam przycisk = to pole tekstowe zas sie czysci i wpisuje wynik dodawania.
    chyba dosc jasno opisalem :)
    wystarczy ze napiszecie mi kalkulator na 4 przyciskach ( czyli dwie liczby np.1 i 2 , przycisk + i przycisk = ) reszte sam wykombinuje.
  • REKLAMA
  • Pomocny post
    #2 2441967
    kordan11
    Poziom 18  
    Posty: 241
    Pomógł: 24
    Ocena: 10
    Wstawiasz pole tekstowe i nazywasz go np.: wynik i jako wartosć ustawiasz 0 (w opcjach)
    Potem robisz 10 butonów z liczbami 0..9 i x butonów z działaniami
    Do kazdego przycisku dajesz
    
    if(wynik->text=="0"){
    wynik->text="liczba";}
    else{
    wynik->text=wynik->text+"liczba";}
    

    Potem tworzysz 2 zmienne globalne dzialanie (char, AnsiString), pamiec (int)
    Jeżeli wciśnie znak działania to zapamiętujesz nazwe działania (nazwij jak chcesz) do zmiennej działanie, a do pamiec aktualną wartoś pola wynik, wygląda to tak
    
    if(dzialanie=="dodaj"){
    pamiec=StrToInt(wynik->text)*pamiec;
    wynik->text=IntToStr(pamiec);}
    elseif(...){...}//reszta dzialan
    else{
    pamiec=StrToInt(wynik->text);}
    dzialanie="dodaj";
    

    Jak da = to poprostu robisz
    
    if(dzialanie=="dodaj"){
    pamiec=StrToInt(wynik->text)*pamiec;
    wynik->text=IntToStr(pamiec);}
    elseif(...){...}//reszta dzialan
    

    Niewiem czy to działa bo niesprawdzałem i niewiem czy się gdzieś nie pomyliłem, jest to dla bcb.
  • REKLAMA
  • #3 2463634
    kryst85
    Poziom 12  
    Posty: 85
    Ocena: 1
    wszystko super pieknie dziala :) dzieki
    no ale jest kolejny problem
    jak dodaje liczby np.: 2,4 + 2,8 to wypisuje mi wynik 5,19999980926514 jak to zrobic aby to zaokraglilo ?? zmienne przecinkowe mam jako float bo double i char mi nie przyjmuje ;/
  • REKLAMA
  • #4 2464041
    kordan11
    Poziom 18  
    Posty: 241
    Pomógł: 24
    Ocena: 10
    są takie funkcje jak ceil() i floor()
  • Pomocny post
    #5 2465054
    gacolini
    Poziom 19  
    Posty: 305
    Pomógł: 36
    Ocena: 15
    Możesz to zrobić tak :

    EditWynik->Text = FloatToStrF(MojWynik,ffFixed,LICZBA_MIEJSC_PO_PRZECINKU,LICZBA_PRZED_PRZECINKIEM);


    Pozdro
REKLAMA