Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

28.02.2020, 16:58

C++ Eine int Zahl in einzelene Ziffern zerlegen und im Vektor speichern

Hallo. Habe ein neues Problem: Es soll eine Funktion geschrieben werden die eine int Zahl bekommt. Die Zahl soll in einzelne Ziffern zerlegt werden und dann in umgekehrter Reihenfolge in einem Vektor gespeichert werden. Hier mein bisheriges Programm:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using namespace std;

std::vector<int> digitize(unsigned long n) 
{        
    int temp=0;
    vector <int> myVec;
    
    temp  = n / 100;
    myVec.push_back(temp);
    
    n = n - temp * 100;
    
    temp  = n / 10;
    myVec.push_back(temp);
    
    n = n - temp * 10;
    
    temp  = n / 1;
    myVec.push_back(temp);
    
    //std::reverse(myvector.begin(),myvector.end()); 
    
    reverse(myVec.begin(), myVec.end());
    
    return myVec;
}


Das ganze Funktioniert wunderbar solange meine Zahl genau 3-Stellig ist. Nur wie mache ich das ganze jetzt so flexibel, dass es egal ist wie groß die Zahl ist?

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

2

28.02.2020, 19:01

Was Du brauchst, ist eine Schleife und den Modulo-Operator. Modulo ist wie die Division, nur dass Du nicht das Ergebnis, sondern den Rest der Division bekommst.

Du nimmst also die letzte Ziffer mittels Zahl % 10. Dann teilst Du die Zahl durch 10, um diese letzte Ziffer "rauszuschubsen". Und das tust Du solange, wie noch mehr als Nüscht übrig ist.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

3

29.02.2020, 11:29

Cool. Danke :)
Konnte das Problem damit lösen.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
std::vector<int> digitize(unsigned long n)
{
    vector <int> myVec;

    do {
        myVec.push_back(n % 10);
        n = n / 10;
    }
    while (n > 0);

    return myVec;
}

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

4

29.02.2020, 13:31

Sauber!
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

Werbeanzeige