AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Polynom von 2tem Grad

Ein Thema von diavy · begonnen am 17. Jun 2012 · letzter Beitrag vom 18. Jun 2012
 
diavy

Registriert seit: 11. Apr 2012
54 Beiträge
 
#1

Polynom von 2tem Grad

  Alt 17. Jun 2012, 16:43
Hallo zusammen.

Meine Aufgabe lautete es, mit einem Programm die Anzahl der Lösungen für f(x)=ax^2+bx+c=0 und deren Zeichen zu rechnen, ohne die Lösungen zu rechnen.

Das Programm läuft, aber die Lösungen sind nicht richtig, ich habe es gerade mit a=2,b=4 und c=1 versucht, es hat mir angezeigt 1 Lösung wäre positiv, die andere negativ, obwohol beide negativ sein müssten.

Was ist bloß schief gelaufen?

Delphi-Quellcode:
program exercice2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
a,b,c,delta:integer;

procedure error();
begin
writeln('This aint 2nd degre');
end;

procedure howmany(x:integer);
begin
writeln('There are ',x,' solutions for f(x)=0');
end;

procedure signforone(x,y:integer);
begin
if (((-y)/(2*x)) >= 0) then writeln('the solution is positive')
else writeln('the solution is negative');
end;

procedure signfortwoadd(x,y,z:integer); {Z=DELTA, NOT C!!!}
var aux:boolean;
begin
if x>0 then begin
                if y<0 then aux:=true
                else begin
                        if (abs(y) > sqrt(z)) then aux:=true
                        else aux:=false;
                        end;
                end;
if x<0 then begin
                if y<0 then aux:=false
                else begin
                        if (abs(y) > sqrt(z)) then aux:=false
                        else aux:=true;
                        end;
                end;
if aux=true then writeln('The first one is positive');
if aux=false then writeln('The first one is negative');
end;

procedure signfortwosubs(x,y,z:integer);
var aux:boolean;
begin
if x>0 then begin
                if y>0 then aux:=false
                else begin
                        if (abs(y) > sqrt(z)) then aux:=true
                        else aux:=false;
                        end;
                end;
if x<0 then begin
                if y<0 then aux:=true
                else begin
                        if (abs(y) > sqrt(z)) then aux:=true
                        else aux:=false;
                        end;
                end;
if aux=true then writeln('The second one is positive');
if aux=false then writeln('The second one is negative');
end;



  { TODO -oUser -cConsole Main : Insert code here }
begin
readln(a,b,c);
if a=0 then error()
else begin
        delta:=(b*b)-4*a*c;
        if delta<0 then howmany(0);
        if delta=0 then begin
                        howmany(1);
                        signforone(a,b);
                        end;
        if delta>0 then begin
                        howmany(2);
                        signfortwoadd(a,b,delta);
                        signfortwosubs(a,b,delta);
                        end;
        end;
readln;
end.
Danke im Voraus!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz