
Belirli bir sayıyı kelimelere dönüştürmek için kod yazın.
Örnekler:
123film
Önerilen Uygulama Tamsayıdan Kelimelere Dönüştürme Deneyin!Giriş: 438237764
Çıkış: kırk üç milyon seksen iki lakh otuz yedi bin yedi yüz altmış dörtGiriş: 999999
Çıkış: dokuz lakh doksan dokuz bin dokuz yüz doksan dokuzGiriş: 1000
Çıkış: bin
Açıklama: 1000'in kelime anlamı 'bin'dir
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 dizeC++
/* 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.