Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Programm abändern C++ !

Hallo, ich habe folgendes Programm in welchem man Zahlen in  Klartext wiedergeben kann. Es kann dabei noch ausgewählt werde ob Deutsch oder Englisch. Mein Problem ist jetzt das ich eine Hausarbeit abgeben muß. Allerding wo er das nur in Deutsch ausgibt, somit muß der Englische Teil entfernt werden. Ich habe es schon ein paar mal probiert aber leider bekomme ich es nicht hin, bin auch nicht gerade sehr Fit in C++  :(
Vielleicht kann mir hier jemand helfen. Ich könnte das Programm natürlich per E-mail schicken. Da der Quellcode ein wenig zu groß ist um hier zu posten.

Mfg
hOnk




 


Antworten zu Programm abändern C++ !:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Du könntest bspw. nur den relevanten Programmcode hier posten...

Mario 8)

#include <iostream>
#include <cstring>

using namespace std;

void inWorten(char zielString[], int maxAnzZeich, int zahl, char fuellZeich);

bool hunderterWorten(char zielString[], int maxAnzZeich, int zahl, bool zugross);

bool passt_laenge (char zielString[], int maxAnzZeich, int laenge_neu);




bool passt_laenge (char zielString[], int maxAnzZeich, int laenge_neu) {
      if ( strlen(zielString) + 1 + laenge_neu <= maxAnzZeich) // Plus 1, da Nullbyte nicht mitgezaehlt wird
          return true;
      else
         return false;
} //passt_laenge



void inWorten(char zielString[], int maxAnzZeich, int zahl, char fuellZeich) {

bool zugross = false;

        // Deutscher Teil ---------------- Anfang -----------      

   if (zahl == 0) { // Abfangen des Sonderfalles: null
      if (passt_laenge(zielString, maxAnzZeich, strlen("null") ) ) {
            strcat(zielString,"null");         
         
            zugross = true;
          
          
   } else { // zahl > 0
   
      if (zahl < 1000) { // Hunderter

      zugross = hunderterWorten(zielString, maxAnzZeich, zahl, zugross);
      // Ergebniss steht in zielString, fuer eine Zahl < 1000

      } else { // zahl >= 1000
       
         if ( zahl/1000 == 1 ) { // Test auf Sonderfall (ein)tausen

            if (passt_laenge(zielString, maxAnzZeich, strlen("ein") ) ) {
               strcat(zielString,"ein");         
            } else {
               zugross = true;
              }

            if (passt_laenge(zielString, maxAnzZeich, strlen("tausend") ) ) {
               strcat(zielString,"tausend");         
            } else {
               zugross = true;
              }
          
            zugross = hunderterWorten(zielString, maxAnzZeich, zahl%1000, zugross);

         } else {
         
            zugross = hunderterWorten(zielString, maxAnzZeich, zahl/1000, zugross);
         
            if (passt_laenge(zielString, maxAnzZeich, strlen("tausend") ) ) {
               strcat(zielString,"tausend");         
            } else {
               zugross = true;
              }

            zugross = hunderterWorten(zielString, maxAnzZeich, zahl%1000, zugross);
           } //else
        } //else
   } //else
   
} else  // Deutscher Teil ---------------- Ende -----------      
         // Englischer Teil ---------------- Anfang -----------      
    
   
      
   if(zugross) {
      
      strcpy(zielString,""); // zielString loeschen
      
      for (int i=0;i<=maxAnzZeich-2;i++) { // zielString mit fuellZeichen auffuellen
         zielString = fuellZeich;
      }
      
   }
         
} //inWorten


