| Autor |
Beitrag |
PeterM_6
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 01.11.06 13:36
Hallo, ich bin ganz neu in Delphi eingestiegen und wollte jetzt eine Konsolenanwendung programmieren, die die Steigung und den y-Achsenabschnitt einer Geraden berechnet, wenn man ihr zwei Punkte gibt.
Hatte eigentlich auch alles gut geklappt, nur schließt sich das ding seit neustem immer nach der Eingabe der Koordinaten, ohne mir nen Error anzugeben.
Es ist übrigens wichtig das alles Modularisiert vorliegt(Schule^^).
Ich poste mal den Code, wenn einem der Fehler auffällt, dann schreibt doch bitte hier rein
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: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40:
| program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
var x1,x2,y1,y2,m,n:real;
procedure parameter(x1int,x2int,y1int,y2int:real;var mint,nint:real); begin mint:=(y1int-y2int)/(x1int-x1int); nint:=y1-(m*x1); end;
procedure eingabe(var x1int,x2int,y1int,y2int:real); begin writeln('Hallo, bitte gib nie Koordinaten der zwei Punkte ein.'); writeln; write('Punkt1 - x:'); readln(x1int); write('Punkt1 - y:'); readln(y1int); writeln; write('Punkt2 - x:'); readln(x2int); write('Punkt2 - y:'); readln(y2int); end;
begin eingabe(x1,x2,y1,y2); writeln; writeln('Danke, bei Tastendruck werden die Berechnungen von m und n durchgefuehrt.'); readln; parameter(x1,x2,y1,y2,m,n); Writeln('Der Wert von m betraegt ', m,'.'); Writeln('Der Wert von n betraegt ', n,'.'); readln; end. |
Dank euch schon mal im Vorraus
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 01.11.06 14:08
Setz doch einfachmal einen Breakpoint mit F5 und gehen den Code Schritt für Schritt durch mit F7 und guck, wo er aussteigt.
|
|
azubi_20
      
