Programm stimmt nicht oder unvollständig



  • Ja ich bin an einem Programm das Zahlen "1" zu "eins" und umgekehrt ausgeben soll....

    nun ich habe schon bischen etwas nur klappt das ganze noch nicht so richtig und ich bin so ziemlich mit meinem Latein am ende....

    Könnte mir bitte jemand Hlefen das ganze fertig zu bekommen...

    //INFO: -eingabeprüfung auf buchstabe/zahl
    //      -eingabeprüfung auf zahlenbereich
    //      -wiederholung einbauen vill...
    
    #include <iostream>
    using namespace std;
    
    int main()
    {
        int eingabe;
    
        cout<<"Geben sie eine zahl ein> ";
        cin>>eingabe;
    
        if(eingabe>0 && eingabe<13)
        {
            switch(eingabe)
            {
                case 1:
                    cout<<"eins"<<endl;
                    break;
                case 2:
                    cout<<"zwei"<<endl;
                    break;
                case 3:
                    cout<<"drei"<<endl;
                    break;
                case 4:
                    cout<<"vier"<<endl;
                    break;
                case 5:
                    cout<<"fuenf"<<endl;
                    break;
                case 6:
                    cout<<"sechs"<<endl;
                    break;
                    case 7:
                    cout<<"sieben"<<endl;
                    break;
                case 8:
                    cout<<"acht"<<endl;
                    break;
                case 9:
                    cout<<"neun"<<endl;
                    break;
                case 10:
                    cout<<"zehn"<<endl;
                    break;
                case 11:
                    cout<<"elf"<<endl;
                    break;
    
            }
        }
    
        const char *vw[]={"zehn", "drei", "vier", "fuenf", "sech", "sieb", "acht", "neun"};
        const char *xy[]={"einund", "zweiund", "dreiund", "vierund", "fuenfund", "sechsund", "siebenund", "achtund", "neunund"};
        const char *wx[]={"zwanzig", "dreisig", "vierzig", "fuenfzig", "sechzig", "siebzig", "achtzig", "neunzig"};
    
        int x;
        int y;
    
        char anf[10];
        char end[10];
    
            if(eingabe>=13 && eingabe<=19)
            {
                x=eingabe/10;
                y=eingabe%10-1;
    
                strcpy(anf, vw[y-1]);
                //cout<<anf;
                }
    
    }
    


  • Uff, bitte sag doch was genau das Problem ist.

    Muss doch eine Fehlermeldung kommen, oder was geschieht nicht?



  • Na ein Problem ist schon mal die Einrückung. :p

    EDIT: Mentras hat natürlich Recht. Eine Fehlerbeschreibung wäre wünschenswert. Um die Zeit ist meine Kristallkugel schon im Bett...



  • Also gut ich hab noch was kleines geändert nun sieht er so aus....

    //INFO: -eingabeprüfung auf buchstabe/zahl
    //      -eingabeprüfung auf zahlenbereich
    //      -wiederholung einbauen vill...
    
    #include <iostream>
    using namespace std;
    
    int main()
    {
        int eingabe;
    
        cout<<"Geben sie eine zahl ein> ";
        cin>>eingabe;
    
        if(eingabe>0 && eingabe<13)
        {
            switch(eingabe)
            {
                case 1:
                    cout<<"eins"<<endl;
                    break;
                case 2:
                    cout<<"zwei"<<endl;
                    break;
                case 3:
                    cout<<"drei"<<endl;
                    break;
                case 4:
                    cout<<"vier"<<endl;
                    break;
                case 5:
                    cout<<"fuenf"<<endl;
                    break;
                case 6:
                    cout<<"sechs"<<endl;
                    break;
                    case 7:
                    cout<<"sieben"<<endl;
                    break;
                case 8:
                    cout<<"acht"<<endl;
                    break;
                case 9:
                    cout<<"neun"<<endl;
                    break;
                case 10:
                    cout<<"zehn"<<endl;
                    break;
                case 11:
                    cout<<"elf"<<endl;
                    break;
    
            }
        }
    
        const char *vw[]={"zehn", "drei", "vier", "fuenf", "sech", "sieb", "acht", "neun"};
        const char *xy[]={"einund", "zweiund", "dreiund", "vierund", "fuenfund", "sechsund", "siebenund", "achtund", "neunund"};
        const char *wx[]={"zwanzig", "dreisig", "vierzig", "fuenfzig", "sechzig", "siebzig", "achtzig", "neunzig"};
    
        int x;
        int y;
    
        char anf[10];
        char end[10];
    
            if(eingabe>=13 && eingabe<=19)
            {
                x=eingabe/10;
                y=eingabe%10-1;
    
                strcpy(anf, vw[y-1]);
                //cout<<anf;
                }
                fflush(stdin);
                getchar();
                return 0;
    }
    

    Nun klapp alles so weit... Ich gebe eine Zahl ein z.B 6 und er gibt mir "Sechs" aus... das ist ja alles ok aber nun möchte ich das ich gleich wieder eine zahl eingeben kann und nicht das die Konsole gleich zu geht...



  • Dann musst du das alles in eine Schleife packen. Mach dich in der Richtung mal schlau. Es gibt verschiedene Arten von Schleifen (while, do-while, for).



  • Ja while kenn ich könntest du ein Beispiel machen bitte.



  • _matze schrieb:

    Mentras hat natürlich Recht.

    Endlich höre ich was glückliches von dir 🙂

    nun möchte ich das ich gleich wieder eine zahl eingeben kann und nicht das die Konsole gleich zu geht...

    LoL, du hast das Programm programmiert, aber auf das kommst du nicht? oO

    Nimm doch eine Bool-Schleife, und wenn sie beendet werden soll, bekommt sie einen falschen wert zurückgeliefert 🙂

    €dit:

    while(true) 
    { 
    //Do that shit...
    Falls ich nicht mehr im Programm sein will...
    return(false)
    }
    

    Lg Mentras



  • Wie kann ich das so einfügen das es mir nicht unendlichmal das gleiche ausgibt... aber auch nicht das ich immer falls diese zahl = und nun raus aus der schleife sondern das es möglichst mit einer geht...



  • Mentras schrieb:

    Endlich höre ich was glückliches von dir 🙂

    Gerne doch! 🙂 Aber... ( :p )

    Mentras schrieb:

    while(true) 
    { 
    //Do that shit...
    Falls ich nicht mehr im Programm sein will...
    return(false)
    }
    

    Lg Mentras

    Das halte ich für nicht so günstig. Eventuell will man doch am Programmende noch Abschließendes (z.B. Speicher freigeben, abschließende Meldung...) oder Weiterführendes (Programm geht halt einfach weiter) erledigen. Da ist ein return nicht die beste Lösung, um aus der Schleife zu kommen.

    bool goOn=true;
    while(goOn) { 
      //Do that shit...
    
      //Falls ich nicht mehr im Programm sein will...
      goOn=false;
    }
    //Sobald man goOn auf false gesetzt hat, wird die Schleife verlassen. Tada!
    


  • 007 schrieb:

    Wie kann ich das so einfügen das es mir nicht unendlichmal das gleiche ausgibt... aber auch nicht das ich immer falls diese zahl = und nun raus aus der schleife sondern das es möglichst mit einer geht...

    Sorry, kannst du das noch mal ein wenig deutlicher formulieren? Versteh ich wirklich nicht...



  • Ahhh, da hab ich mal wieder was von dir gelernt x)

    Danke _matze!



  • naja mir fällt da grad noch was anderes auf nämlich das mein Programm nur zahlen von 1-11 ind wörter umwandelt die anderen leider nicht nun wie kann ich das ändern das ich nicht jede zahl mit case bla und so weiter schreiben muss



  • 007 schrieb:

    naja mir fällt da grad noch was anderes auf nämlich das mein Programm nur zahlen von 1-11 ind wörter umwandelt die anderen leider nicht nun wie kann ich das ändern das ich nicht jede zahl mit case bla und so weiter schreiben muss

    Sowas in der Art hast du doch schon mit deinen String-Arrays vorbereitet. Also mach einfach weiter. Das soll dir ja schließlich keiner hier vorkauen. Probier einfach noch ein wenig rum, setz deinen Verstand ein, und bei weiteren Detailfragen melde dich.



  • Ich bin das schon so lange am versuchen darum hab ich mich ja erst hier gemolden weil ich nicht mehr weiter weiss nun ist es schon so spät und bin langsam ko von dem ganzen...

    Darum wäre ich echt froh um Hilfe...



  • 007 schrieb:

    Ich bin das schon so lange am versuchen darum hab ich mich ja erst hier gemolden weil ich nicht mehr weiter weiss nun ist es schon so spät und bin langsam ko von dem ganzen...

    Darum wäre ich echt froh um Hilfe...

    Ok, Moment...



  • Gut, ausnahmsweise:

    #include <iostream>
    #include <limits>
    
    using namespace std; 
    
    int main() 
    { 
    	const char *Strings12[]={"null", "eins", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn", "elf", "zwoelf"}; 
    	const char *Strings19[]={"drei", "vier", "fuenf", "sech", "sieb", "acht", "neun"}; 
    	const char *Strings99_pre[]={"einund", "zweiund", "dreiund", "vierund", "fuenfund", "sechsund", "siebenund", "achtund", "neunund"}; 
    	const char *Strings99_post[]={"zwanzig", "dreissig", "vierzig", "fuenfzig", "sechzig", "siebzig", "achtzig", "neunzig"}; 
    	int eingabe; 
    
    	cout<<"Geben sie eine zahl ein> "; 
    	if(cin>>eingabe) {
    		if(eingabe<0) {
    			cout << "Bitte keine negativen Zahlen eingeben!" << endl;
    		}else	if(eingabe<=12) {
    			cout << Strings12[eingabe];
    		}else if(eingabe<=19) {
    			cout << Strings19[eingabe%10-3] << "zehn";
    		}else if(eingabe<=99) {
    			cout << Strings99_pre[(eingabe%10)-1] << Strings99_post[(eingabe/10)-2];
    		}else {
    			cout << "Bitte nur Zahlen kleiner 100 eingeben!" << endl;
    		}
    	}else {
    		cout << "Bitte eine Zahl eingeben!" << endl;
    	}
    	std::cin.clear(); 
    	std::cin.ignore(std::numeric_limits<int>::max(),'\n');
    	getchar();
    }
    

    Jetzt pack eine Schleife und eine kleine Ablaufsteuerung (z.B. Programm abbrechen) rein.

    EDIT: Du kannst ja auch noch Hunderter und Tausender einbauen, das ist nicht so schwer...

    EDIT2: Und verbring die nächste Zeit am besten damit, dir einige Grundlagen beizubringen. Nur so kommt man auf Dauer weiter. Lies mal ein Tutorial oder ein Buch, das bringt einfach mehr als einfach drauf loszuprogrammieren. Wie du selbst gemerkt hast, erreicht man sein Ziel nicht ohne Verständnis der Sprachmittel und Grundwissen. 🙂



  • Danke schon mal

    Was ist Strings



  • 007 schrieb:

    Danke schon mal

    Was ist Strings

    http://de.wikipedia.org/wiki/Zeichenkette
    😮



  • Ich glaube eher er meint die Variable...denn du hast keine Strings verwendet außer C-Strings...



  • Vielleicht sollte man das Problem in die FAQ aufnehmen. Die "Zahlenumwandler" nehmen ja gar kein Ende mehr. Jeden Tag einer. 😃


Anmelden zum Antworten