Sprachliche Repräsentation von Zahlen

Marimi

Mitglied
Hallo,

ich bin auf der suche nach einem C++ Befehl der mir eine Zahl sprachlich repräsentiert also zum beispiel: 1234 = eins-zwei-drei-vier

Hab auch versuhct das zu googeln stoße aber so auf gar nix. Vielleicht kann mir ja wer helfen und sagen welchen Befehl ich dazu brauche.

Lieben Gruß
Marimi
 
Hi.

Mir wäre kein "Befehl" bekannt der das machen würde.

Am besten du erstellst selbst ein solches Programm.

Es gibt ja nur 10 Ziffern denen du ein Wort zuordnen mußt.

Gruß
 
Hallöchen,

also ich hab einen ansatz gefunden, so ein Programm zu schreiben. Allerdings wird mir beim ausführen gar nix ausgegeben. stimmt was an meiner syntax nicht:

C++:
#include <iostream>
using namespace std;

int main () {
    /*Diese Programm gibt die sprachliche Repräsentation von Zahlen wieder. */
    /* Zuerst wird für unsere Zahl eine Variable eingelesen. */
    int z;
    cin >> z;
    cout << "Bitte geben Sie eine Zahl ein: ";
    /* Mit Hilfe der switch-Anweisung werden für jede Ziffer die dazugehörigen Namen zu geordnet. */
    {switch (z) 
        {case 1: cout << "eins";
        case 2: cout << "zwei";
        case 3: cout << "drei";
        case 4: cout << "vier";
        case 5: cout << "fuenf";
        case 6: cout << "sechs";
        case 7: cout << "sieben";
        case 8: cout << "acht";
        case 9: cout << "neun";
        case 0: cout << "null";}}
  
 
return 0;
}

Ich sollte auch noch eine eine do/while einschleife bauen damit das programm beliebig oft durchführbar wird.

Lieben Gruß
Marimi
 
Lass mich raten, die eingegebene Zahl war sicher größer als 9?

Du solltest nicht nur eine Schleife zur Programmwiederholung einbauen, sondern auch eine Schleife damit jede Ziffer durchgegangen wird.

Dein Programm funktioniert nur von 0 bis 9.

Und ein switch mit 10 cases? Naja...

Ich verwende hier zwar kein cout/cin; solltest du aber bei Bedarf leicht umändern können:

C++:
char ziffern[][10]={"null","eins","zwei","drei","vier","fuenf","sechs","sieben","acht","neun","minus"};
//...
void ausgabe(int zahl)
{
    int i,j;char c[16];
    sprintf(c,"%d",zahl);
    j=strlen(c);
    if(j<0)return;
    for(i=0;i<j;i++)
    {
        if(c[i]=='-')c[i]=10;
        else c[i]-='0';
    }
    printf("%c",ziffern[c[0]][0]-'a'+'A');
    printf("%s ",&(ziffern[c[0]][1]));
    for(i=1;i<j;i++)
    {
         printf("%s ",ziffern[c[i]]);
    }
}
Ist getestet

Gruß
 
Zuletzt bearbeitet:
oh naja also es geht ja darum ne vierstellige Zahl einzulesen und die sprachlich wieder zu geben. Das Problem ist, mit dem printf haben wir no ned gearbeitet im Praktikum. Ich hab switch genommen weils am ehersten das macht was ich ja brauche nur funktioniert das ganze ned ^^.

Für was steht denn zb das %d, %c, %s (das %modulo ist weiß ich sogar XD)

Lg Marimi
 
Hi.
oh naja also es geht ja darum ne vierstellige Zahl einzulesen und die sprachlich wieder zu geben. Das Problem ist, mit dem printf haben wir no ned gearbeitet im Praktikum. Ich hab switch genommen weils am ehersten das macht was ich ja brauche nur funktioniert das ganze ned ^^.
Für eine einzelne Ziffer funktioniert dein Programm ja schon. Du müßtest nur noch eine Schleife erstellen, die eine ganze Zahl in ihre Ziffern zerlegt und diese Ziffern dann ausgeben auf diese Weise ausgeben.

