Kezdőoldal » Számítástechnika » Programozás » VisualBasicban miért nem jó...

VisualBasicban miért nem jó az alábbi algoritmus egyetlen kombinációval?

Figyelt kérdés

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


2016. dec. 13. 17:52
 1/4 coopper ***** válasza:

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.

2016. dec. 13. 20:09
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:
Borzasztó.
2016. dec. 13. 21:08
Hasznos számodra ez a válasz?
 3/4 Hominida ***** válasza:

:-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.

2016. dec. 14. 00:16
Hasznos számodra ez a válasz?
 4/4 _Jessy_ ***** válasza:

If szam2 ^ 2 - -szam3 ^ 2 = szam1 ^ 2 Then

FUCK_LOGIC

EndIf

' :D:D:D:D:D

2016. dec. 14. 07:18
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!