/*
  Programm zur Umrechnung eines Winkels vom Gradmass zum Bogenmass
  Rev. 8, (C) Gerhard Eichelsdoerfer

  Diese Variante enthaelt
  * In Kommentaren Hinweise zu Konstanten, Variablen und Funktionen,
  * die Funktion DegToRad
  * eine Fehlererkennung, die ein ungeeignetes Zeichen in der
    Eingabe-Zeichenkette feststellt.
    Fuehrende Whitespaces (z.B. Leerzeichen) werden uebergangen.
  * eine Sequenz mit bedingter Uebersetzung zur
    Ausgabe zwecks Erkennung von geeigneter und ungeeigneter Eingabe
*/

#include <stdio.h>

/* Definition von Test zur bedingten Uebersetzung */
#define Test

/* Information zum Programm */
#define Message "\nDieses Programm berechnet zu einem im Gradmass (Altgrad)
einzugebenden\nWinkel das Bogenmass.\n"

/* Information ueber eine erwartete Eingabe */
#define InInfo "\nGeben Sie den Winkel im Gradmass ein: "

/* Definition der Kreiszahl Pi */
#define Pi 3.141592654

/* Definition des Zeichens von Line Feed (Zeilenvorschub) */
#define Key_LF 10

/*
  Die Funktion DegToRad berechnet zu einem Winkel im Gradmass
  den Winkelwert im Bogenmass.
 Import: float-Parameter mit Winkelwert im Gradmass
 Export: float-Resultat mit Winkelwert im Bogenmass
*/
float DegToRad (float); /* oder z.B. float DegToRad (float Degree); */

int main()
{
 /* Variablen fuer die Eingabe und das Resultat */
 float Grad, Bogen;
 /* Variable fuer das Resultat von scanf */
 int gelesen;
 /* Pseudovariable zur Fehlererkennung */
 char dummy;
 /* Informationen zum Programm ausgeben */
 printf(Message);
 /* Information ueber die erwartete Eingabe ausgeben */
 printf(InInfo);

 /*
   Eingabe einlesen und Variable Grad zuweisen.
   Zusaetzlich das Zeichen hinter der umgewandelten float-Zeichenkette
   in der Variable dummy ablegen.
 */
 gelesen = scanf("%f%c",&Grad,&dummy);

 /*
   Falls der Bezeichner Test an dieser Stelle definiert ist,
   Informationen ueber Anzahl und Werte der umgewandelten Teile ausgeben
 */
 #ifdef Test
  printf("\n%d Eingabefelder gelesen und abgespeichert:\n",gelesen);
  printf("Zahl: %f ; Zeichencode: %d\n",Grad,dummy);
 #endif

 if (gelesen==2 && dummy==Key_LF)
 {/* Eingabe vollstaendig geeignet */
  /* Bogenmass berechnen und der Variablen Bogen zuweisen */
  Bogen = DegToRad(Grad);
  /* Eingabe und Resultat ausgeben */
  printf("\n%f° -> %f rad\n", Grad, Bogen);
  /* Rueckkehr zum Betriebssystem ohne Fehlercode */
  return 0;
 }
 else
 {/* Eingabe nicht vollstaendig geeignet */
  /* Fehlermeldung ausgeben */
  printf("\nEs ist ein Fehler bei der Eingabe aufgetreten!\n");
  /* Rueckkehr zum Betriebssystem mit Fehlercode 1 */
  return 1;
 }
}

/* Implementation der Funktion DegToRad. */
float DegToRad (float Degree)
{
 return Pi/180.0*Degree; /* Bogenmass/Pi = Gradmass/180 */
}

zur Liste der Beispiele zur nächsten Version