Einen Integer kannst du mit Hilfe des Modulo-Operators in Ziffern zerlegen.
Für was steht denn zb das %d, %c, %s (das %modulo ist weiß ich sogar XD)
Nimm lieber einfach cout. Wenn du wissen willst was es mit dem printf auf sich hat, schau einfach in eine Referenz (z.B. http://www.cplusplus.com/reference/clibrary/cstdio/printf/). Das % in dem Formatstring hat übrigens nichts mit dem Modulo Operator zu tun.

Gruß
 
Danke dir für deine antwort deepthroat. Heißt das dann praktisch, dass ich vor dem switch die Variable die für vierstellige Zahl steht in die Bestandteile via modulo zerlege dann diesen bestandteil mit dem switch zu bearbeiten, dann die nächste ziffer der zahl mit switch bearbeiten usw.? Die Schleife würd ich am ende drüber legen.

Das Problem am aktuellen Code ist dass mir der Compiler das zwar compiliert aber im ausgabefenster rein garnichts steht, warum, hab ich ne Klammer falsch gesetzt?
 
Nocheinmal: Dein Programm aus dem ersten Beitrag gibt nur dann was aus, wenn die eingegebene Zahl zwischen 0 und 9 ist.
Ab 10 geht nichts mehr
 
Danke dir für deine antwort deepthroat. Heißt das dann praktisch, dass ich vor dem switch die Variable die für vierstellige Zahl steht in die Bestandteile via modulo zerlege dann diesen bestandteil mit dem switch zu bearbeiten, dann die nächste ziffer der zahl mit switch bearbeiten usw.? Die Schleife würd ich am ende drüber legen.
Ja, du mußt eine Schleife um die switch-Anweisung bauen.
Das Problem am aktuellen Code ist dass mir der Compiler das zwar compiliert aber im ausgabefenster rein garnichts steht, warum, hab ich ne Klammer falsch gesetzt?
Du hast die break Anweisungen bei jedem Fall vom switch vergessen. Ansonsten erhalte ich folgende Ausgabe wenn ich "2" eingebe:
Code:
2
Bitte geben Sie eine Zahl ein: zwei
(du müßtest die "cin >>" bzw. "cout <<" vertauschen)

Gruß
 
Hallöchen,

also das mit dem tausch von cin und cout hat funktioniert. Ich sehe nun die aufforderung eine zahl einzugeben. Das Problem ist jetzt wenn ich eine eingebe und enter drücke schleißt sich das ausführfenster sofort. :(

Ah und ich hab jetzt aus dem switch ein if else gemacht:
C++:
#include <iostream>
using namespace std;

int main () {
    /*Diese Programm gibt die sprachliche Repräsentation von Zahlen wieder. */
    /* Zuerst wird für unsere Zahl eine Variable eingelesen. */
    
    int z;
     cout << "Bitte geben Sie eine Zahl ein: ";
     cin >> z;
    int a= z%10;
        /* Mit Hilfe der switch-Anweisung werden für jede Ziffer die dazugehörigen Namen zu geordnet. */
     if (a==1)
      cout << "eins" << endl;
     else
     if (a==2) 
      cout << "zwei" << endl;
     else 
     if (a==3)
      cout << "drei" << endl;
     else 
     if(a==4)
      cout << "vier" << endl;
     else 
     if (a==5)
      cout << "fuenf" << endl;
     else 
     if(a==6)
      cout << "sechs" << endl;
     else 
     if (a==7)
      cout << "sieben" << endl;
     else 
     if (a==8)
      cout << "acht" << endl;
     else
     if (a==9)
      cout << "neun" << endl;
     else
     if (a==0)
      cout << "null" << endl; 
      
     return 0;
     }
Das Programm ist noch lang nicht vollständig das würd ja jetzt nur die letzte stelle ausspucken. ich schreib den rest erst dann wenn das mit der einer ziffer funktioniert, sonst schreib ich am ende alles um sonst :). ;-)
 
Zurück