Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

versuche den sin und tan zu berechnen, das mit hilfe einer funktion und wertrückgabe über zeiger...

der haken an der sache ist das ich eben einen bestimmten wertebereich den w annehmen kann ausschließen muß. nur leider bringt er mir einen syntaxfehler `=` in der for-zeile...

das zweite was ich nicht verstehe ist ich habe am anfahnd die math.h includet, doch wenn ich dann M_PI reinschreib sagt er mir das sie nicht initialisiert ist...

Würd mich freuen wenn ihr mir weiter helfen könntet!!!

Danke gruß



#define _CRT_SECURE_NO_WARNINGS

#include <math.h>

#include <stdio.h>

#define PI = 3.14193


void sin_tan(double w, double *ws, double *wt);


int main(void)

{	

	double w, ws, wt;

	printf("Winkel im Bogenmass zw.0 und 3.14 eingeben:\n");

	scanf("%lf",&w);

	sin_tan(w, &ws, &wt);

	printf("Winkel im Bogenmass zw.0 und 3.14\n%f\nSinus= %f\nTangens= %f", w, ws, wt);


	return 0;

}


void sin_tan(double w, double *ws, double *wt)

{


	for ((w <= PI/2 -1e-6) && (w >= PI/2 +1e-6))


	*ws = sin(w);

	*wt = tan(w);


}

Geschrieben

Ich verstehe Dein Konstrukt überhaupt nicht.

Du willst für _einen_ eingegeben Wert eine entsprechende Berechnung durchführen, wofür brauchst Du dann eine For-Schleife, die auch so, wie sie zu sehen ist, falsch ist?

Ob Du nun Deine Daten als Call-by-Reference oder by-Value übergibst und die Daten zurück liefert, naja darüber kann man diskutieren

Geschrieben

Hi,

das problem ist das der tangens bei pi/2 nicht definiert ist, darum soll die berechnung nur ausgeführt werden wenn der übergebene winkel um weniger als 1e-6 von pi/2 entfernt ist...

Geschrieben

das problem ist das der tangens bei pi/2 nicht definiert ist, darum soll die berechnung nur ausgeführt werden wenn der übergebene winkel um weniger als 1e-6 von pi/2 entfernt ist...

Das ist schon klar, da tan = sin/cos und der Cos eben periodisch bei pi/2 null wird. Das erklärt aber _nicht_ Deine For-Schleife.

Außerdem was ist bei 3*pi/2? Dieser Wert ist dann auch ungültig, du musst jedes Vielfache entsprechend ausschließen. Um erst einmal für pi/2 zu prüfen würde man If nehmen

Geschrieben

deine for schleife ist trotzdem falsch. was du realisieren möchtest würde ich mit einer do while oder while schleife realisieren.

eine for schleife wird anders aufgebaut als du sie hast.

for ( Wert  ; Wann dies gemacht werden soll ; Erhöhung des Wertes )

{


}

Geschrieben

ja sorry folks, ist klar das die for schleiße ein absoluter schwachsinn ist... habs jetzt mal mit do-while gemacht... aber immernoch der syntaxfehler ´=´

@flashpixx: das problem mit 3xpi/2 ist erledigt da der benutzer nur von 0-3.14 eingeben darf... fehleingaben werden nicht beachtet....


#define _CRT_SECURE_NO_WARNINGS

#include <math.h>

#include <stdio.h>

#define PI = 3.14193


void sin_tan(double w, double *ws, double *wt);


int main(void)

{	

	double w, ws, wt;

	printf("Winkel im Bogenmass zw.0 und 3.14 eingeben:\n");

	scanf("%lf",&w);

	sin_tan(w, &ws, &wt);

	printf("Winkel im Bogenmass zw.0 und 3.14\n%f\nSinus= %f\nTangens= %f", w, ws, wt);


	return 0;

}


void sin_tan(double w, double *ws, double *wt)

{

	do

	{


	*ws = sin(w);

	*wt = tan(w);

	}



	while ((w <= PI/2 -1e-6) && (w >= PI/2 +1e-6));



}

Geschrieben
ja sorry folks, ist klar das die for schleiße ein absoluter schwachsinn ist... habs jetzt mal mit do-while gemacht... aber immernoch der syntaxfehler ´=´

Erklär mal bitte warum eine Schleife wenn Du in der Referenz nur einen Wert zurücklieferst !?

Geschrieben

ja stimmt auch wieder...

was hältst du davon?


#define _CRT_SECURE_NO_WARNINGS

#include <math.h>

#include <stdio.h>

#define PI = 3.14193


void sin_tan(double w, double *ws, double *wt);


int main(void)

{	

	double w, ws, wt;

	printf("Winkel im Bogenmass zw.0 und 3.14 eingeben:\n");

	scanf("%lf",&w);

	sin_tan(w, &ws, &wt);

	printf("Winkel im Bogenmass zw.0 und 3.14\n%f\nSinus= %f\nTangens= %f", w, ws, wt);


	return 0;

}


void sin_tan(double w, double *ws, double *wt)

{


	if((w <= PI/2 -1e-6) && (w >= PI/2 +1e-6))

	{


	*ws = sin(w);

	*wt = tan(w);

	}

	else

		printf("Winkel im Bogenmass zw.0 und 3.14\n%f\nFehler", w);

}

Geschrieben

Ich würde den Vergleich ungefähr so realisieren:


#include <float.h>

bool doubleequal(double a, double 

{

    return fabs(a -  < DBL_EPSILON;

}[/code]

Aber so sieht das schon besser aus

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...