Programm zum Umwandeln einer bestimmten Zahl in Wörter | Satz 2

Programm zum Umwandeln einer bestimmten Zahl in Wörter | Satz 2
Probieren Sie es bei GfG Practice aus #practiceLinkDiv { display: none !important; }

Schreiben Sie Code, um eine bestimmte Zahl in Wörter umzuwandeln.

Beispiele:  

Eingang: 438237764
Ausgabe: dreiundvierzig crore zweiundachtzig Lakh siebenunddreißigtausend siebenhundertvierundsechzig

Eingang: 999999
Ausgabe: neun Lakh neunundneunzigtausendneunhundertneunundneunzig

Eingang: 1000
Ausgabe: eintausend
Erläuterung: 1000 in Worten ist „eintausend“

Empfohlene Praxis Ganzzahl zu Wörtern Probieren Sie es aus!

Wir haben bereits einen Ansatz besprochen, der Zahlen von 0 bis 9999 verarbeitet vorherige Post.

Lösung: Dieser Ansatz kann Zahlen mit einer Länge von bis zu 20 Ziffern verarbeiten, die kleiner sind als ULLONG_MAX (Maximalwert für ein Objekt vom Typ unsigned long long int). ULLONG_MAX ist gleich 18446744073709551615 in Dezimalzahl, vorausgesetzt, der Compiler benötigt 8 Bytes für die Speicherung von unsigned long long int.

Die folgende Darstellung zeigt ein Stellenwertdiagramm für jede 9-stellige positive Ganzzahl: 

 4 3 8 2 3 7 7 6 4   
| | | | | | | | |__ ones' place
| | | | | | | |__ __ tens' place
| | | | | | |__ __ __ hundreds' place
| | | | | |__ __ __ __ thousands' place
| | | | |__ __ __ __ __ tens thousands' place
| | | |__ __ __ __ __ __ hundred thousands' place
| | |__ __ __ __ __ __ __ one millions' place
| |__ __ __ __ __ __ __ __ ten millions' place
|__ __ __ __ __ __ __ __ __ hundred millions' place

Die Idee besteht darin, die Zahl anhand der obigen Stellenwerttabelle in einzelne Ziffern zu unterteilen und diese ausgehend von der höchstwertigen Ziffer zu behandeln.

Hier ist eine einfache Implementierung, die Zahlen mit maximal 9 Ziffern unterstützt. Das Programm kann problemlos auf die Unterstützung beliebiger 20-stelliger Zahlen erweitert werden.

C++
   /* C++ program to print a given number in words.    The program handles till 9 digits numbers and    can be easily extended to 20 digit number */   #include          using     namespace     std  ;   // strings at index 0 is not used it is to make array   // indexing simple   string     one  []     =     {     ''       'one '       'two '       'three '       'four '        'five '       'six '       'seven '       'eight '        'nine '       'ten '       'eleven '       'twelve '        'thirteen '       'fourteen '       'fifteen '        'sixteen '       'seventeen '       'eighteen '        'nineteen '     };   // strings at index 0 and 1 are not used they are to   // make array indexing simple   string     ten  []     =     {     ''       ''       'twenty '       'thirty '       'forty '        'fifty '       'sixty '       'seventy '       'eighty '        'ninety '     };   // n is 1- or 2-digit number   string     numToWords  (  int     n       string     s  )   {      string     str     =     ''  ;      // if n is more than 19 divide it      if     (  n     >     19  )      str     +=     ten  [  n     /     10  ]     +     one  [  n     %     10  ];      else      str     +=     one  [  n  ];      // if n is non-zero      if     (  n  )      str     +=     s  ;      return     str  ;   }   // Function to print a given number in words   string     convertToWords  (  long     n  )   {      // stores word representation of given number n      string     out  ;      // handles digits at ten millions and hundred      // millions places (if any)      out     +=     numToWords  ((  n     /     10000000  )     'crore '  );      // handles digits at hundred thousands and one      // millions places (if any)      out     +=     numToWords  (((  n     /     100000  )     %     100  )     'lakh '  );      // handles digits at thousands and tens thousands      // places (if any)      out     +=     numToWords  (((  n     /     1000  )     %     100  )     'thousand '  );      // handles digit at hundreds places (if any)      out     +=     numToWords  (((  n     /     100  )     %     10  )     'hundred '  );      if     (  n     >     100     &&     n     %     100  )      out     +=     'and '  ;      // handles digits at ones and tens places (if any)      out     +=     numToWords  ((  n     %     100  )     ''  );          //Handling the n=0 case      if  (  out  ==  ''  )      out     =     'zero'  ;      return     out  ;   }   // Driver code   int     main  ()   {      // long handles upto 9 digit no      // change to unsigned long long int to      // handle more digit number      long     n     =     438237764  ;      // convert given number in words      cout      < <     convertToWords  (  n  )      < <     endl  ;      return     0  ;   }   
