Kezdőoldal » Számítástechnika » Programozás » Miért nem működik az else ág...

Miért nem működik az else ág ennél a feladatnál (Python-ba)?

Figyelt kérdés

Egy háromszög oldalainak beolvasása, megvizsgálása, hogy lehet-e háromszög, és a szerint írja ki a kerületét, területét, vagy hogy nem lehet háromszög.


# -*- coding: cp1250 -*-

# 6.2 Gyakorlat

from math import *

print "Egy haromszog oldalainak hosszat kernem!"

A = raw_input('Adja meg az a oldal hosszat:')

a = float(A)

B = raw_input('Adja meg a b oldal hosszat:')

b = float(B)

C = raw_input('Adja meg a c oldal hosszat:')

c = float(C)

K = a + b + c

d = (a + b + c)/2

T = sqrt(d*(d-a)*(d-b)*(d-c))

if ((a+b > c) and (a+c > b) and (b+c > a )):

print "A haromszog kerulete:", K

print "A haromszog terulete:", T

else:

print "Az oldalak nem alkothatnak haromszoget."

print "Ket oldal osszege nem lehet kisebb a harmadik oldalnal!"



2012. júl. 19. 10:20
 1/7 iostream ***** válasza:
Mit értesz az alatt, hogy nem működik, illetve pastebin-re vagy valami egyéb oldalra másold át a kódot, mert így indentálás nélkül a Python kódot nehéz értelmezni.
2012. júl. 19. 11:09
Hasznos számodra ez a válasz?
 2/7 _Jessy_ ***** válasza:
Az mit jelent, hogy nem működik?!? Nem ír ki semmit, vagy hibát jelez a parser?
2012. júl. 19. 12:18
Hasznos számodra ez a válasz?
 3/7 _Jessy_ ***** válasza:
Egyébként kipróbáltam, nálam megy :)
2012. júl. 19. 12:18
Hasznos számodra ez a válasz?
 4/7 anonim ***** válasza:

Én most lusta vagyok kipróbálni, de ha az utolsónál megy, akkor bizony az lesz a "hiba" ami miatt olvashatatlan a kód itt.

Azaz valószínűleg rosszul vannak a behúzások. (Tab/Space csere, esetleg egy helyen plusz space ami nem kéne...)

2012. júl. 19. 12:30
Hasznos számodra ez a válasz?
 5/7 anonim ***** válasza:

Nem az else ág nem működik. A program szemantikailag hibás.


Ha egy számhármas nem teljesíti a háromszög egyenlőtlenséget, akkor a területet kiszámoló képletben szereplő szorzattagok közül az egyik negatív lesz.


Mivel negatív számból a valós számok körében nem lehet gyököt vonni, emiatt a terültszámolási képlet domainerrorral összeomlik.


A megoldás az lenne, hogy az adatok bekérése után kell végrehajtani az ellenőrzést és ha a bekért adatok nem teljesítik a háromszög egyenlőtlenségeket, akkor kilépni, egyébként végre kell hajtani a terület és kerület számítást.

2012. júl. 20. 06:02
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:
Kösz. Igaz, így működik, tényleg az if feltételbe kellett megadni a kerület és területkiszámítást, csak nem tudom a Python miért csinálta ezt, mert ugyanez a program rendesen működött Java-ba és C++-ba átírva is és ott is az adatok bekérése után volt megadva a számítás?!
2012. júl. 20. 07:07
 7/7 iostream ***** válasza:
100%

C++-ban azért, mert a cmath könyvtár C-s lib, nem dobál kivételeket, csak beállít valami error jelzőt. Azaz nem akasztja meg a program futását, és mivel nem használod az eredményét, nem okoz gondot.


De amúgy eleve jó gyakorlat, hogy csak akkor számolsz ki valamit, ha szükséged van rá (és lehetséges), szóval az ilyeneket mindig pakold bele az if-be.

2012. júl. 20. 09:35
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, 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!