Autor Beitrag
delphimaus
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 09.02.09 13:57 
Also für die Addition hab ich folgendes hingeschrieben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button2Click(Sender: TObject);
var zahl1, zahl2, summe : real;
begin
  zahl1 := StrTofloat(edit1.text);
  zahl2 := StrTofloat(edit2.text);
  summe := zahl1-zahl2;
  label1.caption := floattostrF(summe,ffFixed,8,3);
end;


Moderiert von user profile iconKha: Delphi-Tags hinzugefügt
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mo 09.02.09 14:15 
Zitat:
summe := zahl1-zahl2;

Das ist aber nicht die Summe ;)

Die neuen Funktionen gehen so ähnlich:
ausblenden Delphi-Quelltext
1:
Sinus := sin(Zahl1);					

_________________
PROGRAMMER: A device for converting coffee into software.
spawn89
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 82
Erhaltene Danke: 7

Linux
CodeTyphon
BeitragVerfasst: Mo 09.02.09 14:15 
:welcome: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: 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:

ausblenden 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:

ausblenden Delphi-Quelltext
1:
sinus := sin(zahl1 / 180 * Pi)					
delphimaus Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 16.02.09 13:51 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button16Click(Sender: TObject);
var a,sinus:integer;
begin
a:=strtoint(edit1.Text);
sinus :=sin(sin(a / 180 * Pi));
label1.Caption:=inttostr(sinus);



hab das jetzt soweit, aber es funktioniert nicht. könnt ihr mir sagen wo der fehler liegt?

Moderiert von user profile iconKha: Delphi-Tags hinzugefügt
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Mo 16.02.09 14:02 
Zitat:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50

Win XP, Vista
Delphi 7, Delphi 2006
BeitragVerfasst: Mo 16.02.09 14:13 
user profile icondelphimaus hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 16.02.09 15:08 
user profile iconJakob_Ullmann hat folgendes geschrieben Zum zitierten Posting springen:
Doch, das compiliert Delphi. Nehmen wir mal an, a sei 0,
Das kann Delphi aber schlecht annehmen beim Kompilieren. :lol:

Und deshalb kompiliert das nicht erfolgreich. Sin gibt nun einmal keinen Integerwert zurück.
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Mo 16.02.09 15:12 
Hmm, ich dachte, der hätte das schonmal so compiliert. :o :gruebel:
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Mo 16.02.09 18:30 
user profile icondelphimaus hat folgendes geschrieben Zum zitierten Posting springen:
Also für die Addition hab ich folgendes hingeschrieben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button2Click(Sender: TObject);
var zahl1, zahl2, summe : real;
begin
  zahl1 := StrTofloat(edit1.text);
  zahl2 := StrTofloat(edit2.text);
  summe := zahl1-zahl2;
  label1.caption := floattostrF(summe,ffFixed,8,3);
end;


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


:D

Sorry :wink: , aber die Summe gibt es bei der Addition und nicht der Subtraktion.

Achja und die Funktionen gehen glaube ich so:
ausblenden Delphi-Quelltext
1:
zahl1 := Sin(zahl2);					

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Mo 16.02.09 18:52 
Beides wurde bereits geklärt. :wink:
delphimaus Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 23.02.09 12:58 
Wofür erstellst du denn eine eigene leere Funktion sin? :shock:

Hast du die Unit Math nicht oben in die uses Liste eingetragen, so dass die richtige Funktion Sin nicht gefunden wurde? ;-)
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 23.02.09 13:24 
danke, es funktioniert, auch bei cosinus und tangens. wie toll.