Hi,
also ich brauche Hilfe bei einer Aufgabe. Programmiert wird in C.
Wenn ein Zeichen in einem String das aus einem Array von Char's besteht kein 0-9, minus, plus oder punkt enthält, dann soll die Variable "Fehler" um eins erhöht werden. Dadurch wird dann in der Main funktion ein Fehler ausgegeben in der Konsole.
EDIT1: Habe die Main Funktion hinzugefügt. Das Problem ist, dass wenn man z.B. "asdf" eingibt, dann 0.000000 aus gegeben wird.
In der Zeile 8 soll eigentlich statt PS folgendes stehen (alles zusammen):
% 5 0 s
EDIT2: Es geht darum dass man nur eine gültige Gleitkommazahl angeben darf. Wenn das der Fall ist, dann wird es in der Konsole angezeigt.
Mein bisheriger Code:
Code
- int isDouble(char* s);
- int main()
- {
- char Zeichenfolge[50];
- do
- {
- printf("\n\nBitte geben sie eine Gleitkommazahl ein ");
- scanf_s("Ps", Zeichenfolge,50);
- isDouble(Zeichenfolge);
- if (isDouble(Zeichenfolge))
- {
- printf("\n %lf wurde eingegeben",atof(Zeichenfolge));
- }
- else
- {printf("\nFehler bei der Eingabe");}
- }
- while (1);
- }
Code
- int isDouble(char* s)
- {
- int i,Punkte,Fehler;
- Punkte=0;
- Fehler = 0;
- for(i = 0; (i<=50 && s[i]!='\0'); i++)
- {
- if(s[i+1] == '+' || s[i+1] == '-')
- {Fehler= Fehler+1;}
- if (s[i] == '.')
- {Punkte= Punkte+1;}
- if (Punkte>1)
- {Fehler = Fehler+1;}
- if((s[i] < '0') && (s[i] > '9'))
- {
- if (((s[i] !='+') || (s[i] !='-') || (s[i] !='.')))
- { Fehler = Fehler+1;}
- }
- }
- if (Fehler>=1)
- {return(0);}
- else
- {return(1);}
- }