Zahl in Wort umwandeln



  • Kann mir echt niemand helfen. Denkt nicht das ich nichts tue. Aber ich bin kein Profi und hier ist einfach zu viel für mich.

    Kann man einem array einen wert geben der mehr als ein zechen hat.

    zb zehn oder elf oder zwölf irgendeinem arry diesen wer zuweisen oder muss ich das anze mit strings lösen ??? bitte hilf mir kp wie und das programm sollte nicht kompliziert werden

    MFH nami ⚠ 😕



  • nami22 schrieb:

    Denkt nicht das ich nichts tue.

    Dann zeig doch mal, was du bisher hast. Darauf aufbauend kann dir geholfen werden. Abgesehen davon, dass Ansätze und eine vollständige Lösung bereits gepostet wurden ... Also, bitte nicht weinen ... 😉



  • cin >> strm;



  • So ich habe gilfe von einem kollegen bekommen.
    Das hier hat er gemacht. Ich muss aber nur von 0 - 99 umwandeln köönen und das wandelt bis ...... milliarden um. Wenn ich den teil wenehme der nicht gbraucht wird funkt alles icht mehr. Kann mir jemand den code verkürzen.

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    string unter20(unsigned long wert, bool eins)
    {
      switch(wert)
        {
          case 1:
            if(eins)
              return("eins");
            else
              return("ein");
          case 2: return("zwei");
          case 3: return("drei");
          case 4: return("vier");
          case 5: return("fuenf");
          case 6: return("sechs");
          case 7: return("sieben");
          case 8: return("acht");
          case 9: return("neun");
          case 10: return("zehn");
          case 11: return("elf");
          case 12: return("zwoelf");
          case 13: return("dreizehn");
          case 14: return("vierzehn");
          case 15: return("fuenfzehn");
          case 16: return("sechszehn");
          case 17: return("siebzehn");
          case 18: return("achtzehn");
          case 19: return("neunzehn");
          default: return("-Fehler-");
        }
    }
    
    //*******************************************************
    
    string zehner(unsigned long wert)
    {
      switch(wert/10)
        {
          case 2: return("zwanzig");
          case 3: return("dreissig");
          case 4: return("vierzig");
          case 5: return("fuenfzig");
          case 6: return("sechzig");
          case 7: return("siebzig");
          case 8: return("achtzig");
          case 9: return("neunzig");
          default: return("-Fehler-");
        }
    }
    
    //*******************************************************
    
    string unter100(unsigned long wert,bool eins)
    {
    
      if(wert<20)
        return(unter20(wert,eins));
    
      if(wert%10)
        return(unter20(wert%10,false)+"und"+zehner(wert));
      else
        return(zehner(wert));
    }
    
    //*******************************************************
    
    string unter1000(unsigned long wert, bool eins)
    {
      if(wert<100)
        return(unter100(wert,eins));
    
      if(wert%100)
        return(unter20(wert/100,false)+"hundert"+unter100(wert%100,eins));
      else
        return(unter20(wert/100,false)+"hundert");
    }
    
    //*******************************************************
    
    string tausend(unsigned long wert)
    {
      string s="";
      if(wert>=1000)
        s=unter1000(wert/1000,false)+"tausend";
      if(wert%1000)
        s+=unter1000(wert%1000,true);
      return(s);
    
    }
    
    //*******************************************************
    
    string million(unsigned long wert)
    {
      string s="";
      if(wert>=1000000)
        {
          int mil=wert/1000000;
          if(mil==1)
            s="einemillion";
          else
            s=unter1000(mil,false)+"millionen";
          wert%=1000000;
        }
      return(s+tausend(wert));
    }
    
    //*******************************************************
    
    string milliarde(unsigned long wert)
    {
      string s="";
      if(wert>=1000000000)
        {
          int mil=wert/1000000000;
          if(mil==1)
            s="einemilliarde";
          else
            s=unter1000(mil,false)+"milliarden";
          wert%=1000000000;
        }
    
      return(s+million(wert));
    }
    
    //*******************************************************
    
    string toWord(unsigned long wert)
    {
      if(wert==0)
        return("Null");
    
      string s=milliarde(wert);
      s[0]=toupper(s[0]);
      return(s);
    }
    
    //*******************************************************
    
    int main()
    {
    unsigned long wert;
    
      cout << "Bitte Zahl eingeben:";
      cin >> wert;
      cout << toWord(wert) << endl;
    
            fflush(stdin);
            getchar();
            return 0;
    }
    


  • Gut, jetzt wissen wir dass du von nem Kumpel Code hast, wie der Code ausschaut, dass du was weggestrichen hast und dass es einen Fehler gibt.

    Was wir NICHT wissen:
    Wie schaut DEIN Code jetzt aus?
    Was ist das für ein ominöser Fehler?
    Ist der Kurs Pflicht und musst du den selbständig bestehen?



  • der code sieht momentan genau gleich aus. Ich habe war was probier aber funkt nicht. Ich muss den Code abspecken es hat sachen drinn die ich nicht brauche.
    Ich brauche nur 0-99 nicht milliarden.



  • nami22 schrieb:

    Kann mir jemand den code verkürzen.

    Bei dir fällt mir nichts mehr ein ... 🙂

    Ist eigentlich noch ein Admin aktiv hier in dem Laden?



  • versteh es nicht falsch aber ich kann mich n niemanden wenden ausser an dieses forum wass soll ich alleine machen ich suche im internet doch ne 1:1 lösung findet man nicht. Ich brauche nur tipps wiso das es nicht geht mit diesem CODE

    #include <iostream> 
    #include <string> 
    
    using namespace std; 
    
    string unter20(unsigned long wert, bool eins) 
    { 
      switch(wert) 
        { 
          case 1: 
            if(eins) 
              return("eins"); 
            else 
              return("ein"); 
          case 2: return("zwei"); 
          case 3: return("drei"); 
          case 4: return("vier"); 
          case 5: return("fuenf"); 
          case 6: return("sechs"); 
          case 7: return("sieben"); 
          case 8: return("acht"); 
          case 9: return("neun"); 
          case 10: return("zehn"); 
          case 11: return("elf"); 
          case 12: return("zwoelf"); 
          case 13: return("dreizehn"); 
          case 14: return("vierzehn"); 
          case 15: return("fuenfzehn"); 
          case 16: return("sechszehn"); 
          case 17: return("siebzehn"); 
          case 18: return("achtzehn"); 
          case 19: return("neunzehn"); 
          default: return("-Fehler-"); 
        } 
    } 
    
    //******************************************************* 
    
    string zehner(unsigned long wert) 
    { 
      switch(wert/10) 
        { 
          case 2: return("zwanzig"); 
          case 3: return("dreissig"); 
          case 4: return("vierzig"); 
          case 5: return("fuenfzig"); 
          case 6: return("sechzig"); 
          case 7: return("siebzig"); 
          case 8: return("achtzig"); 
          case 9: return("neunzig"); 
          default: return("-Fehler-"); 
        } 
    } 
    
    //******************************************************* 
    
    string unter100(unsigned long wert,bool eins) 
    { 
    
      if(wert<20) 
        return(unter20(wert,eins)); 
    
      if(wert%10) 
        return(unter20(wert%10,false)+"und"+zehner(wert)); 
      else 
        return(zehner(wert)); 
    } 
    
    //******************************************************* 
    
    string toWord(unsigned long wert) 
    { 
      if(wert==0) 
        return("Null"); 
    
      string s=milliarde(wert); 
      s[0]=toupper(s[0]); 
      return(s); 
    } 
    
    //******************************************************* 
    
    int main() 
    { 
    unsigned long wert; 
    
      cout << "Bitte Zahl eingeben:"; 
      cin >> wert; 
      cout << toWord(wert) << endl; 
    
            fflush(stdin); 
            getchar(); 
            return 0; 
    }
    


  • es geht deshalb nicht weil
    string s=milliarde(wert);
    die funktion erwartet die gelöscht wurde. also ändere diese zeile auch



  • hab ich gändert funkt immer noch nicht?
    Ich habe den fehler markiert ZEILE 58

    #include <iostream> 
    #include <string> 
    
    using namespace std; 
    
    string unter20(unsigned long wert, bool eins) 
    { 
      switch(wert) 
        { 
          case 1: 
            if(eins) 
              return("eins"); 
            else 
              return("ein"); 
          case 2: return("zwei"); 
          case 3: return("drei"); 
          case 4: return("vier"); 
          case 5: return("fuenf"); 
          case 6: return("sechs"); 
          case 7: return("sieben"); 
          case 8: return("acht"); 
          case 9: return("neun"); 
          case 10: return("zehn"); 
          case 11: return("elf"); 
          case 12: return("zwoelf"); 
          case 13: return("dreizehn"); 
          case 14: return("vierzehn"); 
          case 15: return("fuenfzehn"); 
          case 16: return("sechszehn"); 
          case 17: return("siebzehn"); 
          case 18: return("achtzehn"); 
          case 19: return("neunzehn"); 
          default: return("-Fehler-"); 
        } 
    } 
    
    //******************************************************* 
    
    string zehner(unsigned long wert) 
    { 
      switch(wert/10) 
        { 
          case 2: return("zwanzig"); 
          case 3: return("dreissig"); 
          case 4: return("vierzig"); 
          case 5: return("fuenfzig"); 
          case 6: return("sechzig"); 
          case 7: return("siebzig"); 
          case 8: return("achtzig"); 
          case 9: return("neunzig"); 
          default: return("-Fehler-"); 
        } 
    } 
    
    //******************************************************* 
    
    string unter100(unsigned long wert,bool eins) 
    {   //<-------- Hier wird der Fehler angezeigt.
      string s="";
      if(wert<20) 
        return(unter20(wert,eins)); 
    
      if(wert%10) 
        return(unter20(wert%10,false)+"und"+zehner(wert)); 
      else 
        return(zehner(wert)); 
    } 
    
    //******************************************************* 
    
    string toWord(unsigned long wert) 
    { 
      if(wert==0) 
        return("Null"); 
    
      string s=unter100(wert); 
      s[0]=toupper(s[0]); 
      return(s); 
    } 
    
    //******************************************************* 
    
    int main() 
    { 
    unsigned long wert; 
    
      cout << "Bitte Zahl eingeben:"; 
      cin >> wert; 
      cout << toWord(wert) << endl; 
    
            fflush(stdin); 
            getchar(); 
            return 0; 
    }
    


  • Es gibt eine AUSSAGEKRÄFTIGE Fehlermeldung, die du bitte posten sollst!
    Ich sag dir jetzt trotzdem, dass dein Fehler nicht an der markierten Stelle liegt...

    So rufst du auf:

    unter100(wert);
    

    So ist deklariert:

    string unter100(unsigned long wert,bool eins)
    


  • Ich finde es sehr traurig, dass trotz der zahlreichen Hilfestellungen (Tipps / Ansätze, Codes) von gleich mehreren Membern und der Tatsache, dass dir sogar noch ein Kumpel eine Lösung gegeben hat man bei dir, nami22, noch nicht einmal einen Funken Eigeninitiative erkennen kann.

    nami22 schrieb:

    Hier wird der Fehler angezeigt.

    Fehlermeldung?

    Mizars Kristallkugel schrieb:

    Funktionsaufruf:

    string s=unter100(wert);
    

    Die Funktion erwartet aber 2 Argumente:

    string unter100(unsigned long wert,bool eins)
    

    EDIT: Hmpf, zu langsam...



  • was genau muss ich ändert

    Diese Fehlermeldung erscheint:
    --> C:\Users\??????\Desktop\test.cpp In function `std::string unter100(long unsigned int)':



  • s vielleicht...

    string unter100(unsigned long wert,bool eins) 
    { 
    
      if(wert<20) 
        return(unter20(wert,eins)); 
    
      if(wert%10) 
        return(unter20(wert%10,false)+"und"+zehner(wert)); 
      else 
        return(zehner(wert)); 
    } 
    
    //******************************************************* 
    
    string toWord(unsigned long wert) 
    { 
      if(wert==0) 
        return("Null"); 
    
      string s=unter100(wert,eins); 
      s[0]=toupper(s[0]); 
      return(s); 
    }
    


  • 😞 😞
    Du hast jetzt mindestens 1/2 Jahr diesen Kurs (angenommen du bist WIntersemester-Starter, Schüler wäre ja schon fast 3/4 Jahr...), da solltest du das selber sehen. Es stehen die Zeilen direkt übereinander, da sollte man den Fehler sehen.

    Außerdem ist das was du gepostet hast nicht die ganze Fehlermeldung. Das entscheidende hast du nicht gepostet.



  • string unter100(unsigned long wert,bool eins) // hier etwas löschen
    {
    
      if(wert<20)
        [b]return(unter20(wert,eins)); // hier etwas ersetzen
    
      if(wert%10)
        return(unter20(wert%10,false)+"und"+zehner(wert));
      else
        return(zehner(wert));
    }
    

    beschäftige dich mit variablen und argumente der funktionen. nur 2 seiten tutorial - und du hast den code



  • ich habe noch den strings=""; hinzugefügt

    Fehlermeldung: C:\Users\???\Desktop\test.cpp In function `std::string toWord(long unsigned int)':

    und

    C:\Users\???\Desktop\test.cpp `eins' undeclared (first use this function)

    mehr steht nicht sry

    //******************************************************* 
    
    string unter100(unsigned long wert,bool eins) 
    { 
      string s="";
      if(wert<20) 
        return(unter20(wert,eins)); 
    
      if(wert%10) 
        return(unter20(wert%10,false)+"und"+zehner(wert)); 
      else 
        return(zehner(wert)); 
    } 
    
    //******************************************************* 
    
    string toWord(unsigned long wert) 
    { 
      if(wert==0) 
        return("Null"); 
    
      string s=unter100(wert,eins); 
      s[0]=toupper(s[0]); 
      return(s); 
    } 
    
    //*******************************************************
    


  • Was muss ich den löschen und was ersetzen ich habe jetz video2brain geschaut über strings ... ich weiss nicht was ich löschen soll und was ersetzen. bitte hilft mir.



  • nami22 schrieb:

    Fehlermeldung: C:\Users\???\Desktop\test.cpp In function `std::string toWord(long unsigned int)':

    und

    C:\Users\???\Desktop\test.cpp `eins' undeclared (first use this function)

    Was heißt das? Er kennt keine Variable namens "eins". Wie denn auch, hast sie nirgends erstellt.
    Die Funktion erwartet einfach einen zweiten Parameter vom Typ bool. Frag deine Spickerseite, wo du den Quelltext her hast, was damit bezweckt werden soll, wenn du aus dem Code selbe nicht schlau wirst.

    Und das Problem sind nicht Strings sondern Verwendung von Funktionen!



  • nami22 schrieb:

    versteh es nicht falsch aber ich kann mich n niemanden wenden ausser an dieses forum wass soll ich alleine machen ich suche im internet doch ne 1:1 lösung findet man nicht. Ich brauche nur tipps wiso das es nicht geht mit diesem CODE

    Ich versteh "ES" schon richtig. Du tust alles um dir selbst keine Gedanken machen zu müssen. Es gibt schon noch jemanden, außer diesem Forum, an den du dich wenden kannst und das ist das komische Gebilde wenige Zentimeter über deinen Schultern (recht mittig vermutlich). 😉

    Da fällt mir die Ansprache eines Mathe-Professors aus dem 1. Semester ein, als seine Mitarbeiter merkten, dass doch viele Übungsblätter einfach abgeschrieben wurden. Er meinte zu uns: Die Zeit, die wir benötigen um 5-6 Aufgaben abzuschreiben, sollten wir doch lieber dafür verwenden eine oder eine Teilaufgabe selbst zu lösen. Da hätten wir mehr davon. Und Recht hatte er, denn gegen Ende des Semsters konnte man als Abschreiber noch nicht einmal die Symbole zusammenfrickeln, wenn die Vorlage unsauber geschrieben wurde, geschweige den eine Klausur anstreben. Und dass obwohl man offiziell alle Aufgaben wunderbar bearbeitet und gelöst hat.

    Du hast bist Montag Zeit und die Aufgabe ist kinderleicht. Ich würde es mir überlegen. Bei der nächsten Aufgabe könntest du dir dieses Theater bereits sparen ... 😉

    Macht doch auch keinen Spass im Trüben zu fischen, was?

    P.S.: Langsam glaube ich, dass hier irgendwelche Spinner so eine Art Turing-Test durchziehen. 😃


Anmelden zum Antworten