Witam
Jestem nowy w świecie programowania. Chcę napisać program na wyliczenie pierwiastków równania kwadratowego. Niestety wyskakuje błąd. Proszę o wskazanie mi błędu..
Oto kod programu:
Wszystkich moderatorów Bóg po śmierci zabiera do nieba, żeby ci dwadzieścia cztery godziny na dobę moderowali modlitwy do niego. http://karmelek.wordpress.com
inny OS=debian lenny
If (D<0) then
Begin
writeln ('brak rozwiĄzania');
Else (D>0)
Zapewne błąd kompilacji spowodowany brakiem enda, jakby ta instrukcja grupująca tu miała jakikolwiek sens.
Wszystkich moderatorów Bóg po śmierci zabiera do nieba, żeby ci dwadzieścia cztery godziny na dobę moderowali modlitwy do niego. http://karmelek.wordpress.com
inny OS=debian lenny
Przecież przypisanie wartości do zmiennej to w Pascalu :=, więc nie wiem czemu miałoby być =.
A zresztą jeden pierwiastek jest z + przy pierwiastku z delty, a drugi z - przy pierwiastku z delty, a Ty sugerujesz, że zarówno X1, jak i X2 ma być z - przy pierwiastku z delty?
Nie ma też znaczenia, czy zapisze się SQRT, czy też sqrt. W Pascalu to jedno i to samo.
Po 1: Moja pomyłka, oczywiście, że ma być x2:=
Po 2. A gdzie u Ciebie jest x2 z pierwiastkiem ???? Moja pomyłka jest taka, że zamiast + dałem -, więc poprawnie powinno być:
Bład to najpewniej Runtime Error 200 - dzielenie przez zero. Najwyraźniej autor ma większy problem z matematyką niż z programowaniem więc zalecałbym uporządkowanie wiedzy z zakresu funkcji kwadratowej.
Mamy wartości a, b, c
delta = b^2 - 4*a*c
jeżeli delta > 0 to
x1 = -b - sqrt(delta) / 2*a
x2 = -b + sqrt(delta) / 2*a
wyświetl wynik
zakończ program
jeżeli delta = 0 to
x1 = -b/2*a
wyświetl wynik
zakończ program
jeżeli delta < 0 to
Wyświetl komunikat o braku rozwiązań
koniec programu
Wszystkich moderatorów Bóg po śmierci zabiera do nieba, żeby ci dwadzieścia cztery godziny na dobę moderowali modlitwy do niego. http://karmelek.wordpress.com
inny OS=debian lenny
warlock24 pisze:Nie powiedziałbym że kod z wieloma wyjściami jest dupny.
Istnieją 2 rodzaje kodu: kod przyjazny programiście i kod przyjazny komputerow.
Tak samo są programiści piszący na szybko i tacy co zawsze chcą wszystko optymalizować aby zaoszczędzić choćby 1 cykl procesora czy 1 kb pamięci.
No ale co zaoszczędzisz takim kodem? Sądzisz, że będzie optymalny przez te wyjścia? Że optymalizator kompilatora sobie nie poradzi? Ja tam wolę jednak kod przyjazny programiście, zwłaszcza, że w tak prostym przypadku nie ma co optymalizować i cudować. Kod ma być czytelny i jasny.
mutopompka pisze:@szmitas: a czy w liceum/technikum są liczby zespolone? Raczej nie. Jak już to na studiach.
Zależy od klasy, czasami nauczyciel zrobi jako ciekawostkę. A z resztą to nie jest wielki problem je przerobić samemu. Tylko jedna zasada więcej, że i^2 = -1 i nie trzeba więcej.
Jeśli problem rozwiązany dodaj na początku tematu [SOLVED].
program deelta;
Uses
Crt;
var
x1,x2,d,a,b,c:Real;
Begin
clrscr;
writeln ('wprowad« a');
readln (a);
writeln ('wprowad« b');
readln (b);
writeln ('wprowad« c');
readln (c);
d:=(b*b)-4*a*c;
writeln ('delta to ',d:0:2);
readln;
If (d<0) then
begin
writeln ('brak rozwiĄzaä');
end
Else If (d=0) then
Begin
x1:=((-b)/(2*a));
writeln ('Pierwiastek to ',x1:0:2)
end
Else If (d>0) then
Begin x1:=(-b-d)/(2*a);
x2:=(-b+d)/(2*a);
writeln ('pierwiastkami rownania sĄ x1 = ',x1:0:2 ,' oraz x2 = ',x2:0:2);
end;
readln;
end.