C++: punten tussen getallen

Status
Niet open voor verdere reacties.

Takai

Nieuwe gebruiker
Lid geworden
7 jul 2009
Berichten
1
Hey,

ik heb een programma gemaakt dat als uitkomst verschillende getallen kan weergeven

BV
91002
of
12525421

Ik zou willen dat het als uitvoer zo is:

91.002
of
12.525.421

hoe doe je dat?
 
Daar is geen standaard functie voor, maar je kunt zelf iets maken. Aangezien ik vermoed dat dit redelijk boven je kunnen ligt op dit moment, heb ik iets voor je in elkaar geknutseld.

[cpp]
#include <string>
#include <iostream>
#include <sstream>

using namespace std;

string addPoints(int in){
stringstream ss;
ss << in;
string in_str = ss.str(); // conversie van int > string
string out_str = "";
for (unsigned i = 0; i < in_str.length(); i++){
if ((in_str.length() - i) % 3 == 0 && i != 0)
out_str+='.'; // als het een derde getal vanaf de rechterkant is
out_str+=in_str;
}
return out_str;
}

int main(){
cout << addPoints (1234567890);
cin.get();
}
[/cpp]

output : 1.234.567.890

Wat ik met deze functie doe is:
- een int omzetten naar eeen string. Dit doe ik omdat ik je bij een string door ieder element (dus getal) kunt heenlopen.
- dan loop ik door alle elementen van het getal (dus 1-2-3-4 etc) heen en voeg deze toe aan een nieuwe string.
- dan zit er in de loop nog een if-statement die kijkt of we bij een (veelvoud van) een derde getal zijn (gezien vanaf rechts) en voegt een punt toe. Aangezien we geen punt willen hebben op de nulde positie (mocht het getal een veeelvoud van 3 digits hebben) heb ik er nog een && i != 0 aan toegevoegd.

Ga maar eens spelen met de code, dan zie je vanzelf hoe hij werkt! :thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan