Kvadratické rovnice Vyřešeno

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

flushed
Level 1
Level 1
Příspěvky: 78
Registrován: duben 12
Pohlaví: Muž
Stav:
Offline

Kvadratické rovnice

Příspěvekod flushed » 18 dub 2012 14:09

Zdravím, mám takovej problém. Pokoušel jsem se v Pascalu vytvořit kalkulačku na počítání kvadratických rovnic. Spočítat rovnici s dvěma kořeny a s jedním jdde v pohodě, ale jak je diskriminant záporný, tak mi to vyhodí chybu a program spadne.

Kód: Vybrat vše

var
  a,b,c,D,x,x1,x2:real;
begin
  write('Zadejte koeficient a: ');
  readln(a);

  write('Zadejte koeficient b: ');
  readln(b);

  write('Zadejte koeficient c: ');
  readln(c);
  writeln;

  D := sqr(b) - 4*a*c;
  x := -b/(2*a);
  x1 := (-b+sqrt(D))/(2*a);
  x2 := (-b-sqrt(D))/(2*a);

  if (D<0) then
    writeln('Tato kvadraticka rovnice nema v oboru realnych cisel reseni')

  else if (D=0) then
    writeln('Rovnice ma prave jeden realny koren: ', x:0:2)

  else
    begin
      writeln ('Tato kvadraticka rovnice ma dva koreny: ', x1:0:2, ' a ', x2:0:2);
    end;
  writeln;
  writeln('Stiknete ENTER pro konec');
  readln;
end.

Reklama
Uživatelský avatar
Žbeky
Moderátor
Guru Level 13
Guru Level 13
Příspěvky: 22288
Registrován: květen 08
Bydliště: Vsetín - Pardubice
Pohlaví: Muž
Stav:
Offline

Re: Kvadratické rovnice

Příspěvekod Žbeky » 18 dub 2012 14:15

Tvůj problém je ryze matematický a částěčně i prasácky napsaný kód.
Proč ty kořeny počítáš hned a napřed si neověříš ten diskriminant? Tzn. výpočty kořenů dát až po po splnění podmínky ifu. Jednak je prasácké vypočítat všechno a pak si jen vybírat (tady to ještě jde, co ale až budeš mít rozsáhlý program? I když vybereš situaci, kdy nebudeš muset teoreticky nic počítat, tak ke všem výpočtům dojde...) a za druhé se tímto dostáváš do situace, kdy odmocňuješ záporné číslo. Proto ti to spadne

Skoro nic nedopíšu, jen ti to přehážu

Kód: Vybrat vše

var
  a,b,c,D,x,x1,x2:real;
begin
  write('Zadejte koeficient a: ');
  readln(a);

  write('Zadejte koeficient b: ');
  readln(b);

  write('Zadejte koeficient c: ');
  readln(c);
  writeln;

  D := sqr(b) - 4*a*c;

  if (D<0) then
    writeln('Tato kvadraticka rovnice nema v oboru realnych cisel reseni')

  else if (D=0) then
    begin
    x := -b/(2*a);
    writeln('Rovnice ma prave jeden realny koren: ', x:0:2)
    end

  else
    begin
      x1 := (-b+sqrt(D))/(2*a);
      x2 := (-b-sqrt(D))/(2*a);
      writeln ('Tato kvadraticka rovnice ma dva koreny: ', x1:0:2, ' a ', x2:0:2);
    end;
  writeln;
  writeln('Stiknete ENTER pro konec');
  readln;
end.
V SZ řeším jen záležitosti týkající se fóra. Na prosby a žádosti o technickou podporu nereaguji. Díky za pochopení.

HiJackThis + návod - HW Monitor - Jak označit příspěvek za vyřešený - Pravidla fóra

flushed
Level 1
Level 1
Příspěvky: 78
Registrován: duben 12
Pohlaví: Muž
Stav:
Offline

Re: Kvadratické rovnice  Vyřešeno

Příspěvekod flushed » 18 dub 2012 14:22

Díky moc, už to jde. Omlouvám se za kód, začal jsem před pár dny, doufám že to časem spravím :D.


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů