Lösung zur Übung 2 , Funktion ReadFloat, Version 1 - Sachanalyse

Zum Einlesen einer Fließkommazahl wird die C-Bibliotheksfunktion scanf eingesetzt.

Diese liest von der Tastatur (Standardeingabe) bzw. einem zugeordneten Puffer Zeichen ein, wandelt diese gemäß der Vorgabe im importierten Formatstring um und legt das Ergebnis der Umwandlung in zur Verfügung gestellten Variablen ab.

Hier ist ausschließlich das Einlesen einer Formatzahl von Bedeutung.

Um einen Eingabefehler feststellen zu können, müssen zwei Werte überprüft werden:

  1. Das Zeichen unmittelbar hinter der in eine Fließkommazahl umgewandelten Zeichenkette muss ein "Line Feed" (LF) sein (ASCII: 10). Um dieses abschließende Zeichen überprüfen zu können, wird es nach der Fließkomma-Zeichenkette eingelesen. Es sind hinter dem Formatstring also zwei Parameter erforderlich: eine float- und eine char-Referenz (Adresse)
    => Aufruf: scanf (Formatstring, float-Referenz, char-Referenz)

  2. Wenn die Eingabe gültig ist, werden genau zwei Werte eingelesen, umgewandelt sowie float- und char-Variablen zugeordnet. Zusätzlich muss der zweite Wert ein LF-Zeichen sein.
    Die Anzahl an derart verarbeiteten Werten liefert die Funktion scanf als Integer-Wert zurück.
    Zur Fehlererkennung muss also dieser Integerwert auf den Wert zwei geprüft werden.

Die Gültigkeitsbedingung lautet somit:
(Es wurden zwei Werte gelesen.) UND (Das zuletzt gelesene Zeichen ist ein LF.)

Die Fehlerbedingung ist die Umkehrung der Gültigkeitsbedingung:
(Es wurden nicht zwei Werte gelesen.) ODER (Das zuletzt gelesene Zeichen ist kein LF.)

Ist die Fehlerbdingung erfüllt, wird das Programm mit einem Fehlercode abgebrochen.

=> zum Struktogramm => zum Quelltext => zur Liste der Lösungsvorschläge Übung 2

zusammengestellt von G. Eichelsdörfer