Nejste přihlášen/a.

Přihlásit se do poradny

 

Programování v pascalu

Od: jaryncharvat* odpovědí: 2 změna:

Dobrý den, potřebuju naprogramovat v pascalu rešení kvadratických rovnic i pro diskriminat menší než 0 (řešením jsou komplexní čísla). Podařilo se mi naprogramovat, když je diskriminant větší než 0, ale pro meněší než nula se mi to stále nedaří.

zde je moje řešení pro kladný D

-

Program Kvadr_Rovnice;

uses crt;

var fl,B,C,D,xl,x2:real;

begin

write(’Zadej koef A:’);readln(A);

write(’Zadej koef B:’);readln(B);

write(’Zadej koef C:’);readln(C);
writeln;
D:=B*B-4*A*C;
if D>=0then begin
D:=sqrt(D);
x1:=(-B+D)/2/A;
x2:=(—B—D)/2/A ;
writeln(’x1=’,x1:6:2);
writeln(’x2=’,x2:6:2) end

else writeln(’komplexni koreny’); readln end.

-

poté jsem se pokoušel vytvořit něco takovýho, to ale nefunguje

-

Program Kvadr_Rovnice;

uses crt;

var fl,B,C,D,xl,x2,i:real;

begin

write(’Zadej koef A:’);readln(A);

write(’Zadej koef B:’);readln(B);

write(’Zadej koef C:’);readln(C);
writeln;
D:=B*B-4*A*C;
if D>=0then begin
D:=sqrt(D);
x1:=(-B+D)/2/A;
x2:=(—B—D)/2/A ;
writeln(’x1=’,x1:6:2);
writeln(’x2=’,x2:6:2) end

else begin

i:=-1;

D:=sqrt(D*i);

xl:=(—B—D)/2/A;

x2:=(-B-D)/2/A;

writeln(’xl=’,xl:6:2);

writeln(’x2=’,xl:6:2)

end;

readln

end.

-

Žádám Vás o pomoc, či o radu, jak to tedy naprogramovat tak, aby mi vyšlo správné řešení i pro D<0.

Děkuji Jaroslav Charvát
doplněno 29.10.12 17:21:

Omlouvám se, ale na některých místech se objevili smajlíci a ten text okolo nich nedává smysl, doufám, ale že kdo umí v pascalu pracovat se v tom vyzná, ještě jednou děkuji

 

 

2 odpovědi na otázku
Řazeno dle hodnocení

 

 

petapeta*
hodnocení

3x

Vy deklarujete x1, x2 jako reálná čísla. Bude-li diskriminant menší než nula (D<0), tak pak kořeny nejsou reálná čísla, ale dva imaginární komplexně sdružené kořeny

x1 = -b/2a + i (√ |D|)/2a

x2 = -b/2a _ i (√ |D|)/2a

Je tedy nutno výsledek vypsat nějak takto:

writeln('x1 = ',b/(2*a),'+ i',D/(2*a))

writeln('x2 = ',b/(2*a),'_ i',D/(2*a))

kde D je to vaše D≔sqrt(D*i), čili D≔sqrt(D*(-1)).

doplněno 01.11.12 12:17:

Ve výpisu výsledku mi uniklo znaménko _

writeln('x1 = ',_b/(2*a),'+ i',D/(2*a))

writeln('x2 = ',_b/(2*a),'_ i',D/(2*a))

 

charlies*
hodnocení

0x

V Pascalu nedělám, ale snad ve všech běžných jazycích se dá použít tato struktura:

if (podminka)

{

kod

}

else if (druha podminka)

{

druhy kod

}

else

{

kod, kdyz nevyjde ani jedna podminka

}

doplněno 29.10.12 18:27:

Pascal místo { a } používá begin a end

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]