Lösung zur Übung 2 , Aufgabe 3 - Quelltext

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

  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>
#include <stdlib.h>

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

/* Information zum Programm */
#define M1 "\nGradmass zu Bogenmass - Rev. 9\n"
#define M2 "\nDieses Programm berechnet zu einem im Gradmass (Altgrad) einzugebenden"
#define M3 "\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 ProgInfo gibt Informationen zum Programm aus. */
void ProgInfo (void);

/*
  Die Funktion ReadFloat liest einen float-Wert ein
  und liefert diesen als Resultat.
  Wenn sich ein Eingabefehler ereignet, wird das Programm
  mit dem Fehlercode 1 beendet.
  Export: float-Resultat = eingegebener Wert
*/
float ReadFloat (void);

/*
  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;
 /* Information ueber dieses Programm ausgeben */
 ProgInfo();
 /* Information ueber die erwartete Eingabe */
 printf(InInfo);
 /* Eingabe einlesen und Variable Grad zuweisen */
 Grad = ReadFloat();
 /* Bogenmass berechnen */
 Bogen = DegToRad(Grad);
 /* Eingabe und Resultat ausgeben */
 printf("\n%.2f° -> %f rad\n", Grad, Bogen);
  /* Rueckkehr zum Betriebssystem ohne Fehlercode */
 return 0;
}

/* Implementation der Funktion ProgInfo */
void ProgInfo (void)
{
 printf("%s%s%s",M1,M2,M3); /* Die Information steckt in den Konstanten M... */
}

#undef Test

/* Implementation der Funktion ReadFloat */
float ReadFloat (void)
{
 float Temp; /* temporaere Variable */
 int gelesen; /* Variable fuer das Resultat von scanf */
 char dummy; /* Pseudovariable zur Fehlererkennung */
 /* Eingabe einlesen und auf Eignung pruefen */
 gelesen = scanf("%f%c",&Temp,&dummy);
 #ifdef Test
  printf("\n%d Eingabefelder gelesen und abgespeichert:\n",gelesen);
  printf("Zahl: %f ; Zeichencode: %d\n",Temp,dummy);
 #endif
 if (gelesen!=2 || dummy!=Key_LF) exit(1); /* Eingabe ungeeignet */
 return Temp; /* Eingabe geeignet */
}

/* Hier folgt die Implementation der Funktion DegToRad. */
float DegToRad (float Degree)
{
 return Pi/180.0*Degree; /* Bogenmass/Pi = Gradmass/180 */
}
=> zur Liste der Lösungsvorschläge Übung 2

zusammengestellt von G. Eichelsdörfer