Autor |
Beitrag |
wayne123
      
Beiträge: 52
|
Verfasst: So 28.11.10 22:39
Hab da ein kleines Problem. Wollte mit Canvas Kurven zeichnen. In meiner Rechnung ist aber eine Dezimalzahl(0,024) und jetzt wollte ich wissen, wie ich mit "i: Extended" "for i:= 1 to 200 do", welches ja nur mit integer funktioniert machen kann. Könnte mi das vielleicht jemand netterweise sagen?
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 28.11.10 22:44
Wie sieht deine Rechnung denn aus?
Du kannst entweder mit i in der Rechnung rechnen oder einfach eine while-Schleife benutzen. 
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: So 28.11.10 22:48
Ja die Rechnung ist, da ich ja keine Kommazahlen bei Integer benutzen darf, 1 div 50 * i^2+150" und durch das div kommt bei 1 div 50 immer 1 raus, wodurch eine Linie am Ende rauskommt. Wenn ich "i" jetzt zu einer Extended Variable mache, steht da. For Schleifenvariable muss vom ordinalen Typ sein. Mit while wüsste ich gerade nicht, wie man eine quadratische Funktion machen sollte, die dann 100 mal für die x Werte 100 bis 200 rechnen würde.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 28.11.10 22:52
Dann nimm doch eine normale Division statt einer Integerdivision... Delphi-Quelltext Wenn du eine Integerdivision nutzt, kommen natürlich nur ganze Zahlen heraus.
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: So 28.11.10 23:08
Dann steht da ja aber, dass Integer und Extended inkompatible Typen sind, weil man ja / bei integer Variabeln doch nicht benutzen kann.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 28.11.10 23:11
Wenn du raus gefunden hast, wie man 0,024 Pixel zeichnet, gib mal bitte Bescheid.
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: So 28.11.10 23:18
Nein, ich rechne ja 3 durch 125 um auf 0,024 zu kommen(bei integer kommt halt 1 raus) und das multipliziere ich dann mit 200 oder solchen großen Zahlen halt, wo dann genau 250 rauskommen soll, was es ja wahrscheinlinlich auch tut, ich möchte halt nur eine kurve.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 28.11.10 23:24
In der for-Schleife soll die Kurve gezeichnet werden? Dann berechne die Punkte vorher passend und nicht nachher.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 28.11.10 23:30
Das Ergebnis musst du dann natürlich noch z.B. runden (Round).
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: So 28.11.10 23:32
Das sind doch aber 100 Punkte und die soll ich alle vorher ausrechnen. Wenn jetzt z.b. 457,54 als y Koordinate des 2 Punktes rauskommt, dann wird die nicht automatisch gerundet. Ohh man bin ich gerade durcheinander. Also man kann mit einer for Schleife keine Kurven zeichnen, oder wie?
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 28.11.10 23:35
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 28.11.10 23:35
Dein Programm besteht doch aus zwei Teilen. Im ersten Teil werden die Punkte berechnet und im zweiten wird mit der for-Schleife die Kurve gezeichnet. So, bevor du die Punkte an die Schleife übergibst, rundest du die Punkte auf ganze Werte. Wo ist da jetzt dein Problem?
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: So 28.11.10 23:37
Ich hab das eher so gemacht
for i:= 100 to 200 do
begin
Canvas.LineTo(i,[quadratische Funktion])
end;
darf man das nicht so machen?
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 28.11.10 23:38
Dann mach es doch so. Wenn du im Code auch hinschreibst, dass der Wert gerundet werden soll, dann passiert das auch...
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: So 28.11.10 23:45
Ja nur das einzige Problem ist halt, dass die quadratische Gleichung mit 0,024 anfängt und mit integer kann ich keine Dezimalzahl darstellen und mit extended funktioniert der Rest nicht mehr.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 28.11.10 23:47
Für das Zeichnen kannst du mit den Nachkommastellen doch ohnehin nichts anfangen. Deshalb kannst du genau bei der Berechnung des Koordinatenwertes runden. Ich verstehe das Problem nicht. 
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: So 28.11.10 23:49
wenn ich dann rechne 0,024 * 200 spielt das doch schon eine Rolle.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 28.11.10 23:50
Delphi-Quelltext
Trozdem würde ich das trennen und der Schleife nur eine Liste der zu zeichnenden Pixel übergeben.
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: So 28.11.10 23:53
mir qualmt der Kopf
Zeig doch mal bitte deinen Sourcecode  Ich glaub alle reden hier aneinander vorbei
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: So 28.11.10 23:57
|
|