Skocz do zawartości

Rozwiązania zadań z kursu


# CSH External VIP Project

Masz dosyć problemów z czynnikiem zaufania w CS2 lub notorycznymi banami?

Sprawdź CSH External VIP Project.


Więcej informacji  

Rekomendowane odpowiedzi

Kalkulator:

 

A więc zaczynamy od tworzenia gui i przypisania kontrolek do zmiennych :D.

#include <GUIConstantsEx.au3>

GuiCreate("Kalkulator by ...", 230, 100)
$inpLiczba1=GuiCtrlCreateInput("",15,15,50,20)
$labZnak=GuiCtrlCreateLabel("z",75,15)
$inpLiczba2=GuiCtrlCreateInput("",90,15,50,20)
GuiCtrlCreateLabel("=",145,15);tego zmieniac nie bedziemy wiec tu zmienna nie jest potrzebna <img src='http://www.cshacked.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.png' class='bbc_emoticon' alt=':D' />
$inpWynik=GuiCtrlCreateInput("",160,15,50,20)

$btnPlus=GuiCtrlCreateButton("+",15,50,30)
$btnMinus=GuiCtrlCreateButton("-",50,50,30)
$btnRazy=GuiCtrlCreateButton("*",85,50,30)
$btnPodziel=GuiCtrlCreateButton("/",120,50,30)

$btnRowne=GuiCtrlCreateButton("=",170,50,30)

GUISetState()

While GuiGetMsg() <> $GUI_EVENT_CLOSE

WEnd


 

Teraz musimy pomyśleć za co będą wykonywać przyciski. A więc wszystkie przyciski oprócz przycisku "=" będą zmieniać label zawierający znak "z" na swój znak- czyli jeśli wciśniemy przycisk "+" to zamiast literki z ma się pojawić "+". Do zamiany użyjemy funkcji GUICtrlSetData(). Piszemy więc odpowiedni kod w głównej pętli programu i trochę to główną pętle modyfikujemy:

$msg=GUIGetMsg();zmienna musi być tutaj zadeklarowana bo inaczej wystąpi błąd przy starcie pętli.
While $msg <> $GUI_EVENT_CLOSE
$msg=GUIGetMsg();umieszczamy GuiGetMsg() w pętli, zeby program caly czas sprawdzal, czy wcisnelismy jakis button lub krzyzyk.
Select
Case $msg=$btnPlus ;jesli wcisniemy $btnPlus to:
GUICtrlSetData($labZnak,"+")
Case $msg=$btnMinus ;jesli wcisniemy $btnMinus to:
GUICtrlSetData($labZnak,"-")
Case $msg=$btnRazy ;jesli wcisniemy $btnRazy to:
GUICtrlSetData($labZnak,"*")
Case $msg=$btnPodziel ;jesli wcisniemy $btnPodziel to:
GUICtrlSetData($labZnak,"/")
EndSelect
WEnd


 

Teraz trzeba dodać obsługę buttona "=". Będzie to chyba najtrudniejsza część zadania :D. Dodajemy więc w głównej pętli programu obsługę buttona "="

Case $msg=$btnRowne ;jesli wcisniemy $btnRowne to:

$znak=GUICtrlRead($labZnak);odczytujemy z labela jaki znak jest obecnie ustawiony.
$liczba1=GuiCtrlRead($inpLiczba1);odczytujemy pierwszą liczbę z pola input
$liczba2=GUICtrlRead($inpLiczba2);odczytujemy druga liczbę z pola input

Select
Case $znak="z";jesli znak jest literą z to:
MsgBox(0,"Bład", "Nie wybrałes zadnej operacjii matematycznej");powiadomienie o błędzie

Case $znak="+";jesli znak to "+" to:
$wynik=$liczba1+$liczba2;obliczenie sumy i przypisanie jej do zmiennej wynik
GUICtrlSetData($inpWynik,$wynik)

Case $znak="-";jesli znak to "-" to:
$wynik=$liczba1-$liczba2;obliczenie roznicy i przypisanie jej do zmiennej wynik
GUICtrlSetData($inpWynik,$wynik)

Case $znak="*";jesli znak to "*" to:
$wynik=$liczba1*$liczba2;obliczenie iloczynu i przypisanie jej do zmiennej wynik
GUICtrlSetData($inpWynik,$wynik)