bool hunderterWorten(char zielString[], int maxAnzZeich, int zahl, bool zugross) {


   // Deutscher Teil ---------------- Anfang -----------      


   if (zahl > 99) {
      
      switch (zahl/100) { // Hunderter
         case 1 : if (passt_laenge(zielString, maxAnzZeich, strlen("ein") ) ) {
               strcat(zielString,"ein");         
                  } else {
                zugross = true;
                    }
             break;
         case 2 : if (passt_laenge(zielString, maxAnzZeich, strlen("zwei") ) ) {
               strcat(zielString,"zwei");         
                  } else {
                zugross = true;
                    }
             break;
         case 3 : if (passt_laenge(zielString, maxAnzZeich, strlen("drei") ) ) {
               strcat(zielString,"drei");         
                  } else {
                zugross = true;
                    }
             break;
         case 4 : if (passt_laenge(zielString, maxAnzZeich, strlen("vier") ) ) {
               strcat(zielString,"vier");         
                  } else {
                zugross = true;
                    }
             break;

         case 5 : if (passt_laenge(zielString, maxAnzZeich, strlen("fuenf") ) ) {
               strcat(zielString,"fuenf");         
                  } else {
                zugross = true;
                    }
             break;
         case 6 : if (passt_laenge(zielString, maxAnzZeich, strlen("sechs") ) ) {
               strcat(zielString,"sechs");         
                  } else {
                zugross = true;
                    }
             break;
         case 7 : if (passt_laenge(zielString, maxAnzZeich, strlen("sieben") ) ) {
               strcat(zielString,"sieben");         
                  } else {
                zugross = true;
                    }
             break;
         case 8 : if (passt_laenge(zielString, maxAnzZeich, strlen("acht") ) ) {
               strcat(zielString,"acht");         
                  } else {
                zugross = true;
                    }
             break;
         case 9 : if (passt_laenge(zielString, maxAnzZeich, strlen("neun") ) ) {
               strcat(zielString,"neun");         
                  } else {
                zugross = true;
                    }
      //switch

      if (passt_laenge(zielString, maxAnzZeich, strlen("hundert") ) ) {
               strcat(zielString,"hundert");         
      } else {
         zugross = true;
       }

      zahl = zahl % 100; // hunderter abschneiden
   }
   
   
   if (zahl > 9) {
      
      if (zahl == 10) { // Sonderfaelle abfangen
         if (passt_laenge(zielString, maxAnzZeich, strlen("zehn") ) ) {
               strcat(zielString,"zehn");         
         } else {
              zugross = true;
                 }
       } else if (zahl == 11) {
         if (passt_laenge(zielString, maxAnzZeich, strlen("elf") ) ) {
               strcat(zielString,"elf");         
         } else {
              zugross = true;
                 }
      } else if (zahl == 12) {
         if (passt_laenge(zielString, maxAnzZeich, strlen("zwoelf") ) ) {
               strcat(zielString,"zwoelf");         
         } else {
              zugross = true;
                 }
      } else if (zahl >= 13 && zahl <=19) {
         
         switch (zahl%10) {

            case 3 : if (passt_laenge(zielString, maxAnzZeich, strlen("drei") ) ) {
                  strcat(zielString,"drei");         
                      } else {
                   zugross = true;
                        }
                break;
            case 4 : if (passt_laenge(zielString, maxAnzZeich, strlen("vier") ) ) {
                  strcat(zielString,"vier");         
                       } else {
                   zugross = true;
                          }
                 break;

            case 5 : if (passt_laenge(zielString, maxAnzZeich, strlen("fuenf") ) ) {
                  strcat(zielString,"fuenf");         
                     } else {
                   zugross = true;
                          }
                 break;
            case 6 : if (passt_laenge(zielString, maxAnzZeich, strlen("sech") ) ) {
                  strcat(zielString,"sech");         
                     } else {
                   zugross = true;
                         }
                break;
            case 7 : if (passt_laenge(zielString, maxAnzZeich, strlen("sieb") ) ) {
                  strcat(zielString,"sieb");         
                     } else {
                   zugross = true;
                          }
                break;
            case 8 : if (passt_laenge(zielString, maxAnzZeich, strlen("acht") ) ) {
                  strcat(zielString,"acht");         
                     } else {
                   zugross = true;
                          }
                 break;
            case 9 : if (passt_laenge(zielString, maxAnzZeich, strlen("neun") ) ) {
                  strcat(zielString,"neun");         
                     } else {
                   zugross = true;
                         }
         }//switch

         if (passt_laenge(zielString, maxAnzZeich, strlen("zehn") ) ) {
               strcat(zielString,"zehn");         
                  } else {
                zugross = true;
                    }

      } else {
         if (zahl % 10 != 0) { // Einer
                  
            switch (zahl % 10) {
               case 1 : if (passt_laenge(zielString, maxAnzZeich, strlen("einund") ) ) {
                     strcat(zielString,"einund");         
                        } else {
                      zugross = true;
                            }
                   break;
               case 2 : if (passt_laenge(zielString, maxAnzZeich, strlen("zweiund") ) ) {
                     strcat(zielString,"zweiund");         
                        } else {
                      zugross = true;
                            }
                   break;
               case 3 : if (passt_laenge(zielString, maxAnzZeich, strlen("dreiund") ) ) {
                     strcat(zielString,"dreiund");         
                         } else {
                      zugross = true;
                            }
                   break;
               case 4 : if (passt_laenge(zielString, maxAnzZeich, strlen("vierund") ) ) {
                     strcat(zielString,"vierund");         
                         } else {
                      zugross = true;
                            }
                   break;

               case 5 : if (passt_laenge(zielString, maxAnzZeich, strlen("fuenfund") ) ) {
                     strcat(zielString,"fuenfund");         
                         } else {
                      zugross = true;
                          }
                   break;
               case 6 : if (passt_laenge(zielString, maxAnzZeich, strlen("sechsund") ) ) {
                     strcat(zielString,"sechsund");         
                         } else {
                      zugross = true;
                            }
                   break;
               case 7 : if (passt_laenge(zielString, maxAnzZeich, strlen("siebenund") ) ) {
                     strcat(zielString,"siebenund");         
                         } else {
                      zugross = true;
                            }
                    break;
               case 8 : if (passt_laenge(zielString, maxAnzZeich, strlen("achtund") ) ) {
                     strcat(zielString,"achtund");         
                         } else {
                      zugross = true;
                             }
                   break;
               case 9 : if (passt_laenge(zielString, maxAnzZeich, strlen("neunund") ) ) {
                     strcat(zielString,"neunund");         
                        } else {
                      zugross = true;
                            }
            }//switch
         
         } // einer vorhanden - if
         
         switch (zahl / 10) { // Zehner
         
            case 2 : if (passt_laenge(zielString, maxAnzZeich, strlen("zwanzig") ) ) {
                  strcat(zielString,"zwanzig");         
                      } else {
                   zugross = true;
                        }
                break;
            case 3 : if (passt_laenge(zielString, maxAnzZeich, strlen("drei�g") ) ) {
                  strcat(zielString,"drei�g");         
                      } else {
                   zugross = true;
                        }
                break;
            case 4 : if (passt_laenge(zielString, maxAnzZeich, strlen("vierzig") ) ) {
                  strcat(zielString,"vierzig");         
                       } else {
                   zugross = true;
                          }
                 break;

            case 5 : if (passt_laenge(zielString, maxAnzZeich, strlen("fuenfzig") ) ) {
                  strcat(zielString,"fuenfzig");      
                     } else {
                   zugross = true;
                          }
                 break;
            case 6 : if (passt_laenge(zielString, maxAnzZeich, strlen("sechzig") ) ) {
                  strcat(zielString,"sechzig");         
                     } else {
                   zugross = true;
                         }
                break;
            case 7 : if (passt_laenge(zielString, maxAnzZeich, strlen("siebzig") ) ) {
                  strcat(zielString,"siebzig");         
                     } else {
                   zugross = true;
                          }
                break;
            case 8 : if (passt_laenge(zielString, maxAnzZeich, strlen("achtzig") ) ) {
                  strcat(zielString,"achtzig");         
                     } else {
                   zugross = true;
                          }
                 break;
            case 9 : if (passt_laenge(zielString, maxAnzZeich, strlen("neunzig") ) ) {
                  strcat(zielString,"neunzig");         
                     } else {
                   zugross = true;
                         }
         }//switch
         
       } // else, zweistelligen - restlich
      
   } else {  // zahl <= 9
      switch (zahl) {
         case 1 : if (passt_laenge(zielString, maxAnzZeich, strlen("eins") ) ) {
               strcat(zielString,"eins");         
                  } else {
                zugross = true;
                    }
             break;
         case 2 : if (passt_laenge(zielString, maxAnzZeich, strlen("zwei") ) ) {
               strcat(zielString,"zwei");         
                  } else {
                zugross = true;
                    }
             break;
         case 3 : if (passt_laenge(zielString, maxAnzZeich, strlen("drei") ) ) {
               strcat(zielString,"drei");         
                  } else {
                zugross = true;
                    }
             break;
         case 4 : if (passt_laenge(zielString, maxAnzZeich, strlen("vier") ) ) {
               strcat(zielString,"vier");         
                  } else {
                zugross = true;
                    }
             break;

         case 5 : if (passt_laenge(zielString, maxAnzZeich, strlen("fuenf") ) ) {
               strcat(zielString,"fuenf");         
                  } else {
                zugross = true;
                    }
             break;
         case 6 : if (passt_laenge(zielString, maxAnzZeich, strlen("sechs") ) ) {
               strcat(zielString,"sechs");         
                  } else {
                zugross = true;
                    }
             break;
         case 7 : if (passt_laenge(zielString, maxAnzZeich, strlen("sieben") ) ) {
               strcat(zielString,"sieben");         
                  } else {
                zugross = true;
                    }
             break;
         case 8 : if (passt_laenge(zielString, maxAnzZeich, strlen("acht") ) ) {
               strcat(zielString,"acht");         
                  } else {
                zugross = true;
                    }
             break;
         case 9 : if (passt_laenge(zielString, maxAnzZeich, strlen("neun") ) ) {
               strcat(zielString,"neun");         
                  } else {
                zugross = true;
                    }
      }//switch
   
   }//else
   
} else  // Deutscher Teil ---------------- Ende -----------      
            
   
   
   return zugross;
}//hunderterWorten

