Kalkulačka – Visual Basic – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kalkulačka – Visual Basic – Fórum – Programujte.comKalkulačka – Visual Basic – Fórum – Programujte.com

 

anajkaa@seznam.cz
~ Anonymní uživatel
1 příspěvek
12. 4. 2009   #1
-
0
-

Ahoj! Nevíte někdo náhodou,jak se dá udělat v Basicu kalkulačka? Předem díky..( anajkaa@seznam.cu)

Nahlásit jako SPAM
IP: 77.48.50.–
ata20
Newbie
18. 4. 2009   #2
-
0
-

To anajkaa@seznam.cz : Vím :-)

Nahlásit jako SPAM
IP: 92.62.226.–
18. 4. 2009   #3
-
0
-

Nejjednoduší, pokud chceš pracovat uplně bez proměnných je primitivní forma kalkulačky kde jsou čtyři textové pole a jedno tlačítko s tím, že uživatel do jednoho pole napíše číslo, se kterým chce pracovat, do druhého pole napíše číslo, se kterým chce provádět mat. operaci vůči 1. čislu a do třetího znak požadované operace (/,*,+,-)s tím, že při stisknutí tlačítka bude nejaky takový příkaz.
Samozřejmě by to šlo ošetřit, aby v textových polích byly jen požadované znaky (čísla a +-*/), ale tohle mi přijde jako nejjednoduší možná verze.
Edit: Omlouvám se. V mém kódě je chyba, v případě sčítaní program nesčítá čísla, ale přidává znaky, proto se asi bez proměnných neobejdeš. V tom případě ale stačí kód jen trochu pozměnit:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim cisloprvni As Integer
Dim cislodruhe As Integer
cisloprvni = TextBox1.Text
cislodruhe = TextBox2.Text
If TextBox3.Text = "/" Then TextBox4.Text = cisloprvni / cislodruhe
If TextBox3.Text = "*" Then TextBox4.Text = cisloprvni * cislodruhe
If TextBox3.Text = "+" Then TextBox4.Text = cisloprvni + cislodruhe
If TextBox3.Text = "-" Then TextBox4.Text = cisloprvni - cislodruhe
End Sub

Kód je psán v Visual Studiu 2008, proto v jiných verzích může být trochu jiný. (Například ve VB 6 se textové pole jmenuje TextX , ne textboxX

Nahlásit jako SPAM
IP: 77.48.44.–
Beata
~ Anonymní uživatel
1 příspěvek
25. 1. 2011   #4
-
0
-

For Pete :) doporucuju kalkulacku mn- od sencoru cena/vykon pomer jednoznacne nejlepsi ideal SEC 185 no ale mozna i o tridu vejs - kup to pres net - cena - zkus zbozi na seznamu nebo dopo elektro-sencor.cz od original shopu to chodi a dobra cena - CUS

Nahlásit jako SPAM
IP: 88.100.12.–
CZechBoY+4
Věrný člen
26. 1. 2011   #5
-
0
-

kalkulačka s 1 textboxem nebo 2?
milan.009: trošku děravý, dělení nulou, počíátání s řetězcema :D

Nahlásit jako SPAM
IP: 195.113.165.–
jkonopasek0
Návštěvník
27. 1. 2011   #6
-
0
-

pro VB6

volání funkce např.

Text1.Text = Calc(Text1.Text)

Pokud je na prvním místě TextBoxu "=", předpokládá funkce vzorec.
Předpokládaný text např.
Text1.Text = "1+10/58-5*28/78954+2"

Za textem 'InfoZ je zřejmé,co funkce kontroluje (a tím pádem umí, např. neumí závorky)

Public Function Calc(ByVal aT As String) As String
Calc = aT
If Delka(aT) = 0 Then
Calc = "0"
Exit Function
End If
If Mid(aT, 1, 1) <> "=" Then Exit Function

Dim aPovoleno As String
Dim aChyba As Boolean, Prac_Double As Double
Dim aI As Integer, aJ As Integer
Dim aZac As Integer, aKon As Integer, aPoz As Integer, aPoc As Integer
Dim aU As String, aV As String
Dim aCis(100) As Double, aOper(100) As String * 1
Dim Zadani As String

