Leading Zeros in c++

Gast #6729466
Lesenswert?

Hey

mit folgender Schleife kann ich alle Zahlen von 0 bis 199 ausgeben
Ich möchte nun bei einstelligen Zahlen abwechselnd keine, eine oder zwei 
0 asugeben, und bei zweistelligen eine oder zwei. Wie bekomm ich dies 
mit möglichst wenig Code hin?

for (c = 0; c < 200; c++) {
   cout << c << endl;
}
Gast #6729529
Lesenswert?

Alex schrieb:
> mit folgender Schleife kann ich alle Zahlen von 0 bis 199 ausgeben
> Ich möchte nun bei einstelligen Zahlen abwechselnd keine, eine oder zwei
> 0 asugeben, und bei zweistelligen eine oder zwei. Wie bekomm ich dies
> mit möglichst wenig Code hin?

1
for (c = 0; c < 200; c++)
2
    printf("%.3d\n", c);
Gast #6729717
Lesenswert?

Mit C++ < 20 und ohne printf ist es tatsächlich etwas blöd:
1
for(c = 0; c < 200; c++)
2
  std::cout << std::setw(3) << std::setfill('0') << c << std::endl;

Mit C++20:
1
for(c = 0; c < 200; c++)
2
  std::cout << std::format("{:03}\n", c);

BTW: Ich bin mir aber nicht sicher, ob du das überhaupt meinst.
"bei einstelligen Zahlen abwechselnd keine, eine oder zwei 0 ausgeben" 
wäre ja so etwas:
1
1
2
02
3
003
4
4
5
05
6
006
7
7
8
08
9
009
#6730033
Lesenswert?

Alex schrieb:
> for (c = 0; c < 200; c++) {
>    cout << c << endl;
> }

Alex schrieb:
> Wie bekomm ich dies
> mit möglichst wenig Code hin?

Eine Zeile einfügen :)
1
  for (int c = 0; c < 200; c++) {
2
    for (int i=0; i<c%(3-(c>9))-(c>99); ++i) cout << '0';   
3
    cout << c << endl;
4
  }


Fängt wie in deiner Vorgabe bei "0" an, erste Werte:
1
0
2
01
3
002
4
3
5
04
6
005
7
6
8
07
9
008
10
9
11
10
12
011
13
12
14
013
15
14
16
015
17
16
18
017
19
18
20
019
21
...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren