http://www.pronix.de -> Forum -> C-Programmieren

Unterseiten

Forum: C-Programmieren

Moderatoren: juergen, Martin Conrad

Thema: Fragen zu einer Bogenmaß-Funktion

  • (nur registrierte Mitglieder)
Hi,

Zitat:

Letztendlich lag es am falschen Datentyp.
Ich hab dann irgend wann mal es mit float probiert und schon lief die Sache durc.


Nein, am falschen Conversion Specifier für scanf.

scanf_s("%d", &winkel);


Mit %d erwartet sich scanf einen Integer, keinen Float. Wenns momentan funktioniert, dann nur zufällig.

mfg, Wolfgang

--
Hex, Bugs and Rock 'n Roll

 
Hier nochmal die "verbesserte" Version deines Programms. Wie mein Vorredner sagte - das Formatzeichen ist falsch gewesen und war für dezimale Ausgaben und nicht für Gleitpunkttypen.
Es ist aber zu empfehlen "%lf" als Formatzeichen zu verwenden, da du nicht mit float sondern double und damit doppelter Genauigkeit arbeitest.

Ebenfalls PI als Konstante der C-Standard-Library mit einzubeziehen

Vergleich mal meine Version mit deiner. Dann wirst du feststellen, dass du dir viele Variablendeklaration sparen und zum Beispiel gleich in printf die Funktion aufrufen kannst.


 
#include <stdio.h>
#include <math.h>

double bogenmass(double wink)
{	 
	return (M_PI* (double)wink/180);
}

int main(void)
{
	double winkel;
	int i= 0; //Zählvariable 

	printf("Bitte geben Sie einen Winkel ein: ");
	scanf("%lf", &winkel); 
	printf("Bogenmass: %lf\n", bogenmass(winkel));
	return 0;
} 


 
Nicht erschrecken sollte die Nutzer des Compilers der
	scanf("%lf", &winkel);

nicht versteht. Eventuell können das ja die neuesten Compiler des Anbieters, aber die älteren wollten nur
	scanf("%f", &winkel);


Nur falls da mal jemand stolpern sollte Grafik: Smilie Zwinker

MfG bcc-fan

--
C/C++
only just for fun

 
  • (nur registrierte Mitglieder)