aPovoleno = "0123456789+-*/.,"
Zadani = aT

aChyba = False: aT = Mid(Trim(aT), 2)
Calc = aT
For aI = 1 To Len(aT)
aPoz = aI
aZac = 0
aU = Mid(aT, aI, 1)
For aJ = 1 To Len(aPovoleno)
If aU = Mid(aPovoleno, aJ, 1) Then
aZac = 1: Exit For
End If
Next aJ
If aZac = 0 Then
aChyba = True: Exit For
End If
Next aI
If aChyba = True Then
'InfoZ 0.5, "Nepovolený znak", True, False
Calc = Zadani: Odpoved = False: Exit Function
End If

aChyba = True
For aI = 1 To Len(aT)
aU = Mid(aT, aI, 1)
If aU = "+" Or aU = "-" Or aU = "*" Or aU = "/" Then
aChyba = False: Exit For
End If
Next aI
If aChyba = True Then
'InfoZ 0.5, "Žádný operátor +-*/", True,False
Calc = Zadani: Odpoved = False: Exit Function
End If

For aI = 1 To Len(aT) - 1
aPoz = aI
aU = Mid(aT, aI, 1)
aV = Mid(aT, aI + 1, 1)
If aU = "+" Or aU = "-" Or aU = "*" Or aU = "/" Then
If aV = "+" Or aV = "-" Or aV = "*" Or aV = "/" Then
aChyba = True: Exit For
End If
End If
Next aI
If aChyba = True Then
'InfoZ 0.5, "Dva operátory vedle sebe", True, False
Calc = Zadani: Odpoved = False: Exit Function
End If

For aI = 1 To Len(aT) - 1
aPoz = aI
aU = Mid(aT, aI, 1)
aV = Mid(aT, aI + 1, 1)
If aU = "." Or aU = "," Then
If aV = "." Or aV = "," Then
aChyba = True: Exit For
End If
End If
Next aI
If aChyba = True Then
'InfoZ 0.5, "Dvě znaménka vedle sebe", True, False
Calc = Zadani: Odpoved = False: Exit Function
End If

For aI = 1 To Len(aT) - 1
aPoz = aI
aU = Mid(aT, aI, 1)
aV = Mid(aT, aI + 1, 1)
If aU = "+" Or aU = "-" Or aU = "*" Or aU = "/" Then
If aV = "." Or aV = "," Then
aChyba = True: Exit For
End If
End If
Next aI
If aChyba = True Then
'InfoZ 0.5, "Operátor a desetinná vedle sebe", True, False
Calc = Zadani: Odpoved = False: Exit Function
End If

For aI = 1 To Len(aT) - 1
aPoz = aI
aU = Mid(aT, aI, 1)
aV = Mid(aT, aI + 1, 1)
If aU = "." Or aU = "," Then
If aV = "+" Or aV = "-" Or aV = "*" Or aV = "/" Then
aChyba = True: Exit For
End If
End If
Next aI
If aChyba = True Then
'InfoZ 0.5, "Operátor a destinná čárka vedle sebe", True, False
Calc = Zadani: Odpoved = False: Exit Function
End If

aU = Mid(aT, Len(aT), 1)
If aU = "+" Or aU = "-" Or aU = "*" Or aU = "/" Then
aChyba = True
End If
If aChyba = True Then
'InfoZ 0.5, "Poslední je operátor", True, False
Calc = Zadani: Odpoved = False: Exit Function
End If

aU = Mid(aT, 1, 1)
If aU = "*" Or aU = "/" Then
aChyba = True
End If
If aChyba = True Then
'InfoZ 0.5, "První operátor je * nebo /", True, False
Calc = Zadani: Odpoved = False: Exit Function
End If

aZac = 0: aKon = 0: aChyba = False
For aI = 1 To Len(aT) - 1
aU = Mid(aT, aI, 1)
If aU = "+" Or aU = "-" Or aU = "*" Or aU = "/" Then
If aZac = 0 Then
aZac = aI
Else
aKon = aI
End If
If aZac <> 0 And aKon <> 0 Then
If aKon - aZac - 1 > 15 Then
aPoc = 0
aChyba = True: Exit For
Else
aPoc = 0
For aJ = aZac + 1 To aKon - 1
If Mid(aT, aJ, 1) = "." Or Mid(aT, aJ, 1) = "," Then
aPoc = aPoc + 1
End If
Next aJ
If aPoc > 1 Then
aChyba = True: Exit For
End If
aZac = aI: aKon = 0
End If
End If
End If
Next aI
aKon = Len(aT) + 1
If aKon - aZac - 1 > 15 Then
aPoc = 0
aChyba = True
Else
aPoc = 0
For aJ = aZac + 1 To aKon - 1
If Mid(aT, aJ, 1) = "." Or Mid(aT, aJ, 1) = "," Then
aPoc = aPoc + 1
End If
Next aJ
If aPoc > 1 Then
aChyba = True
End If
End If
If aChyba = True Then
If aPoc = 0 Then
'InfoZ 0.5, "Dlouhé číslo", True, False
Calc = Zadani: Odpoved = False: Exit Function
Else
'InfoZ 0.5, Trim(CStr(aPoc)) & " znaménka v čísle", True, False
Calc = Zadani: Odpoved = False: Exit Function
End If
End If

'plneni
aZac = 0: aKon = 0: aChyba = False
For aI = 1 To Len(aT) - 1
aU = Mid(aT, aI, 1)
If aU = "+" Or aU = "-" Or aU = "*" Or aU = "/" Then
If aZac = 0 Then
aZac = aI
Else
aKon = aI
End If
If aZac <> 0 And aKon <> 0 Then
If ValX(Mid(aT, aZac + 1, aKon - aZac - 1)) = 0 Then
If Mid(aT, aZac, 1) = "/" Then
aChyba = True: Exit For
End If
End If
aZac = aI: aKon = 0
End If
End If
Next aI
aKon = Len(aT) + 1
If ValX(Mid(aT, aZac + 1, aKon - aZac - 1)) = 0 Then
If Mid(aT, aZac, 1) = "/" Then
aChyba = True
End If
End If
If aChyba = True Then
'InfoZ 0.5, "Dělení nulou", True, False
Calc = Zadani: Odpoved = False: Exit Function
End If

For aI = 1 To Len(aT)
If Mid(aT, aI, 1) = "." Then Mid(aT, aI, 1) = ","
Next aI

'vypocet
aZac = 1: aKon = 0: aPoc = 0
For aI = 1 To Len(aT) - 1
aU = Mid(aT, aI, 1)
If aU = "+" Or aU = "-" Or aU = "*" Or aU = "/" Then
If aZac = 0 Then
aZac = aI
Else
aKon = aI
End If
If aZac <> 0 And aKon <> 0 Then
aPoc = aPoc + 1
If aPoc = 1 Then
aCis(aPoc) = ValX(Mid(aT, aZac, aKon - aZac))
aOper(aPoc) = Mid(aT, aKon, 1)
Else
aCis(aPoc) = ValX(Mid(aT, aZac + 1, aKon - aZac - 1))
aOper(aPoc) = Mid(aT, aKon, 1)
End If
aZac = aI: aKon = 0
End If
End If
Next aI
aKon = Len(aT) + 1
aPoc = aPoc + 1
aCis(aPoc) = ValX(Mid(aT, aZac + 1, aKon - aZac - 1))

Prac_Double = aCis(1)
For aI = 1 To aPoc - 1
If aOper(aI) = "+" Then
Prac_Double = Prac_Double + aCis(aI + 1)
End If
If aOper(aI) = "-" Then
Prac_Double = Prac_Double - aCis(aI + 1)
End If
If aOper(aI) = "*" Then
Prac_Double = Prac_Double * aCis(aI + 1)
End If
If aOper(aI) = "/" Then
Prac_Double = Prac_Double / aCis(aI + 1)
End If
Next aI
Calc = Prac_Double
ChK1:
On Error GoTo 0
Exit Function
ChK:
If Err.Number = 6 Then
'InfoZ 0.5, "Přetečení výpočtu", True, False
Resume ChK1
End If
End Function

Nahlásit jako SPAM
IP: 88.102.49.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

Podobná vlákna

Kalkulacka — založil tomas

Kalkulacka — založil mravenec

Kalkulačka — založil Lukáš

Kalkulacka — založil pawkin

Kalkulačka — založil Anakin

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý