Eingabe auf Array verteilen



  • Hi Leute,

    Ich habe bereits einen deklarierten Array mit zugewiesenen Werten:

    int zweiterBlock[6]
    zweiterBlock[0] = 7 ; // 
    zweiterBlock[1] = 3 ; //
    zweiterBlock[2] = 1 ; //  Wer ne Vermutung hat was das hier ist
    zweiterBlock[3] = 1 ; //  bitte posten :D
    zweiterBlock[4] = 0 ; //  Würd mich mal interessieren ob ihr drauf kommt
    zweiterBlock[5] = 1 ; //
    

    Ich möchte nun eine Eingabe auf den Array aufteilen:
    Wenn die Eingabe 392139 erfolgt soll in
    zweiterBlock[0] der Wert 3 geschrieben werden,
    in zweiterBlock[1] der Wert 9 usw.

    Ich glaube iergendwann ( vor etwa einem Monat )
    habe ich mal gesehen wie das jemand mit einer Schleife gelöst
    hat, weiß aber den Kontext nicht mehr :-&

    Ich hoffe ihr habt mal wieder (wie fast immer wenn ich was frage :D) Rat

    Grüße aus NRW



  • Hi!

    Du bekommst die jeweils letzte Ziffer der Eingabe mit folgendem Modulo Konstrukt:

    int LetzteStelle = Eingabe%10;
    LetzteStelle /= 10;
    

    Das einfach in ner Schleife ausführen, dann hast du deine einzelnen Ziffern!



  • KPC schrieb:

    Hi!

    Du bekommst die jeweils letzte Ziffer der Eingabe mit folgendem Modulo Konstrukt:

    int LetzteStelle = Eingabe%10;
    LetzteStelle /= 10;
    

    Das einfach in ner Schleife ausführen, dann hast du deine einzelnen Ziffern!

    Nicht wirklich. Das muß:

    int LetzteStelle = Eingabe%10;
    Eingabe /= 10;
    

    heißen.



  • Z2 schrieb:

    KPC schrieb:

    Hi!

    Du bekommst die jeweils letzte Ziffer der Eingabe mit folgendem Modulo Konstrukt:

    int LetzteStelle = Eingabe%10;
    LetzteStelle /= 10;
    

    Das einfach in ner Schleife ausführen, dann hast du deine einzelnen Ziffern!

    Nicht wirklich. Das muß:

    int LetzteStelle = Eingabe%10;
    Eingabe /= 10;
    

    heißen.

    Und wie ist es dann bei der vorletzten?
    Modulo 100?
    😃



  • int stellenArray[6];
    
    // ...
    
    unsigned long accu = zahlVonIrgendwoher;
    // befüllt immer alle Stellen in stellenArray, was nicht gebraucht wird wird auf 0 gesetzt
    for(size_t i = 0; i < sizeof(stellenArray); ++i, accu /= 10)
        stellenArray[i] = accu % 10;
    
    // wenn was übriggeblieben ist war die zahl zu gross!
    if(accu != 0)
    {
        printf("Zahl zu gross!\n");
        abort();
    }
    


  • Plotzenhotz schrieb:

    int stellenArray[6];
    
    // ...
    
    unsigned long accu = zahlVonIrgendwoher;
    // befüllt immer alle Stellen in stellenArray, was nicht gebraucht wird wird auf 0 gesetzt
    for(size_t i = 0; i < sizeof(stellenArray); ++i, accu /= 10)
        stellenArray[i] = accu % 10;
    
    // wenn was übriggeblieben ist war die zahl zu gross!
    if(accu != 0)
    {
        printf("Zahl zu gross!\n");
        abort();
    }
    

    Dein Code vertauscht die Zahlen....

    {
    		unsigned long accu = BN;
             for(size_t i = 0; i < 4; ++i, accu /= 10)
             ersterBlock[i] = accu % 10;
    	}
    
    ersterBlock[0] = 2 ; //
    	ersterBlock[1] = 8 ; // Diese Nummer soll
    	ersterBlock[2] = 8 ; // ueberschrieben werden!
    	ersterBlock[3] = 2 ; //
    
    cout << ersterBlock[0].... << ersterBlock[3] << endl;
    
    Ausgabe: 
    
    Bitte geben Sie die Behoerden-Nummer ein!
    4123
    3214
    

    😕



  • Achherrjeh, stimmt. Auch egal:

    int stellenArray[6];
    
    // ...
    
    unsigned long accu = zahlVonIrgendwoher;
    unsigned i = 0;
    for(; accu && (i < sizeof(stellenArray)); ++i, accu /= 10)
        stellenArray[i] = accu % 10;
    if(accu != 0)
    {
        printf("Zahl zu gross!\n");
        terminate();
    }
    
    std::reverse(&stellenArray[0], &stellenArray[i]);
    std::fill(&stellenArray[i], &stellenArray[sizeof(stellenArray)/sizeof(stellenArray[0])], 0);
    

    Oder so... 🙂


Anmelden zum Antworten