Probleme mit Kommazahlen - Runtime Error



  • sicherheitsfan schrieb:

    die eingabe ist unsicher!

    Was soll an der Eingabe denn unsicher sein? Er hat die Eingabelänge doch ganz klar begrenzt.



  • was hast du den für einen kompiler ?
    wenn du eine gui hast dann suchmal ein menü wo du das wegoptimieren der überschüssigen funktionen verhindert

    floating point not loaded -> keine verlinkung



  • rumprobieren schrieb:

    sicherheitsfan schrieb:

    die eingabe ist unsicher!

    Was soll an der Eingabe denn unsicher sein? Er hat die Eingabelänge doch ganz klar begrenzt.

    buchstabeneingabe macht probs



  • sicherheitsfan schrieb:

    buchstabeneingabe macht probs

    Das hast du schonmal gesagt.



  • Bzw. welche Buchstaben zum Teufel?



  • rumprobieren schrieb:

    sicherheitsfan schrieb:

    buchstabeneingabe macht probs

    Das hast du schonmal gesagt.

    wann 😕

    rumprobieren schrieb:

    Bzw. welche Buchstaben zum Teufel?

    A, a, B, b, ... Z, z.
    Und alle anderen Zeichen, die keine Zahl darstellen.



  • was hast du den für einen kompiler ?
    wenn du eine gui hast dann suchmal ein menü wo du das wegoptimieren der überschüssigen funktionen verhindert

    Ich arbeite mit MS Visual Studio 2005 und dem zugehörigen Compiler.

    Ich mach mich da mal auf die Suche, viell. find ich den Punkt ja.

    Danke dafür.

    0xyD



  • Hätte da noch eine Frage:

    Wie genau kann ich denn meine Eingabe auf unpassende Zeichen kontrollieren?

    Momentan beende ich mein Programm ja knallhart mit einem EXIT_FAILURE in dem Teil hier:

    scanf("%i", &anzahl);   //<=====
    	if(anzahl > 0 && anzahl <= 20)	{
    		doubleArrayEingabe(a, anzahl);
    		doubleArrayAusgabe(a, anzahl);
    	}
    	else	{
    		printf("Fehlerhafte Eingabe.\n");
    		return EXIT_FAILURE;
    

    Was ja auch noch Ok ist, ich könnte ja evtl. ne Schleife drum packen die jede Eingabe prüft und sich so lange wiederholt, bis alle Eingaben korrekt drin sind.

    Nun möchte ich an dieser Stelle hier:

    for(int i = 0; i < anzahl; i++)	{
    		//a[i] = 0.0;
    		printf("a[%i]: ", i);
    		scanf("%lf", &a[i]);   //<====
    	}
    

    direkt nach der Eingabe prüfen, ob die erforderlichen Eingaben richtig gemacht wurden, aber eben ob es sich um Eingaben im "double" Format handelt und keine alphabetischen Zeichen oder Sonderzeichen.

    Dazu müsste es doch eine fertige Funktion geben, oder? Ich suche schon die ganze Zeit aber ich glaube, ich sehe den den Wald vor lauter Bäumen nicht mehr...

    Gruss

    0xyD



  • ja, oder so schrieb:

    oder so deklarieren:
    double a[20] ={0.0};

    double a[20] = {};
    

    Reicht übrigens vollkommen aus.



  • 0xyD schrieb:

    for(int i = 0; i < anzahl; i++)	{
    		//a[i] = 0.0;
    		printf("a[%i]: ", i);
    		scanf("%lf", &a[i]);   //<====
    	}
    

    ..

    Gruss

    0xyD

    int NoError = 0;
    int i=0;
    ...
    for(i=0; i<anzahl; i++){
        printf("a[%i]: ",i);
        NoError = scanf("%lf", &a[i]);
        if(NoError == 0){
            printf("falsche Eingabe");
            while(getchar()!= '\n');
            i = i - 1;
            continue;
        }
    }
    

    habs nicht probiert muss aber gehen bzw. so in der richtung 😉


Anmelden zum Antworten