logo

Belirli bir sayıyı kelimelere dönüştüren program | 2'yi ayarla

GfG Practice'de deneyin ' title= #practiceLinkDiv { görüntü: yok !önemli; }

Belirli bir sayıyı kelimelere dönüştürmek için kod yazın.

Örnekler:  



123film

Giriş: 438237764
Çıkış: kırk üç milyon seksen iki lakh otuz yedi bin yedi yüz altmış dört

Giriş: 999999
Çıkış: dokuz lakh doksan dokuz bin dokuz yüz doksan dokuz

Giriş: 1000
Çıkış: bin
Açıklama: 1000'in kelime anlamı 'bin'dir



Önerilen Uygulama Tamsayıdan Kelimelere Dönüştürme Deneyin!

0'dan 9999'a kadar sayıları işleyen bir yaklaşımı daha önce tartışmıştık. öncesi postalamak.

Çözüm: Bu yaklaşım, 20 basamaktan daha kısa olan sayıları işleyebilir. ULLONG_MAX (unsigned long long int türündeki bir nesne için maksimum değer). ULLONG_MAX derleyicinin imzasız uzun uzun int'yi depolamak için 8 bayt aldığını varsayarsak, ondalık sayı olarak 18446744073709551615'e eşittir.

Aşağıdaki gösterim, herhangi bir 9 basamaklı pozitif tamsayı için basamak değeri tablosunu gösterir: 



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

Buradaki fikir, yukarıdaki basamak değeri tablosuna göre sayıyı ayrı basamaklara bölmek ve bunları En Önemli Basamak'tan başlayarak ele almaktır.

İşte maksimum 9 haneli sayıları destekleyen basit bir uygulama. Program herhangi bir 20 haneli sayıyı destekleyecek şekilde kolayca genişletilebilir.

Java'da karaktere dize
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 ?> 

Çıkış
forty three crore eighty two lakh thirty seven thousand seven hundred and sixty four 

Karmaşıklık Analizi:  

  • Zaman karmaşıklığı: Ç(1). 
    Döngü sabit bir süre boyunca çalışır.
  • Yardımcı alan: Ç(1). 
    Ekstra alana gerek olmadığından.