VisualBasicban miért nem jó az alábbi algoritmus egyetlen kombinációval?
Azt csinálja, hogy 3 számot beírva nagyság szerint rendezi őket és így megállapítja, hogy pitagorasz számhármas-e. Azzal a kombinációval hogy 9, 41, 40 nem jó, míg 41,40,9 40,9,41 stb. kiírja.
Sub szamharmas2() ' 9 41 40 nem jó
Dim szam1, szam2, szam3 As Double
szam1 = InputBox("Adja meg az elso szamot!", "", "")
szam2 = InputBox("Adja meg a masodik szamot!", "", "")
szam3 = InputBox("Adja meg a harmadik szamot!", "", "")
If szam1 > szam2 And szam2 > szam3 Then
If szam2 ^ 2 - -szam3 ^ 2 = szam1 ^ 2 Then
MsgBox ("Ezek a szamok pitagoraszi szamharmast alkotnak")
Else:
MsgBox (" Ezek a szamok nem alkotnak pitagoraszi szamharmast")
End If
ElseIf szam2 > szam3 And szam3 > szam1 Then
If szam3 ^ 2 - -szam1 ^ 2 = szam2 ^ 2 Then
MsgBox ("Ezek a szamok pitagoraszi szamharmast alkotnak")
Else:
MsgBox (" Ezek a szamok nem alkotnak pitagoraszi szamharmast")
End If
ElseIf szam3 > szam1 And szam1 > szam2 Then
If szam1 ^ 2 - -szam2 ^ 2 = szam3 ^ 2 Then
MsgBox ("Ezek a szamok pitagoraszi szamharmast alkotnak")
Else
MsgBox (" Ezek a szamok nem alkotnak pitagoraszi szamharmast")
End If
ElseIf szam1 > szam3 And szam3 > szam2 Then
If szam2 ^ 2 - -szam3 ^ 2 = szam1 ^ 2 Then
MsgBox ("Ezek a szamok pitagoraszi szamharmast alkotnak")
Else:
MsgBox (" Ezek a szamok nem alkotnak pitagoraszi szamharmast")
End If
ElseIf szam2 > szam1 And szam1 > szam3 Then
If szam1 ^ 2 - -szam3 ^ 2 = szam2 ^ 2 Then
MsgBox ("Ezek a szamok pitagoraszi szamharmast alkotnak")
Else
MsgBox (" Ezek a szamok nem alkotnak pitagoraszi szamharmast")
End If
ElseIf szam3 > szam2 And szam2 > szam1 Then
If szam1 ^ 2 - -szam2 ^ 2 = szam3 ^ 2 Then
MsgBox ("Ezek a szamok pitagoraszi szamharmast alkotnak")
Else
MsgBox (" Ezek a szamok nem alkotnak pitagoraszi szamharmast")
End If
End If
End Sub
Szia.
Amit látok benne azok a következőek :
- vannek benne else ágak amik után kettőspont van Else: ezeket szerintem sima else-re kellene átirni.
- szerintem az összes feltételed rossz : If szam1 ^ 2 - -szam2 ^ 2 = szam3 ^ 2 Then (Ha szam1 négyzetéből kivonod a mínusz szam2 négyzetét és az egyenlő szam3 négyzetével akkor ), tehát a kivonás és mínusz szerintem nem jó, csak a kivonás kell.
De ha már próbálkozol, akkor szerintem tömbökkel kellene, operálni és sorbarendezéssel, akkor nem kell minden variációt levizsgálni, elég csak a számolást vizsgálni.
Sok sikert.
üdv.
:-D Ez tényleg az.
A kérdezőnek: a megoldásod legnagyobb haszna az, hogy megtanulhattál közben vakon gépelni. Ennyit írni... :-))
Mutatok egy egyszerű trükköt: ahelyett, hogy a kétféle lehetséges kimenetel következményét végig kiírod minden ágon, használj eljárást. Csinálj, mondjuk, egy Res(z) eljárást, amelyben az van, hogy ha z=1, akkor "Ezek a szamok pitagoraszi szamharmast alkotnak", ha meg nem, akkor a másik. És a döntési ágnál a számhármasos szöveg helyett csak ennyit írsz: CALL Res(1). A másiknál meg CALL Res(0). Spóroltál egy csomó munkát.
Lehet még többet. A döntési ágaknál legyen Z=1 a számhármasnál, Z=0 a nem számhármasnál, és csak az egész cucc végén írasd ki Z=1 esetén, hogy számhármas, egyébként hogy nem az. Kár a szöveget ennyiszer szerepeltetni, elsősorban azért, mert ha változtatni akarsz rajta, akkor sok helyen kell ugyanazt megcsinálnod.
A pitagoraszi számhármas egyébként a Pitagorasz-tételnek megfelelő számokat jeenti, márpedig akkor tudhatjuk azt, hogy a három megadott szám közül a legnagyobbnak kell az átfogónak, C-nek lennie. A kapott három szám közül válaszd ki a legnagyobbat, tedd bele C-be, a másik kettőt A-ba és B-be, tetszés szerinti sorrendben, és utána elég egyetlen képletben ellenőrizned.
If szam2 ^ 2 - -szam3 ^ 2 = szam1 ^ 2 Then
FUCK_LOGIC
EndIf
' :D:D:D:D:D
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!