Avatar billede themaster Nybegynder
07. november 2003 - 00:19 Der er 9 kommentarer og
1 løsning

program kan ikke se forskel på 1 og 0,1

Hej Exp´s

Jeg har lavet et lille program der kan arbejde med trigonometriske begræber som cos, sin og tan. Jeg har fundet ud af at programmet ikke kan se forskel på 1 og 0,1.

Hvorfor??

\\themaster

p.s.: her er sourcen: www.themaster.dk/trigtool.rar
Avatar billede dawin_dk Nybegynder
07. november 2003 - 00:29 #1
i programmering er der ik noget der hedder 0,1 .. det hedder 0.1 ..
Avatar billede themaster Nybegynder
07. november 2003 - 00:31 #2
jo.....du kan bare lave et replace statement:

talsin = Str$(Replace(sinx.Text, ",", "."))
Avatar billede dawin_dk Nybegynder
07. november 2003 - 04:07 #3
hmm.. men så har du også lavet dit tal om til tekst .. og er du sikker på at du regner i rigtige enheder... grader/radianer osv... ?
Avatar billede martin_moth Mester
07. november 2003 - 07:55 #4
Prøv at vis noget af din kode
Avatar billede themaster Nybegynder
07. november 2003 - 09:04 #5
Private Sub cos_exe_Click()

Dim talcos As Double
Dim cos_res As Double

If cosx.Text = "" Then

MsgBox ("Husk at skrive en værdi.....")

Else

talcos = Str$(Replace(cosx.Text, ",", "."))

cosx_res.Caption = "Cos(x) = " & Cos(talcos)

End If

End Sub

Private Sub Form_Load()
vælg.AddItem "sin(x)", 0
vælg.AddItem "cos(x)", 1
vælg.AddItem "tan(x)", 2
vælg.AddItem "Tilbage til start", 3

Label1.Caption = "Velkommen til TrigTool. Dette lille program er udviklet til at regne med trigonomeriske grundligninger." & vbCrLf & "Programmet inhaolder alle trigonomeriske begræber: " & vbCrLf & vbCrLf & "Sin(x)" & vbCrLf & "Cos(x)" & vbCrLf & "Tan(x)" & vbCrLf & vbCrLf & "Hilsen THEMASTER.DK"
sin_frame.Visible = False
cos_frame.Visible = False
tan_frame.Visible = False

End Sub

Private Sub sin_exe_Click()

Dim talsin As Single

If sinx.Text = "" Then

MsgBox ("Husk at skrive en værdi.....")

Else

talsin = Str$(Replace(sinx.Text, ",", "."))

sinx_res.Caption = "Sin = " & Sin(talsin)

End If

End Sub

Private Sub tan_exe_Click()

Dim tan_12 As Single

If tan_x.Text = "" Or tan_y.Text = "" Then

MsgBox ("Husk at srive en værdi.......")

ElseIf tan_x.Text = "0" Then

MsgBox ("Du må sku da ikke dele med 0.....dumrian....")

Else

tan_1 = Str$(Replace(tan_x.Text, ",", "."))
tan_2 = Str$(Replace(tan_y.Text, ",", "."))

tan_12 = tan_2 / tan_1

tan_res.Caption = "Tan(x) = " & tan_12

End If

End Sub

Private Sub vælg_Click()

If vælg.Text = "sin(x)" Then
   
    tan_frame.Visible = False
    cos_frame.Visible = False
    sin_frame.Visible = True
    start_frame.Visible = False
   
ElseIf vælg.Text = "cos(x)" Then
   
    tan_frame.Visible = False
    cos_frame.Visible = True
    sin_frame.Visible = False
    start_frame.Visible = False


ElseIf vælg.Text = "tan(x)" Then
   
    tan_frame.Visible = True
    cos_frame.Visible = False
    sin_frame.Visible = False
    start_frame.Visible = False
   
Else

    tan_frame.Visible = False
    cos_frame.Visible = False
    sin_frame.Visible = False
    start_frame.Visible = True
   
End If

End Sub
Avatar billede martin_moth Mester
07. november 2003 - 10:09 #6
Og prøv så at komme med et eksempel på hvad der går galt hvorhenne...

PS: der er masser af andre trigonomeriske begræber end cos, sin og tan, fx. arctan, hyperbolsk sinus og så videre - derfor skal du nok ikke bruge ordet "alle" i din lille tekst :o)
Avatar billede themaster Nybegynder
07. november 2003 - 16:43 #7
Her går det galt: (det samme med cos-afsnittet)

talsin = Str$(Replace(sinx.Text, ",", "."))

sinx_res.Caption = "Sin = " & Sin(talsin)

Hvis jeg tager sin(1) giver den det samme som hvis jeg tager sin(0,1). Det passer jo langt fra...
Avatar billede martin_moth Mester
07. november 2003 - 16:51 #8
Hvis du nu regnede efter, ville du se, at svaret ikke passer på nogen af udregningerne - de giver begge det samme forkerte resultat!

Og det er jo fordi du tager sin af en string - de følgende eksempler giver det samme

sin("1") = sin("0,1) = sin("Hej") = sin(0)

Værdien af en string er altid 0!

Så du skal bruge

sinx_res.Caption = "Sin = " & Sin(Val(talsin))

Prøv at væn dig til at lave kontrolberegninger - det ville have hjulpet dig til at se, at du altid får taget sin og cos af værdien nul...
Avatar billede martin_moth Mester
07. november 2003 - 16:54 #9
Bemærk i øvrigt også, at dawin_dk i sit svar 07/11-2003 04:07:37 gjorde opmærksom på problemet!

Husk at ret teksten så du sikke antyder, at sin, con og tan er alle de trigonometriske funktioner der findes ;o)
Avatar billede mikker Nybegynder
09. november 2003 - 10:58 #10
'Programmet inhaolder alle trigonomeriske begræber'

inhaolder... indeholder ??

- Mikker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester