R
Kleiner Nachtrag:
Bei folgender Funktion
double LeseZahlstringEin(void)
{
int y = 0, zeichenzaehler = 0, vorzeichen = 0;
double erge = 0, zahl, z = 10;
char temp;
do
{
temp = getch();
if ((zeichenzaehler == 0) && (temp == '-')) vorzeichen = 1;
if ((temp == 'O') || (temp == 'o'))
temp = '0';
if (( temp >= '0') && (temp <= '9'))
zahl = (double)(temp - '0');
if ((temp == '.') || (temp == ';')|| (temp == ':'))
temp = ',';
if (temp == ',')
{
y = 1;
z = 0.1;
}
if ((y == 0) && (temp !=',') && ( temp >= '0') && (temp <= '9'))
erge *= z;
if ((y != 0) && ( temp >= '0') && (temp <= '9'))
{
zahl *= z;
z /= 10;
}
if (( temp >= '0') && (temp <= '9'))
erge += zahl;
if ((temp != ',') && (temp != '\n'))
printf("%c", temp);
if (temp == ',')
printf(".");
zeichenzaehler++;
}
while (temp != '\n');
if (vorzeichen) erge *= -1;
return erge;
}
Werden Fehleingaben etwas milder behandelt.
Gleich ob man ein Komma, Punkt, Semikolon oder Doppelpunkt eingibt, die
Funktion interpretiert das als Dezimalpunkt.
Falls man statt einer '0' ein 'o' oder ein 'O' eingibt, wird das als
'0' interpretiert.
andere Buchstaben wie a, b,d,c,bis z werden gar nicht berücksichtigt.
Gibt man zum Beispiel 123;0asd1245xyz ein, wird 123.01245 daraus.
Für eine Implementierung von einem Rückschritt hatte ich keine Lust.
Das überlasse ich anderen.
Einen Wagenrücklauf und ein Zeilenvorschub ist in dieser Funktion auch nicht
dabei. Man kann also mehrere Zahlen in einer Zeile eingeben.
Soll ja bei mir ein Hobby bleiben und kein Beruf werden. Hat auch mit
51 Jahren keinen Sinn mehr. Eher wird Papst Franziskus Vater, als das ich
im dem Alter noch einen Arbeitsplatz bekomme. Aber lassen wird das, Scherz beiseite.
Viel Spaß bei programmieren.