Dezimaltrennzeichen abfragen



  • Hallo zusammen,

    ich hänge zur zeit an einer Aufgabe fest und hoffe hier kann mir wer helfen.

    Bei dem Programm handelt es sich darum, das man Zeichen, Buchstaben und Zahlen eingeben kann, jedoch nur die Zahlen ausgegeben werden! Dazu gibt es folgende Zusatzbestimmungen:

    --> e und E werden als literal für den Exponenten in wissenschaftlicher Notation erkannt

    --> Beim Auswerten des Strings soll das von links aus erste Auftreten des Dezimaltrenners als signifikant angesehen und alle weiteren Vorkommen verworfen

    --> Alle weiteren unbekannten Zeichen sollen ebenfalls verworfen werden!

    Hab das programm jetzt mit einiger Hilfe recht weit geschrieben, jedoch hab ich folgende Probleme:

    Das Programm soll zunächst fragen welches Dezimaltrennzeichen ich
    benutzen möchte und soll anschließend in einer Endlosschleife ab-
    laufen. Ich weiß nicht genau wie man das Dezimaltrennzeichen ändern
    kann!

    Hier ist das Programm:

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    double read_number(char stdin[]){
    
        char str_dbl[100];
        size_t i,j;
        char minus;
        double dbl;
    
        for (minus = 1, i = j = 0; i < strlen(stdin); ++i)
        {
            if (
                (stdin[i] == '-' && minus)
                || (stdin[i] >= '0' && stdin[i] <= '9')
                || (stdin[i] == 'e' || stdin[i] == 'E')
                )
            {
                str_dbl[j++] = stdin[i];
                minus = 0;
            }
        }
        str_dbl[j] = '\0';      
    
        dbl = strtod (str_dbl,0); /*string to double, Auslesen einer reellen Zahl aus einer Zeichenkette*/
    
        return dbl;
    
    }
    
    int main( void )
    {
        char str_dbl[100];
    
        printf("String:");
        fgets(str_dbl, 100, stdin);
    
        printf ("dbl:     %.f\n",read_number(str_dbl));
    
        return 0;
    

    Mit freundlichen Grüßen,
    Micha



  • String.Replace(",",".")
    zum Umwandeln und
    Text.Split(',')[0]
    Text.Split(',')[1]
    Text.Split(',')[2]
    usw. zum Rauspicken der Teile zwischen dem Trennzeichen



  • Ah perfekt danke dir 🙂

    Und wie genau bekomm ich die Main-funktion in eine Endlosschleife? Bei mir hört der nach einem Durchlauf auf, hätte gedacht ich muss das return 0 ändern aber weiß nicht genau in was..


  • Administrator

    Das ist C und nicht C#. Falsches Forum. Verschiebung erfolgt in 3 ... 2 ... 1 ...



  • Dieser Thread wurde von Moderator/in Dravere aus dem Forum C# und .NET in das Forum C (C89 und C99) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • MichaABC schrieb:

    Und wie genau bekomm ich die Main-funktion in eine Endlosschleife? Bei mir hört der nach einem Durchlauf auf, hätte gedacht ich muss das return 0 ändern aber weiß nicht genau in was..

    Eine Schleife darum, deren Bedingung immer wahr ist.
    Z.B.

    while(1) {
    // Alles was endlos ausgeführt werden soll hier rein.
    }
    

    PS: Den Code habe ich schon mal gesehen. 😉


Anmelden zum Antworten