Entwickler-Ecke

Sonstiges (Delphi) - delphi exp fkt problem


natabata - Mo 12.04.10 09:48
Titel: delphi exp fkt problem
hallo zusammen, ich habe ein programm geschrieben das für nullstellen entweder keine lösung oder die nullstellen x werte einer exp, fkt angeben soll


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
program test;       //  findet den fehler und speichert es neu

{$APPTYPE CONSOLE}

uses
  SysUtils;


var a,b,c,x1,x2:longint;

function nullstellen:boolean;
begin
write('a eingeben');
readln(a);
write('b eingeben');
readln(b);
write('c eingeben');
readln(c);
x1:=(-b+sqrt((b*b)-4*a*c)/(2*a));
x2:=(-b-sqrt((b*b)-4*a*c)/(2*a));
end;
begin

IF nullstellen true THEN
 write (x1,x2) else write ('keine lösung')

  { TODO -oUser -cConsole Main : Hier Code einfügen }
end.



kann mir jmd sagen was hier falsch ist?

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt


Xion - Mo 12.04.10 09:59

user profile iconnatabata hat folgendes geschrieben Zum zitierten Posting springen:

kann mir jmd sagen was hier falsch ist?

Ohne Fehlerbeschreibung eher nicht.


Delphi-Quelltext
1:
2:
IF nullstellen=true THEN
 write (x1,x2) else write ('keine lösung')


Gammatester - Mo 12.04.10 09:59

Ich weiß zwar nicht was Du erwartest (wenn Du noch nicht mal weißt, was falsch ist), aber zwei Hinweise:

- Solche Rechnungen benötigen in der Regel Fliekommazahlen, also double bzw extendend und keine longint.

- Was Du ansatzweise machst, ist das Lösen einer quadratischen Gleichung und hat absolut nichts mit der Funktion exp zu tun.


elundril - Mo 12.04.10 10:10

user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconnatabata hat folgendes geschrieben Zum zitierten Posting springen:

kann mir jmd sagen was hier falsch ist?

Ohne Fehlerbeschreibung eher nicht.


Delphi-Quelltext
1:
2:
IF nullstellen=true THEN
 write (x1,x2) else write ('keine lösung')


UAAAAAAAAAAAAHHHHHH, ich sterbe!! Sowas tut man doch nicht, Herr Xion! Wenn man verbessert dann, bitte schon gleich auf die optimale Lösung.


Delphi-Quelltext
1:
2:
IF Nullstellen THEN
  write (x1,x2) esle write('keine lösung')


lg elundril


ALF - Mo 12.04.10 11:26

Hi, und wann wird "nullstellen" result true oder false!?
Nur eine Formel Ergebnis ohne Prüfung auf was, ergibt weder True noch False.

Gruss Alf


Xion - Mo 12.04.10 18:05

user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:


Delphi-Quelltext
1:
2:
IF nullstellen=true THEN
 write (x1,x2) else write ('keine lösung')


UAAAAAAAAAAAAHHHHHH, ich sterbe!! Sowas tut man doch nicht, Herr Xion! Wenn man verbessert dann, bitte schon gleich auf die optimale Lösung.

Ich mach das oft mit =true...ich weiß, soll man nicht...das konstruierte Beispiel hat mich nie überzeugt, wenn ich in der Function Result:=True setze, dann ist das result auch true...hatte zumindest noch nie Probleme. Warum ich es eigentlich mache, ist mehr eine Verständnis Sache des Codes. if Nullstelle then sagt mir nix. Wer weiß was Nullstelle aussagt, am Ende einen integer mit der Anzahl der Nullstellen. Jetzt muss ich schon überlegen, was Delphi machen würde bei if 1 then...ich würde das jetzt als true interpetieren, wie alles <>0. Wenn dann if NullstelleExists then. Da ist klar was Sache ist. In der obigen Funktion kann man eh nicht von gutem Programmierstil der Funktion sprechen, da sie garkeinen bool zurückgibt...weil sie ja auch 2 integer zurückgibt, die sie aber in globale Variablen füllt...

Die Aufgabenstellung hier erinnert mich an ne Hausaufgabe...gegeben ist ein Code, man soll alle Fehler finden...ohne Fehlerbeschreibung.
Edit: Ui, der Kommentar in der ersten Zeile...hmm, scheinbar hatte ich recht.


elundril - Mo 12.04.10 20:11

Doch, die Methode selbst gibt nen Boolean zurück, wie du da Integer oder sonstwas interpretieren würdest ist den compiler schnuppe, da ein boolean ein boolean bleibt und delphi nicht so wie php einfach den Variablentyp ändern kann. Würde die Methode Nullstellen nämlich ein Integer zurückgeben dann kannst das mit if Nullstellen then eh knicken sondern musst schreiben if Nullstellen = 0 then

Und das die Methode nicht NullstellenExist heißt sondern nur Nullstellen ist eine weitere Sache die böse ist da man die Methoden aussagekräftig benennen soll.


jfheins - Mo 12.04.10 20:15

user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:

Ich mach das oft mit =true...ich weiß, soll man nicht...das konstruierte Beispiel hat mich nie überzeugt, wenn ich in der Function Result:=True setze, dann ist das result auch true...hatte zumindest noch nie Probleme.

Nur weil bis jetzt gut gegangen ist, muss es nicht immer gut gehen ;)
user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
Warum ich es eigentlich mache, ist mehr eine Verständnis Sache des Codes. if Nullstelle then sagt mir nix. Wer weiß was Nullstelle aussagt, am Ende einen integer mit der Anzahl der Nullstellen.
Wie wäre es, die Funktion passend umzubenennen? z.B. in "hatNullstelle" oder "hasRoot"
user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
Jetzt muss ich schon überlegen, was Delphi machen würde bei if 1 then...

Ich hoffe mal auf das hier: "Error: Incompatibe Types Integer vs. Boolean" oder so ähnlich ;)