kleines verwaltungsprogramm für wareneingang



  • hm das hilft mir alles nicht weiter 😞



  • Und warum soll ich raten? 😉
    Wo bist du denn steckengeblieben?



  • servus,

    ich will nur reelle Zahlen einlesen, aber irgendwie kann ich mit den zwei funktionen nur ganze zahlen einlesen...weiss einfach nicht mehr wie ich das lösen soll

    void einlesen_stueckpreis()
    {
    
        printf("Stueckpreis: ");
        gets(stueckpr);
        kontrolle_eingabe_stueckpreis(stueckpr);
    
    }
    
    int kontrolle_eingabe_stueckpreis(char stueckpreis[])
    
    {    
    
    char a;
    int i = 0, c = 0;
    
    do 
     {
    
      a = stueckpreis[0];
      while (a!= '\0') 
      {
        if ((a>='0') && (a<='9') && '.')
        {
        c = 1;  
        }     
        else
        {
        printf("\nEs ist nur die Einganbe von Reellen Zahalen gueltig!\n\n");
        einlesen_stueckpreis();
        }
        a=stueckpreis[++i];
       }
    
     }while ( c == 0); 
    
    return 0;
    
    }
    

    danke schonmal für lösungsvorschläge 🙄



  • Dein Code sieht eher wenig vertrauenswürdig aus:

    einlesen_stueckpreis ruft kontrolle_eingabe_stueckpreis auf, und umgekehrt, bist du sicher,
    daß da nicht noch eine Endlosschleife rauskommt?

    ((a>='0') && (a<='9') && '.')
    

    '.' ist immer wahr. Wahrscheinlich meinst du

    ((a>='0') && (a<='9') || a=='.'))
    

    In rellen Zahlen sind BTW noch mehr Zeichen als Ziffern und der Punkt zulässig.
    Zb + und -, aber auch E und e. Etwas vergessen? Egal, denn:

    ~mngbd schrieb:

    Du könntest man: strtof und man: strtold verwenden

    Das hatte ich gesagt, und alles, was dir dazu eingefallen ist, war:

    hm das hilft mir alles nicht weiter 😞

    Also mein Vorschlag für Gleitkommazahlen statt ganzen Zahlen:

    int kontrolle_eingabe_stueckpreis(char stueckpreis[])
    {
        char *last = NULL;
    
        if (strtold(stueckpreis, &last) == 0.0 && stueckpreis == last)
            return 1;  // stueckpreis ist keine gültige Zahl
        else
            return 0;  // stueckpreis ist gültig
    }
    

    Wenn du mir weiterhin nicht sagst, warum dir das nicht weiterhilft, wird mir die Lust vergehen, dir zu helfen.


Anmelden zum Antworten