Nazdar, mám takovej problém, mám program, kterej jede, ale když tam zapíšu určité hodnoty, tak mi to píše, že nelze dělení nulou //division by zero// pořád nevím, kde je problém, nemáte nějakou radu?
.... then begin
if (a>b) and (a>c) then begin a:=max;
max:=help;
help:=a;
end
else if (b>a) and (b>c)
then begin b:=max;
max:=help;
help:=b;
end
else if (c>a) and (c>b)
then begin c:=max;
max:=help;
help:=c;
end;
....
Fórum › Pascal
Pomoc v nouzi
A píše ti to, na jakém řádku je ta chyba?
exited with exitcode = 217 /// An unhandled exception occured at $0040198D: EdivByZero : Division by zero $0040198D
Osobně si myslím, že problém nebude v dělení, ale nevím si rady :(
Jak poukazoval KIIV: máš tam někde nějaké dělení? Jestli ano, podívej se čím dělíš a jestli je ta hodnota vždy správně nastavena.
No už sem si myslel, že sem to vyřešil, ale pořád nic :/
Program HOTOVO;
uses math;
const pi:real=3.14;
var a,b,c:real;
alfa,beta,gamma:real;
max,help:real;
x,prav:boolean;
Begin
help:=0;
max:=0;
write('Zadejte delku strany a: ');
readln(a);
write('Zadejte delku strany b: ');
readln(b);
write('Zadejte delku strany c: ');
readln(c);
if (a+b>c) and (b+c>a) and (c+a>b) then
begin
x:=true;
writeln('Z techto stran lze sestrojit trojuhelnik.');
end;
if x<>true then writeln('Z techto stran nelze sestrojit trojuhelnik!')
else begin
if (c*c=(a*a)+(b*b)) or (b*b=(a*a)+(c*c)) or (a*a=(b*b)+(c*c)) then
begin
if (a>b) and (a>c) then begin a:=max;
max:=help;
help:=a;
end;
if (b>a) and (b>c) then begin b:=max;
max:=help;
help:=b;
end;
if (c>a) and (c>b) then begin c:=max;
max:=help;
help:=c;
end ;
writeln('Tento trojuhelnik je pravouhly!');
alfa:=arcsin(a/max)*(180/pi);
writeln('Velikost uhlu alfa je: ',alfa:4:2);
beta:=arcsin(b/max)*(180/pi);
writeln('Velikost uhlu beta je: ',beta:4:2);
gamma:=arcsin(c/max)*(180/pi);
writeln('Velikost uhlu gamma je: ',gamma:4:2)
end;
if (a=b) and (b=c) and (c=a) then
writeln('Tento trojuhelnik je rovnostranny!')
else if (a=b) or (b=c) or (c=a) then
writeln('Tento trojuhelnik je rovnoramenny!');
end
;
readln;
end.
To Pascal S.R.O
Ty to fakt nevidíš?
Dělíš přece proměnnou max, ve které máš nulu.
na začátku:
help:=0;
max:=0;
pak v podmínce:
a:=max;
max:=help;
help:=a;
si vynuluješ i proměnnou a tím, že do ní dáš nulu z max, pak do max dáš tu nulu, co je v helpu a na závěr do helpu dáš nulu z áčka.
Vypiš si pro kontrolu hodnoty a,b,c,max,help než něco budeš počítat...
Zřejmě jsi chtěl najít nejdelší stranu, ale děláš to nějak blbě...
Ked som to tak rychlo prebehol,tak na zaciatku inicializujes max:=0 a help:=0. V podmienkach if (riadky 26-37) priradujes VZDY max:=help t.j. ze max sa vzdy rovna 0 a pri vypocte uhlov mas a/max, b/max,c/max co JE DELENIE NULOU!!!.
To JoDiK :
To vega33 :
Evidentne nepochopil, ktera strana := se prepisuje a ktera se prirazuje
ostatne cela ta konstrukce je naprostej nesmysl...
staci max := a (nebo b nebo c)
Dík kluci ušatí, tohle mi postačilo, aby to fungovalo :)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Pomoc v nouzi je to nalehave — založil Lama pls help
Pomoc.... nějaká chybka prosím pomoc - více v podrobném popisu — založil tkstudent
Pomoc, pomoc s úkolem (matice v Delphi) — založil maxikp
Pomoc please xD — založil Karel
Moderátoři diskuze