Zahlen umkehr Programm klapptt nicht?



  • Moin,

    Also in den letzten Tagen kann ich jetzt mal so sagen das ich ein stückchen weiter gekommen bin. Doch leider stehe ich hier vor einem Problem weiß aber nicht wie ich das lösen soll?
    Also ich versuche gerade so zum spaß ein Programm zu schreiben das wen man eine Zahl eingibt die als String wieder raus kommt. Doch leider funzt mein Programm irgend wie nicht? Oder eher gesagt der zeigt mir hier fehler an aber ich weiß nicht wo dran der Fehler liegt.

    Naja hier ist der Code:

    #include <stdio.h>
    
    void main ( void)
    {
    int eingabe;
    
    do
     {
        printf ("\nBitte geben Sie eine Zahl ein: ");
        scanf ("%d",eingabe);
    
        switch (eingabe)
     {
        case 1;
        printf ("\nEins");
        break;
        case 2;
        printf ("\nZwei");
        break;
        case 3;
        printf ("\nDrei");
        break;
        case 4;
        printf ("\nVier");
        break;
        case 5;
        printf ("\nFünf");
        break;
        case 6;
        printf ("\nSechs");
        break;
        case 7;
        printf ("\nSieben");
        break;
        case 8;
        printf ("\nAcht");
        break;
        case 9;
        printf ("\nNeun");
        break;
        case 10;
        printf ("\nZehn");
        break;
        default;
        printf ("\nEs wurde eine falsche Zahl eingegeben!");
     }
    }
    while getchar ();
    }
    

    Thx
    DarkAngel



  • nur zu info

    std::string Zahlen[10] = {"Null","Eins","Zwei"...}
    

    ist bedeutend kürzer! 🕶



  • string toWord(unsigned long val, bool upcase) {
      string word;
      if(val==0)
        word=("null");
      else
        word=upTo99(val);
    
      if(upcase)
        word[0]=toupper(word[0]);
    
      return(word);
    }
    
    string upTo19(unsigned long val, bool one=true) {
      switch(val) {
        case 1: if(one)
                  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 17: return("siebzehn");
        default: return(upTo19(val%10)+"zehn");
      }
    string upTo99(unsigned long val, bool one) {
    
      if(val<20)
          return(upTo19(val,one));
    
      string word;
      if(val%10)
        word=upTo19(val%10,false)+"und";
    
      switch(val/10) {
        case 2: word+="zwanzig"; break;
        case 3: word+="dreissig"; break;
        case 4: word+="vierzig"; break;
        case 5: word+="fuenfzig"; break;
        case 6: word+="sechzig"; break;
        case 7: word+="siebzig"; break;
        case 8: word+="achtzig"; break;
        case 9: word+="neunzig"; break;
      }
      return(word);
    }
    usw...
    

    als kleiner ansatz
    mfg



  • ...
    case '1'
    ...
    case '2'
    ...
    case '3'
    ...
    und so weiter...
    


  • Moin,

    Ja aber so weit bin ich noch nicht 😞 .
    Soll ja ein Programm werden zum üben.

    @ Mods
    Schuldigung habe ausversehen falsches Forum gepostet wäre einer von euch so nett und würde den Thread in das richtige Forum rein tun?

    Thx
    DarkAngel



  • Hallo

    das Array ist eine wese3ntlich bessere Lösung.

    außerdem muß es
    [cpp]case 1 : ... break;[/cpp]
    heißen.

    bis bald
    akari



  • Merke: Das Semikolon bezeichnet das Ende einer Anweisung 💡



  • Moin,

    Aso ich hab das nicht richtig gesehen im Tut ich dachte das wäre ein ;. Weil das ja fast überall kommt ^^. Also ich habe das jetzt so verändert aber irgendwie kommt jetzt ne Fehlermeldung aber ich weiß wieder nicht warum? 😡

    #include <stdio.h>
    
    void main ( void)
    {
    int eingabe;
    int d = 1;
    
    do
     {
        printf ("\nBitte geben Sie eine Zahl ein: ");
        scanf ("%d",eingabe);
    
        switch (eingabe)
     {
        case '1':
        printf ("\nEins");
        break;
        case '2':
        printf ("\nZwei");
        break;
        case '3':
        printf ("\nDrei");
        break;
        case '4':
        printf ("\nVier");
        break;
        case '5':
        printf ("\nFünf");
        break;
        case '6':
        printf ("\nSechs");
        break;
        case '7':
        printf ("\nSieben");
        break;
        case '8':
        printf ("\nAcht");
        break;
        case '9':
        printf ("\nNeun");
        break;
        case '10':
        printf ("\nZehn");
        break;
        default:
        printf ("\nEs wurde eine falsche Zahl eingegeben!");
     }
    }
    while (d = 1);
    }
    

    PS: Danke für eure schnellen Antworten.

    Thx
    DarkAngel



  • Hallo

    welche Fehlermeldung denn?
    sicher hier

    while (d = 1);
    

    denn das soll sicher

    while (d == 1);
    

    heißen.

    außerdem ist statt int dies

    char eingabe;
    

    besser.

    bis bald
    akari



  • Moin,

    Versteh ich nicht?
    Also ich habe das jetzt so geändert wie du das gesagt has taber trodzdem kommt noch die gleiche Fehler meldung?
    Ich starte das Programm und gebe eine Zahl ein und dan sagt er Windows hat bei Proejekt 1 einen schwer wiegenden Fehler gefunden.....
    Ich weiß nicht warum?

    Thx
    DarkAngel



  • Zuweisung =
    Vergleich == != ...

    Du definierst in deinem Quelltext int Eingabe
    aber schreibst case '4' 😉



  • #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main(int argc, char* argv[])
    {
      int myZahl;
    
      std::string Zahlen[11] = {"Null", "Eins", "Zwei", "Drei", "Vier",
                                "Fuenf", "Sechs", "Sieben", "Acht", "Neun", "Zehn"};
    
      while(1)
      {
        cout << "Zahl: ";
        cin >> myZahl;
    
        if(myZahl >= 0 && myZahl <= 11)
        {
          cout << "\t\t" << Zahlen[myZahl] << endl;
        }
        else
        {
          cout << "\t\tEingabe war nicht eindeutig! :(" << endl;
        }
      }
    
      return 0;
    }
    

    So einfach ist eine Endlosschleife möglich. ;):p



  • Moin,

    @ shareholder
    Ich weiß, habe ich aber auch gesagt in meinem lätzten beitrag das ich das verändert habe so wie der davor mir das gesagt wurde. Aber es klappt ja immer noch nicht? Ich poste jetzt einfach nochmal den Text so wie ich ihn jetzt habe.

    #include <stdio.h>
    
    void main ( void)
    {
    char eingabe;
    int d = 1;
    
    do
     {
        printf ("\nBitte geben Sie eine Zahl ein: ");
        scanf ("%d",eingabe);
    
        switch (eingabe)
     {
        case '1':
        printf ("\nEins");
        break;
        case '2':
        printf ("\nZwei");
        break;
        case '3':
        printf ("\nDrei");
        break;
        case '4':
        printf ("\nVier");
        break;
        case '5':
        printf ("\nFünf");
        break;
        case '6':
        printf ("\nSechs");
        break;
        case '7':
        printf ("\nSieben");
        break;
        case '8':
        printf ("\nAcht");
        break;
        case '9':
        printf ("\nNeun");
        break;
        case '10':
        printf ("\nZehn");
        break;
        default:
        printf ("\nEs wurde eine falsche Zahl eingegeben!");
     }
    }
    while (d == 1);
    }
    

    Thx
    DarkAngel



  • DarkAngel schrieb:

    ...Aber es klappt ja immer noch nicht?...

    was klapp nicht? welche fehlermeldung erhälst du? schreibe dennoch mal lieber 'int main()' statt' void main(void)'



  • scanf ("%d",eingabe); // fehler
    


  • DarkAngel schrieb:

    Moin,

    Versteh ich nicht?
    Also ich habe das jetzt so geändert wie du das gesagt has taber trodzdem kommt noch die gleiche Fehler meldung?
    Ich starte das Programm und gebe eine Zahl ein und dan sagt er Windows hat bei Proejekt 1 einen schwer wiegenden Fehler gefunden.....
    Ich weiß nicht warum?

    Thx
    DarkAngel

    Thx
    DarkAngel



  • Moin,

    AHH 😡 😡 😡 😡
    Ich vergess immer das &!
    dadran lags Danke!

    Thx
    DarkAngel



  • Versuch's mal so:

    #include <stdio.h>
    
    int main ( void) /* <-- es heißt int main(void) */
    {
    int eingabe; /* <--- */
    int d = 1;
    
    do
     {
        printf ("\nBitte geben Sie eine Zahl ein: ");
        scanf ("%d", &eingabe); /* <----- hier musst du die Adresse uebergeben */
    
        switch (eingabe)
     {
        case 1: /* <--- hier muessen ganz einfach die zahlen stehen */
        printf ("\nEins");
        break;
        case 2:
        printf ("\nZwei");
        break;
        case 3:
        printf ("\nDrei");
        break;
        case 4:
        printf ("\nVier");
        break;
        case 5:
        printf ("\nFünf");
        break;
        case 6:
        printf ("\nSechs");
        break;
        case 7:
        printf ("\nSieben");
        break;
        case 8:
        printf ("\nAcht");
        break;
        case 9:
        printf ("\nNeun");
        break;
        case 10: /* <--- spaetestens '10' gibt's nicht als char ;-) */
        printf ("\nZehn");
        break;
        default:
        printf ("\nEs wurde eine falsche Zahl eingegeben!");
     }
    }
    while (d == 1);
    }
    


  • Ich hoffe

    a) dass du weißt, was das &-Zeichen bedeutet ⚠

    b) und dass ab (int)10 (2 Zeichen) ➡ not(char) die funktion fehl schlägt

    🙄

    also änder das char in signed long int oder was auch immer 👍

    [edit]da war einer schneller :)[/edit]



  • Moin,

    Dieses

    void main(void)
    

    das habe ich aus dem tutorial da stand das so drin. 😃
    Ist aber eigentlich richtig.

    Thx
    DarkAngel


Anmelden zum Antworten