Java
   /* Java program to print a given number in words.    The program handles till 9 digits numbers and    can be easily extended to 20 digit number */   class   GFG     {      // Strings at index 0 is not used it is to make array      // indexing simple      static     String     one  []     =     {     ''       'one '       'two '       'three '       'four '        'five '       'six '       'seven '       'eight '        'nine '       'ten '       'eleven '       'twelve '        'thirteen '       'fourteen '       'fifteen '        'sixteen '       'seventeen '       'eighteen '        'nineteen '     };      // Strings at index 0 and 1 are not used they are to      // make array indexing simple      static     String     ten  []     =     {     ''       ''       'twenty '       'thirty '       'forty '        'fifty '       'sixty '       'seventy '       'eighty '        'ninety '     };      // n is 1- or 2-digit number      static     String     numToWords  (  int     n       String     s  )      {      String     str     =     ''  ;      // if n is more than 19 divide it      if     (  n     >     19  )     {      str     +=     ten  [  n     /     10  ]     +     one  [  n     %     10  ]  ;      }      else     {      str     +=     one  [  n  ]  ;      }      // if n is non-zero      if     (  n     !=     0  )     {      str     +=     s  ;      }      return     str  ;      }      // Function to print a given number in words      static     String     convertToWords  (  long     n  )      {      // stores word representation of given number n      String     out     =     ''  ;      // handles digits at ten millions and hundred      // millions places (if any)      out     +=     numToWords  ((  int  )(  n     /     10000000  )     'crore '  );      // handles digits at hundred thousands and one      // millions places (if any)      out     +=     numToWords  ((  int  )((  n     /     100000  )     %     100  )     'lakh '  );      // handles digits at thousands and tens thousands      // places (if any)      out     +=     numToWords  ((  int  )((  n     /     1000  )     %     100  )     'thousand '  );      // handles digit at hundreds places (if any)      out     +=     numToWords  ((  int  )((  n     /     100  )     %     10  )     'hundred '  );      if     (  n     >     100     &&     n     %     100     >     0  )     {      out     +=     'and '  ;      }      // handles digits at ones and tens places (if any)      out     +=     numToWords  ((  int  )(  n     %     100  )     ''  );      return     out  ;      }      // Driver code      public     static     void     main  (  String  []     args  )      {      // long handles upto 9 digit no      // change to unsigned long long int to      // handle more digit number      long     n     =     438237764  ;      // convert given number in words      System  .  out  .  printf  (  convertToWords  (  n  ));      }   }   
Python3
   # Python3 program to print a given number in words.   # The program handles till 9 digits numbers and   # can be easily extended to 20 digit number    # strings at index 0 is not used it    # is to make array indexing simple   one   =   [   ''     'one '     'two '     'three '     'four '     'five '     'six '     'seven '     'eight '     'nine '     'ten '     'eleven '     'twelve '     'thirteen '     'fourteen '     'fifteen '     'sixteen '     'seventeen '     'eighteen '     'nineteen '  ];   # strings at index 0 and 1 are not used    # they are to make array indexing simple   ten   =   [   ''     ''     'twenty '     'thirty '     'forty '     'fifty '     'sixty '     'seventy '     'eighty '     'ninety '  ];   # n is 1- or 2-digit number   def   numToWords  (  n     s  ):   str   =   ''  ;   # if n is more than 19 divide it   if   (  n   >   19  ):   str   +=   ten  [  n   //   10  ]   +   one  [  n   %   10  ];   else  :   str   +=   one  [  n  ];   # if n is non-zero   if   (  n  ):   str   +=   s  ;   return   str  ;   # Function to print a given number in words   def   convertToWords  (  n  ):   # stores word representation of given    # number n   out   =   ''  ;   # handles digits at ten millions and    # hundred millions places (if any)   out   +=   numToWords  ((  n   //   10000000  )   'crore '  );   # handles digits at hundred thousands    # and one millions places (if any)   out   +=   numToWords  (((  n   //   100000  )   %   100  )   'lakh '  );   # handles digits at thousands and tens    # thousands places (if any)   out   +=   numToWords  (((  n   //   1000  )   %   100  )   'thousand '  );   # handles digit at hundreds places (if any)   out   +=   numToWords  (((  n   //   100  )   %   10  )   'hundred '  );   if   (  n   >   100   and   n   %   100  ):   out   +=   'and '  ;   # handles digits at ones and tens   # places (if any)   out   +=   numToWords  ((  n   %   100  )   ''  );   return   out  ;   # Driver code   # long handles upto 9 digit no   # change to unsigned long long    # int to handle more digit number   n   =   438237764  ;   # convert given number in words   print  (  convertToWords  (  n  ));   # This code is contributed by mits   
C#
   /* C# program to print a given number in words.    The program handles till 9 digits numbers and    can be easily extended to 20 digit number */   using     System  ;   class     GFG     {      // strings at index 0 is not used it is      // to make array indexing simple      static     string  []     one     =     {     ''       'one '       'two '       'three '       'four '        'five '       'six '       'seven '       'eight '        'nine '       'ten '       'eleven '       'twelve '        'thirteen '       'fourteen '       'fifteen '        'sixteen '       'seventeen '       'eighteen '        'nineteen '     };      // strings at index 0 and 1 are not used      // they are to make array indexing simple      static     string  []     ten     =     {     ''       ''       'twenty '       'thirty '       'forty '        'fifty '       'sixty '       'seventy '       'eighty '        'ninety '     };      // n is 1- or 2-digit number      static     string     numToWords  (  int     n       string     s  )      {      string     str     =     ''  ;      // if n is more than 19 divide it      if     (  n     >     19  )     {      str     +=     ten  [  n     /     10  ]     +     one  [  n     %     10  ];      }      else     {      str     +=     one  [  n  ];      }      // if n is non-zero      if     (  n     !=     0  )     {      str     +=     s  ;      }      return     str  ;      }      // Function to print a given number in words      static     string     convertToWords  (  long     n  )      {      // stores word representation of      // given number n      string     out1     =     ''  ;      // handles digits at ten millions and      // hundred millions places (if any)      out1     +=     numToWords  ((  int  )(  n     /     10000000  )      'crore '  );      // handles digits at hundred thousands      // and one millions places (if any)      out1     +=     numToWords  ((  int  )((  n     /     100000  )     %     100  )      'lakh '  );      // handles digits at thousands and tens      // thousands places (if any)      out1     +=     numToWords  ((  int  )((  n     /     1000  )     %     100  )      'thousand '  );      // handles digit at hundreds places (if any)      out1     +=     numToWords  ((  int  )((  n     /     100  )     %     10  )      'hundred '  );      if     (  n     >     100     &&     n     %     100     >     0  )     {      out1     +=     'and '  ;      }      // handles digits at ones and tens      // places (if any)      out1     +=     numToWords  ((  int  )(  n     %     100  )     ''  );      return     out1  ;      }      // Driver code      static     void     Main  ()      {      // long handles upto 9 digit no      // change to unsigned long long int to      // handle more digit number      long     n     =     438237764  ;      // convert given number in words      Console  .  WriteLine  (  convertToWords  (  n  ));      }   }   // This code is contributed by mits   
JavaScript
    <  script  >   /* Javascript program to     print a given number in words.     The program handles till 9    digits numbers and    can be easily extended to   20 digit number */      // Strings at index 0 is not used it is to make array      // indexing simple      var     one     =     [     ''       'one '       'two '       'three '       'four '        'five '       'six '       'seven '       'eight '        'nine '       'ten '       'eleven '       'twelve '        'thirteen '       'fourteen '       'fifteen '        'sixteen '       'seventeen '       'eighteen '        'nineteen '     ];      // Strings at index 0 and 1 are not used they are to      // make array indexing simple      var     ten     =     [     ''       ''       'twenty '       'thirty '       'forty '        'fifty '       'sixty '       'seventy '       'eighty '        'ninety '     ];      // n is 1- or 2-digit number      function     numToWords  (  n       s  )      {      var     str     =     ''  ;      // if n is more than 19 divide it      if     (  n     >     19  )     {      str     +=     ten  [  parseInt  (  n     /     10  )]     +     one  [  n     %     10  ];      }      else     {      str     +=     one  [  n  ];      }      // if n is non-zero      if     (  n     !=     0  )     {      str     +=     s  ;      }      return     str  ;      }      // Function to print a given number in words      function     convertToWords  (  n  )      {      // stores word representation of given number n      var     out     =     ''  ;      // handles digits at ten millions and hundred      // millions places (if any)      out     +=     numToWords  (  parseInt  (  n     /     10000000  )         'crore '  );      // handles digits at hundred thousands and one      // millions places (if any)      out     +=     numToWords  (  parseInt  ((  n     /     100000  )     %     100  )      'lakh '  );      // handles digits at thousands and tens thousands      // places (if any)      out     +=     numToWords  (  parseInt  ((  n     /     1000  )     %     100  )         'thousand '  );      // handles digit at hundreds places (if any)      out     +=     numToWords  (  parseInt  ((  n     /     100  )     %     10  )         'hundred '  );      if     (  n     >     100     &&     n     %     100     >     0  )     {      out     +=     'and '  ;      }      // handles digits at ones and tens places (if any)      out     +=     numToWords  (  parseInt  (  n     %     100  )     ''  );      return     out  ;      }      // Driver code      // var handles upto 9 digit no      // change to unsigned var var var to      // handle more digit number      var     n     =     438237764  ;      // convert given number in words      document  .  write  (  convertToWords  (  n  ));       // This code is contributed by Amit Katiyar     <  /script>   
PHP
      /* PHP program to print a given number in words.   The program handles till 9 digits numbers and   can be easily extended to 20 digit number */   // strings at index 0 is not used it is    // to make array indexing simple   $one   =   array  (  ''     'one '     'two '     'three '     'four '     'five '     'six '     'seven '     'eight '     'nine '     'ten '     'eleven '     'twelve '     'thirteen '     'fourteen '     'fifteen '     'sixteen '     'seventeen '     'eighteen '     'nineteen '  );   // strings at index 0 and 1 are not used    // they are to make array indexing simple   $ten   =   array  (  ''     ''     'twenty '     'thirty '     'forty '     'fifty '     'sixty '     'seventy '     'eighty '     'ninety '  );   // n is 1- or 2-digit number   function   numToWords  (  $n     $s  )   {   global   $one     $ten  ;   $str   =   ''  ;   // if n is more than 19 divide it   if   (  $n   >   19  )   {   $str   .=   $ten  [(  int  )(  $n   /   10  )];   $str   .=   $one  [  $n   %   10  ];   }   else   $str   .=   $one  [  $n  ];   // if n is non-zero   if   (  $n   !=   0   )   $str   .=   $s  ;   return   $str  ;   }   // Function to print a given number in words   function   convertToWords  (  $n  )   {   // stores word representation of    // given number n   $out   =   ''  ;   // handles digits at ten millions and    // hundred millions places (if any)   $out   .=   numToWords  ((  int  )(  $n   /   10000000  )   'crore '  );   // handles digits at hundred thousands    // and one millions places (if any)   $out   .=   numToWords  (((  int  )(  $n   /   100000  )   %   100  )   'lakh '  );   // handles digits at thousands and tens   // thousands places (if any)   $out   .=   numToWords  (((  int  )(  $n   /   1000  )   %   100  )   'thousand '  );   // handles digit at hundreds places (if any)   $out   .=   numToWords  (((  int  )(  $n   /   100  )   %   10  )   'hundred '  );   if   (  $n   >   100   &&   $n   %   100  )   $out   .=   'and '  ;   // handles digits at ones and tens   // places (if any)   $out   .=   numToWords  ((  $n   %   100  )   ''  );   return   $out  ;   }   // Driver code   // long handles upto 9 digit no   // change to unsigned long long int to   // handle more digit number   $n   =   438237764  ;   // convert given number in words   echo   convertToWords  (  $n  )   .   '  n  '  ;   // This code is contributed by Akanksha Rai   ?>   

Ausgabe
forty three crore eighty two lakh thirty seven thousand seven hundred and sixty four  

Komplexitätsanalyse:  

  • Zeitkomplexität: O(1). 
    Die Schleife läuft für eine konstante Zeitspanne.
  • Nebenraum: O(1). 
    Da kein zusätzlicher Platz erforderlich ist.