समस्या विवरण
एक संख्यात्मक स्ट्रिंग (अधिकतम 4 अंक: 0-9999) दी गई है, इसे अंग्रेजी शब्दों में बदलें।
उदाहरण
| इनपुट | आउटपुट |
|---|---|
| "1234" | "one thousand two hundred thirty four" |
| "7777" | "seven thousand seven hundred seventy seven" |
| "100" | "one hundred" |
| "15" | "fifteen" |
स्थान मान प्रणाली
संख्या: 1111 स्थान: हजार सौ दहाई इकाई अंक: 1 1 1 1
C प्रोग्राम
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void convert_to_words(char *num) {
int len = strlen(num);
if (len == 0) {
printf("खाली स्ट्रिंग\n");
return;
}
if (len > 4) {
printf("केवल 4 अंक तक समर्थित (0-9999)\n");
return;
}
char *single_digit[] = {
"zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine"
};
char *tens_place[] = {
"", "ten", "eleven", "twelve", "thirteen", "fourteen",
"fifteen", "sixteen", "seventeen", "eighteen", "nineteen"
};
char *tens_multiple[] = {
"", "", "twenty", "thirty", "forty", "fifty",
"sixty", "seventy", "eighty", "ninety"
};
char *tens_power[] = {"hundred", "thousand"};
printf("%s: ", num);
if (len == 1) {
printf("%s\n", single_digit[*num - '0']);
return;
}
while (*num != '\0') {
if (len >= 3) {
if (*num - '0' != 0) {
printf("%s %s ", single_digit[*num - '0'], tens_power[len-3]);
}
len--;
} else {
// अंतिम दो अंक संभालें
if (*num == '1') {
int sum = (*num - '0') + (*(num+1) - '0');
printf("%s\n", tens_place[sum]);
return;
} else if (*num == '2' && *(num+1) == '0') {
printf("twenty\n");
return;
} else {
int i = *num - '0';
if (i > 0) printf("%s ", tens_multiple[i]);
num++;
if (*num != '0')
printf("%s ", single_digit[*num - '0']);
}
}
num++;
}
printf("\n");
}
int main() {
char input[5];
printf "संख्या दर्ज करें (0-9999): ";
scanf("%4s", input);
convert_to_words(input);
return 0;
}
नमूना आउटपुट
संख्या दर्ज करें (0-9999): 9132 9132: nine thousand one hundred thirty two
हिंदी में रूपांतरण (विस्तार)
char *hindi_single[] = {"शून्य", "एक", "दो", "तीन", "चार", "पांच", "छह", "सात", "आठ", "नौ"};
char *hindi_tens[] = {"", "दस", "ग्यारह", "बारह", "तेरह", "चौदह", "पंद्रह", "सोलह", "सत्रह", "अठारह", "उन्नीस"};
char *hindi_tens_mul[] = {"", "", "बीस", "तीस", "चालीस", "पचास", "साठ", "सत्तर", "अस्सी", "नब्बे"};
void convert_to_hindi(char *num) {
// समान तर्क लेकिन हिंदी सरणियों के साथ
// "हजार", "सौ" का उपयोग करें
}
सीमाएं और सुधार
- सीमा: केवल 9999 तक (बड़े नंबरों के लिए लाख, करोड़ जोड़ें)
- शून्य संभाल: मध्यवर्ती शून्यों को सही ढंग से संभालता है
- अनुकूलन: पुनरावृत्ति या लुकअप टेबल का उपयोग कर सकते हैं