Autor |
Beitrag |
delphimaus
Hält's aus hier
Beiträge: 8
|
Verfasst: Mo 09.02.09 13:14
Hallo ihr lieben Programmierfreunde. Also ich habe vor 2 Monaten angefangen mit mich mit Delphi (spez. Delphi 2005) zu beschäftigen. Bin grade dabei mir einen Taschenrechner zusammenzubasteln. Die Grundfunkitonen wie Addition, Subtraktion, Multiplikation und Division kann er schon. Nun hänge ich allerdings bei Sinus, Cosinus und Tangens fest. Also der Pc soll wenn ich bsw. auf den Button 'Sinus' klicke, und davor eine Zahl im Edit Fenster eingegeben habe, den Sinus davon ausgeben.
Könnt ihr mir vielleicht einen Befehl dafür geben? Habe wirklich schon viel ausprobiert, aber es hat keinen Sinn
Liebe Grüße, die Mausi
|
|
ene
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Mo 09.02.09 13:18
Hi,
Cos() und Sin() heißen die Funktionen. Reicht das?
_________________ Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
|
|
delphimaus 
Hält's aus hier
Beiträge: 8
|
Verfasst: Mo 09.02.09 13:39
Danke, aber eigentlich reicht das nicht, ich weiss nicht in welchem Zusammenhang ich das eingeben muss. Bin halt noch Anfängerin:)
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mo 09.02.09 13:52
Wie hast du denn bisher z.B. das Addieren gemacht? So ähnlich geht das dann auch mit Sinus. Zeig mal den Quellcode, den du bisher hast.
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
delphimaus 
Hält's aus hier
Beiträge: 8
|
Verfasst: Mo 09.02.09 13:57
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mo 09.02.09 14:15
Zitat: | summe := zahl1-zahl2; |
Das ist aber nicht die Summe
Die neuen Funktionen gehen so ähnlich:
Delphi-Quelltext
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
spawn89
      
Beiträge: 82
Erhaltene Danke: 7
Linux
CodeTyphon
|
Verfasst: Mo 09.02.09 14:15
 tach,
um z.B. den Kosinus zu berechnen kannst du die Funktion "Cos()" benutzen.
Wenn du darauf F1 drückst bekommst du weitere Info´s zur Benutzung.
z.B.:
- die Unit math muss eingebunden sein
- Gibt einen Float Wert zürück
- Parameter
- etc
Was jedoch etwas verwirrend ist, sind die Funktionen wie RadToDeg(). Delphi hat intern irgendwelche anderen Werte.
(da musst du einfach mal rumtesten, mach ich da auch immer )
Ansonsten empfehle ich ein paar Tutorials auf dsdt.info für den Anfang.
Edit: *schnell verbuddel, sowas passiert wenn man kein Delphi zur Hand hat*
Zuletzt bearbeitet von spawn89 am Mo 09.02.09 17:09, insgesamt 1-mal bearbeitet
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Mo 09.02.09 15:43
Nein! Ich schreib es heute zum zweiten Mal: Sin() und Cos() sind beide in der System definiert!
Und zum Thema RadToDeg: Delphi arbeitet mit dem Bogenmaß (Rad wie Radians). Wir wollen aber eventuell ein Ergebnis im Gradmaß (Deg wie Degrees). Delphi erwartet als Argument einen Wert im Bogenmaß, wenn der User aber Gradmaß eingibt, muss es also heißen:
Delphi-Quelltext 1:
| sinus := sin(DegToRad(zahl1)); |
Übrigens: Tan() ist in der Math definiert. Zur Not kann man den aber auch mit sin / cos berechnen.
edit: de.wikipedia.org/wiki/Bogenma%C3%9F
edit2: Man braucht DegToRad() eigentlich nichtmal. Man könnte auch schreiben:
Delphi-Quelltext 1:
| sinus := sin(zahl1 / 180 * Pi) |
|
|
delphimaus 
Hält's aus hier
Beiträge: 8
|
Verfasst: Mo 16.02.09 13:51
|
|
Horschdware
      
Beiträge: 744
Erhaltene Danke: 54
Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
|
Verfasst: Mo 16.02.09 14:02
Zitat: | Delphi-Quelltext 1:
| sinus :=sin(sin(a / 180 * Pi)); | |
schau doch mal genau, was du hier machst.
Du bestimmst den Sinus von Sinus...
Doppelt gemoppelt 
_________________ Delphi: XE - OS: Windows 7 Professional x64
|
|
Nico72
      
Beiträge: 50
Win XP, Vista
Delphi 7, Delphi 2006
|
Verfasst: Mo 16.02.09 14:13
delphimaus hat folgendes geschrieben : | procedure TForm1.Button16Click(Sender: TObject);
var a,sinus:integer;
begin
a:=strtoint(edit1.Text);
sinus :=sin(sin(a / 180 * Pi));
label1.Caption:=inttostr(sinus);
|
Ein Sinus liegt zwischen -1 und 1. Deswegen hat Sin() auch einen Rückgabewert vom Typ Extended. Du weist das Ergebnis aber einer Integer-Variable zu. Das sollte Delphi nicht mal kompilieren, sondern eine Fehlermeldung bringen (Inkompatible Typen...)
Den doppelten Aufruf von Sin() hat ja Horschdware schon erwähnt.
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Mo 16.02.09 15:00
Doch, das compiliert Delphi. Nehmen wir mal an, a sei 0, dann wäre sin(a) auch 0, und damit wäre es nicht inkompatibel.
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 16.02.09 15:08
Jakob_Ullmann hat folgendes geschrieben : | Doch, das compiliert Delphi. Nehmen wir mal an, a sei 0, |
Das kann Delphi aber schlecht annehmen beim Kompilieren.
Und deshalb kompiliert das nicht erfolgreich. Sin gibt nun einmal keinen Integerwert zurück.
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Mo 16.02.09 15:12
Hmm, ich dachte, der hätte das schonmal so compiliert. 
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Mo 16.02.09 18:30
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Mo 16.02.09 18:52
Beides wurde bereits geklärt. 
|
|
delphimaus 
Hält's aus hier
Beiträge: 8
|
Verfasst: Mo 23.02.09 12:40
dumme frage: was ist daran immernoch falsch?
ich blick einfach nicht durch!
function sin(a:extended):extended;
begin
end;
procedure TForm1.Button16Click(Sender: TObject);
var a,sinus:integer;
begin
a:=strtoint(edit1.Text);
sinus :=sin(a / 180 * Pi);
label1.Caption:=inttostr(sinus);
end;
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 23.02.09 12:58
Wofür erstellst du denn eine eigene leere Funktion sin?
Hast du die Unit Math nicht oben in die uses Liste eingetragen, so dass die richtige Funktion Sin nicht gefunden wurde? 
|
|
Timosch
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: Mo 23.02.09 13:05
Und außerdem: Statt Integer Real oder Extended, und statt StrToInt und IntToStr FloatToInt und FloatToStr. Schließlich geben die trigonometrischen Funktionen in der Regel keine Ganzzahlen zurück.
Lies dir bitte mal ein Grundlagentutorial durch, sonst wird das nix...
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|
delphimaus 
Hält's aus hier
Beiträge: 8
|
Verfasst: Mo 23.02.09 13:24
danke, es funktioniert, auch bei cosinus und tangens. wie toll.
|
|