Case $znak="/";jesli znak to "/" to:
If $liczba2=0 Then ;jesli dzielnik jest rowny 0
MsgBox(0,"Blad","Nie dziel przez zero <img src='http://www.cshacked.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.png' class='bbc_emoticon' alt=':D' />");wyswietlenie błedu
Else;w przeciwnym wypadku:
$wynik=$liczba1/$liczba2;obliczenie ilorazu i przypisanie jej do zmiennej wynik
GUICtrlSetData($inpWynik,$wynik)
EndIf
EndSelect


 

Rozwikłaliśmy trudną zagadkę kalkulatora :D. W razie gdyby jednak ktoś miał problemy z kopiowaniem to wrzuce jeszcze raz cały kod :D

#include <GUIConstantsEx.au3>

GuiCreate("Kalkulator by ... Yubasek <img src='http://www.cshacked.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.png' class='bbc_emoticon' alt=':D' />", 230, 100)
$inpLiczba1=GuiCtrlCreateInput("",15,15,50,20)
$labZnak=GuiCtrlCreateLabel("z",75,15)
$inpLiczba2=GuiCtrlCreateInput("",90,15,50,20)
GuiCtrlCreateLabel("=",145,15);tego zmieniac nie bedziemy wiec tu zmienna nie jest potrzebna <img src='http://www.cshacked.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.png' class='bbc_emoticon' alt=':D' />
$inpWynik=GuiCtrlCreateInput("",160,15,50,20)

$btnPlus=GuiCtrlCreateButton("+",15,50,30)
$btnMinus=GuiCtrlCreateButton("-",50,50,30)
$btnRazy=GuiCtrlCreateButton("*",85,50,30)
$btnPodziel=GuiCtrlCreateButton("/",120,50,30)

$btnRowne=GuiCtrlCreateButton("=",170,50,30)

GUISetState()

$msg=GUIGetMsg()
While $msg <> $GUI_EVENT_CLOSE
$msg=GUIGetMsg();umieszczamy GuiGetMsg() w pętli, zeby program caly czas sprawdzal, czy wcisnelismy jakis button lub krzyzyk.
Select
Case $msg=$btnPlus ;jesli wcisniemy $btnPlus to:
GUICtrlSetData($labZnak,"+")

Case $msg=$btnMinus ;jesli wcisniemy $btnMinus to:
GUICtrlSetData($labZnak,"-")

Case $msg=$btnRazy ;jesli wcisniemy $btnRazy to:
GUICtrlSetData($labZnak,"*")

Case $msg=$btnPodziel ;jesli wcisniemy $btnPodziel to:
GUICtrlSetData($labZnak,"/")

Case $msg=$btnRowne ;jesli wcisniemy $btnRowne to:

$znak=GUICtrlRead($labZnak);odczytujemy z labela jaki znak jest obecnie ustawiony.
$liczba1=GuiCtrlRead($inpLiczba1);odczytujemy pierwszą liczbę z pola input
$liczba2=GUICtrlRead($inpLiczba2);odczytujemy druga liczbę z pola input

Select
Case $znak="z";jesli znak jest literą z to:
MsgBox(0,"Bład", "Nie wybrałes zadnej operacjii matematycznej");powiadomienie o błędzie

Case $znak="+";jesli znak to "+" to:
$wynik=$liczba1+$liczba2;obliczenie sumy i przypisanie jej do zmiennej wynik
GUICtrlSetData($inpWynik,$wynik)

Case $znak="-";jesli znak to "-" to:
$wynik=$liczba1-$liczba2;obliczenie roznicy i przypisanie jej do zmiennej wynik
GUICtrlSetData($inpWynik,$wynik)

Case $znak="*";jesli znak to "*" to:
$wynik=$liczba1*$liczba2;obliczenie iloczynu i przypisanie jej do zmiennej wynik
GUICtrlSetData($inpWynik,$wynik)

Case $znak="/";jesli znak to "/" to:
If $liczba2=0 Then ;jesli dzielnik jest rowny 0
MsgBox(0,"Blad","Nie dziel przez zero <img src='http://www.cshacked.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.png' class='bbc_emoticon' alt=':D' />");wyswietlenie błedu
Else;w przeciwnym wypadku:
$wynik=$liczba1/$liczba2;obliczenie ilorazu i przypisanie jej do zmiennej wynik
GUICtrlSetData($inpWynik,$wynik)
EndIf
EndSelect
EndSelect
WEnd

Pozdrawiam,

Yubasek.

Odnośnik do komentarza

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Regulamin. Polityka prywatności