int main()
{
   const int maxAnzZeich = 50; // Variable wird im Programm nicht mehr veraendert
   const char fuellZeich = '*';
   char zielString[maxAnzZeich] = ""; // Der C-String in dem das Ergebniss
                  //gespeichert wird mit leerem String initialisieren
   int zahl;
   
   
   
   int wahl;
   
   do {
      

      cout << "Bitte geben Sie eine Wert aus dem Intervall [0,...,999999]!" << endl << endl;
      
      
      }
   
   
      
      
   
   cin >> zahl;
   cout << endl;
   
   inWorten(zielString, maxAnzZeich, zahl, fuellZeich);

   cout << zielString << endl << endl;
   

return 0;
} //main

Soweit bin ich ja schon gekommen... aber das funzt leider nicht..... 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Okay Leute... mein Fehler ;D "relevanter Programmcode" ist relativ "relativ"... :o;D

Bin zwar kein C-Programmierer, aber in Analogie zu Java muss bestimmt auch bei C ein if-else Konstrukt korrekt abgeschlossen werden, wenn ich mich richtig an meine Studienzeit erinnere ;) Oder den Else-Zweig ganz weglassen, aber das das so nicht funktioniert ist klar.
BTW: Bissel C Verständnis wäre halt angebracht, denn IMHO gehören Fallunterscheidungen bspw. zu den Grundlagen, und ne halbwegs vernünftige Entwicklungsumgebung sagt dir bestimmt an diesem Beispiel auch, was falsch ist. ;)

Mario 8)


« Visual Basic 6 Einsteigerbeep sound onboard? »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Internet-Zugriffsprogramm
Ein Internet-Zugriffsprogramm, auch Browser genannt, stellt Internetseiten für den Benutzer dar. Am bekanntesten ist der Microsoft Internet Explorer, gefolgt vom kos...

Programm
Siehe Software...

E-Mail
E-Mail ist eine Abkürzung für den englischen Begriff electronic mail, der sich mit elektrische Post ins Deutsch übersetzen lässt. Dieses bezeichnet ei...