Beiträge: 593
WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
|
Verfasst: Mi 01.11.06 14:18
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
var x1,x2,y1,y2,m,n:real; dummyString : string;
begin eingabe(x1,x2,y1,y2); writeln; writeln('Danke, bei Tastendruck werden die Berechnungen von m und n durchgefuehrt.'); readln(dummyString); parameter(x1,x2,y1,y2,m,n); Writeln('Der Wert von m betraegt ', m,'.'); Writeln('Der Wert von n betraegt ', n,'.'); readln; end. |
versuchs mal so...
|
|
PeterM_6 
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 01.11.06 14:39
Hmm, also danke schon mal für die Hilfe funktioniert leider immer noch nicht, mir is aufgefalen ich hatte n paar Fehler im code, hab ich geändert, Programm beendet sich aber immer noch nachdem man Bestätigt(beim ersten readln(dummystring).
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: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40:
| program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
var x1,x2,y1,y2,m,n:real; dummystring:string; procedure parameter(x1int,x2int,y1int,y2int:real;var mint,nint:real); begin mint:=(y1int-y2int)/(x1int-x1int); nint:=y1int-(mint*x1int); end;
procedure eingabe(var x1int,x2int,y1int,y2int:real); begin writeln('Hallo, bitte gib nie Koordinaten der zwei Punkte ein.'); writeln; write('Punkt1 - x:'); readln(x1int); write('Punkt1 - y:'); readln(y1int); writeln; write('Punkt2 - x:'); readln(x2int); write('Punkt2 - y:'); readln(y2int); end;
begin eingabe(x1,x2,y1,y2); writeln; writeln('Danke, bei Tastendruck werden die Berechnungen von m und n durchgefuehrt.'); readln(dummystring) parameter(x1,x2,y1,y2,m,n); Writeln('Der Wert von m betraegt ', m,'.'); Writeln('Der Wert von n betraegt ', n,'.'); readln(dummystring); end. |
|
|
azubi_20
      
Beiträge: 593
WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
|
Verfasst: Mi 01.11.06 14:44
vielleicht liegt es ja an m und n.
mach mal in der Ausgabe statt m und n feste werte.
|
|
Reinhard Kern
      
Beiträge: 591
Erhaltene Danke: 14
|
Verfasst: Mi 01.11.06 14:50
PeterM_6 hat folgendes geschrieben: | Hmm, also danke schon mal für die Hilfe funktioniert leider immer noch nicht, mir is aufgefalen ich hatte n paar Fehler im code, hab ich geändert, Programm beendet sich aber immer noch nachdem man Bestätigt(beim ersten readln(dummystring).
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: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40:
| program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
var x1,x2,y1,y2,m,n:real; dummystring:string; procedure parameter(x1int,x2int,y1int,y2int:real;var mint,nint:real); begin mint:=(y1int-y2int)/(x1int-x1int); nint:=y1int-(mint*x1int); end;
procedure eingabe(var x1int,x2int,y1int,y2int:real); begin writeln('Hallo, bitte gib nie Koordinaten der zwei Punkte ein.'); writeln; write('Punkt1 - x:'); readln(x1int); write('Punkt1 - y:'); readln(y1int); writeln; write('Punkt2 - x:'); readln(x2int); write('Punkt2 - y:'); readln(y2int); end;
begin eingabe(x1,x2,y1,y2); writeln; writeln('Danke, bei Tastendruck werden die Berechnungen von m und n durchgefuehrt.'); readln(dummystring) parameter(x1,x2,y1,y2,m,n); Writeln('Der Wert von m betraegt ', m,'.'); Writeln('Der Wert von n betraegt ', n,'.'); readln(dummystring); end. | |
Hallo,
bei mint:=(y1int-y2int)/(x1int-x1int); dividierst du durch 0, das ist nun mal bei Computern sehr unbeliebt.
Gruss Reinhard
|
|
PeterM_6 
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 01.11.06 15:10
Ich bin aber auch sehr genial
Jo jetzt hängt es sich nich mehr auf, war n schreibfehler den ich nich bemerkt hatte^^
Blieb jetzt nur noch ein neues problem, es gibt mir für m und n die selben werte aus 0o.
Ich danke euch schon mal für eure schnelle Hilfe, wenn noch jemand den zweiten fehler lösen kann würde ich mich sehr freuen 
|
|
azubi_20
      
Beiträge: 593
WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
|
Verfasst: Mi 01.11.06 15:26
also m ist die steigung, aber was ist n ?
|
|
konbom
      
Beiträge: 36
Win XP Home
Delphi 2005 Personal
|
Verfasst: Mi 01.11.06 15:37
n ist der y-Achsenabschnitt!
Also bei mir gibt er verschiedene Werte aus, wenn ich deinen Quelltext ausprobiere
|
|
azubi_20
      
Beiträge: 593
WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
|
Verfasst: Mi 01.11.06 15:55
PeterM_6 hat folgendes geschrieben: | | Blieb jetzt nur noch ein neues problem, es gibt mir für m und n die selben werte aus |
es gilt f(x) = m*x + n
falls du also zufallig zwei punkte einer Funktion genommen hast wo m = n ist, dann kann das vorkommen.
bastel dir ne lineare funktion mit m <> n, nimm zwei Punkte und dann müssten es auch unterschiedliche Werte sein.
Du solltest dir sowiso ein paar selbst ausgerechnete Testwerte zurechtlegen, um zu überprüfen, ob dein Programm korrekt arbeitet.
|
|
PeterM_6 
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 01.11.06 16:10
Hmm, ich habs grad noch mal mit mehreren anderen getestet es funktioniert.
Ich frage mich nur warum er mir bei (2/7) (8/9) 5 und nich 0.5 als Steigung ausgibt...
Vielen dank das ihr mir geholfen habt jetz is alles recht klar ^^
|
|
azubi_20
      
Beiträge: 593
WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
|
Verfasst: Mi 01.11.06 16:26
PeterM_6 hat folgendes geschrieben: |
Ich frage mich nur warum er mir bei (2/7) (8/9) 5 und nich 0.5 als Steigung ausgibt...
|
...das frage ich mich auch, müsste doch für diese Werte m = 0,333333333333333... sein.
|
|
PeterM_6 
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 01.11.06 16:48
tut mir leid hab mich verschrieben es war 4/7 nich 2/7.
Wenn ich mit 2/7 rechen bekomm ich übrigens 3,33333333...raus.
|
|
azubi_20
      
Beiträge: 593
WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
|
Verfasst: Mi 01.11.06 16:53
bist du dir sicher, dass es nicht Exponentialschreibweise ist, also 3,33333... * 10^-1
|
|
PeterM_6 
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 01.11.06 17:18
Ne hatte ich leider nicht drauf geachtet, daran liegt es auch, danke dir  .
Kann mit noch jemand sagen wie ich die vielleicht weg krieg(wenn das geht)?
Danke
|
|
azubi_20
      
Beiträge: 593
WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
|
Verfasst: Mi 01.11.06 17:31
|
|
PeterM_6 
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 01.11.06 17:55
Das is super vielen Dank noch mal an alle die mir geholfen haben ^^
|
|
|