C++ Hilfe beim programmieren

Hallo zusammen,

habe ein Problem mit c++.
Möchte ein Programm schreiben das eine Zahl mit sieben bis neun Ziffern
einließt. Und sie dann in Dreiergruppen zusammengefasst ausgibt.

z.B.: Eingabe : 12345678
Ausgabe : 12_345_678

Hallo

habe ein Problem mit c++.

Was hast Du denn schon versucht?

Möchte ein Programm schreiben das eine Zahl mit
sieben bis neun Ziffern einliest.

Von einer Datei - oder als Tastatureingabe -
oder von der Befehlszeile?

Und sie dann in Dreiergruppen zusammengefasst ausgibt.
z.B.: Eingabe : 12345678, Ausgabe : 12_345_678

Was Du möchtest, ist:

  • Dezimale Repräsentation der Zahl in einen String schreiben
  • Die Ziffernkette von hinten her in 3er-Gruppen aufspalten
  • gefundene 3er-Gruppen nacheinander mit ‚_‘ dazwischen ausgeben

Grüße

CMБ

Hallo,

Die Zahl soll über die Tastatur eingegeben werden.
Das ist ja nicht das Problem.
Ich komme mit der Ausgabe nicht zurecht.
Ich bekomme die Zahl nicht getrennt oder nur die ersten drei zahlen
werden ausgegeben.

Die Zahl soll dann in Dreiergruppen getrennt mit ‚_‘ oder mit Leerzeichen ausgegeben werden.

Also so zum Beispiel: 12_345_678

Also genau was du meinst.

Gruß

knecht

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo knecht,

Die Zahl soll über die Tastatur eingegeben werden.
Das ist ja nicht das Problem.
Ich komme mit der Ausgabe nicht zurecht.
Ich bekomme die Zahl nicht getrennt oder nur
die ersten drei zahlen werden ausgegeben.

Schwer zu sagen; man müsste Deine bisherige Lösung
bzw. Dein Programm sehen. Kannst Du den Quelltext,
zwischen pre>

/pre> - Tags eingebunden, hier posten?
Davon ausgehend würde man die fertige Lösung
entwickeln.

Grüße

CMБ

Hallo,

Die Zahl soll über die Tastatur eingegeben werden.
Das ist ja nicht das Problem.
Ich komme mit der Ausgabe nicht zurecht.
Ich bekomme die Zahl nicht getrennt oder nur die ersten drei
zahlen
werden ausgegeben.

Die Zahl soll dann in Dreiergruppen getrennt mit ‚_‘ oder mit
Leerzeichen ausgegeben werden.

Also so zum Beispiel: 12_345_678

Also genau was du meinst.

Gruß

knecht

Hi,

eine Möglichkeit ware, die eingegebene Zahl mit in eine Zeichenkette umzuwandeln (in ANSI C mit sprintf, in MFC mit CString::Format). Dann kannst du in die Zeichen (Zahlen) auslesen und in eine zweite Zeichenkette mit den Separatoren schreiben.

Gruß Yel

Hallo,

Die Zahl soll über die Tastatur eingegeben werden.
Das ist ja nicht das Problem.
Ich komme mit der Ausgabe nicht zurecht.
Ich bekomme die Zahl nicht getrennt oder nur die ersten drei
zahlen
werden ausgegeben.

Die Zahl soll dann in Dreiergruppen getrennt mit ‚_‘ oder mit
Leerzeichen ausgegeben werden.

Also so zum Beispiel: 12_345_678

Also genau was du meinst.

Gruß

knecht

Hi Knecht,

jetzt hab ichs auch nochmal in Programmcode gepackt, wenn auch nur mit MFC.

CString intsep(int zahl)
{
 CString str;
 int len;
 str.Format("%d",zahl);
 len=str.GetLength();
 str.Insert(len-3,"\_");
 str.Insert(len-6,"\_");
 return str;
}

Viel Spaß damit.

Yel

Hallo Yelmalio,

eine Möglichkeit ware, die eingegebene Zahl mit in eine
Zeichenkette umzuwandeln (in ANSI C mit sprintf, in MFC mit
CString::Format). Dann kannst du in die Zeichen (Zahlen)
auslesen und in eine zweite Zeichenkette mit den Separatoren
schreiben.

‚printf/sprintf‘ bzw. ‚Frameworkspezifisches‘ ist vielleicht
keine gute Idee, wenn es primär um „richtig C+±lernen“ geht
(obwohl s/printf sehr mächtig sind und ich sie gerne benutze).

Leider hat sich der O.P. nicht mehr gemeldet, es
wäre gut gewesen, mit ihm zusammen schrittweise
zu einer Lösung zu kommen :wink:

Grüße

CMБ

 #include 
 #include 
 using namespace std;

 const string& beautify(string& st, int n, int c)
 {
 int bck = static\_cast( st.length() );
 for(int frnt=bck-n; frnt\>0; frnt-=n) 
 st.insert( frnt, 1, static\_cast(c) );
 return st;
 }

 void main(void) 
 {
 string s\_zahl;
 
 cout \> s\_zahl;

 cout 

Hallo,

Danke für eure Mühe. Es war viel einfacher.

int n;
int z1, z2, z3;

cout>z;
z1 = n/1000000;
z2 = (n/1000)%1000;
z3 = n%1000;

printf("%3d %03d %03d\n", g1, g2, g3);

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo knecht

Danke für eure Mühe. Es war viel einfacher.

OK

int n;
int z1, z2, z3;

cout>z;
z1 = n/1000000;
z2 = (n/1000)%1000;
z3 = n%1000;

printf("%3d %03d %03d\n", g1, g2, g3);

Das ist also Dein Startpunkt. OK. Wenn Du einige
kleine Berichtigungen machst, kommt sogar richtiger
C+±Code raus :wink:

Bitte beim nächsten mal den Code vorher in einem
Compiler prüfen - und dann in pre> … /pre>-Tags
einschliessen, etwa so:

 #include 
 #include 
 using namespace std;

 void main(void)
{
 int z, z1, z2, z3;

 cout \> z;
 
 z1 = z / 1000000;
 z2 = (z / 1000) % 1000;
 z3 = z % 1000;
 
 cout Grüße

CMБ