Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

सी प्रोग्राम किसी दिए गए नंबर को शब्दों में बदलने के लिए

संख्यात्मक मानों वाली एक स्ट्रिंग को देखते हुए, कार्य उन दी गई संख्याओं को शब्दों में छिपाना है।

जैसे हमारे पास एक इनपुट “361” है; तो आउटपुट शब्दों में होना चाहिए अर्थात "तीन सौ इकसठ"। निम्नलिखित समस्या के समाधान के लिए हमें संख्याओं और स्थानों जैसे इकाई, दहाई, हजारों आदि को ध्यान में रखना होगा।

कोड केवल 4 अंकों की संख्या यानी 0 से 9999 तक का समर्थन करता है। इसलिए इनपुट 0 से 9999 तक होना चाहिए।

आइए हम 1,111 पर विचार करें ताकि स्थान इस प्रकार होंगे -

सी प्रोग्राम किसी दिए गए नंबर को शब्दों में बदलने के लिए

उदाहरण

Input: “1234”
Output: one thousand two hundred thirty four
Input: “7777”
Output: seven thousand seven hundred seventy seven

दृष्टिकोण हम दी गई समस्या को हल करने के लिए उपयोग करेंगे -

  • इनपुट को एक स्ट्रिंग के रूप में लें।
  • विभिन्न मानों के लिए सरणियाँ बनाना।
  • लंबाई के अनुसार इनपुट की लंबाई की जांच करके हम तय करेंगे कि हम किन जगहों पर आउटपुट दिखाएंगे।
  • स्थानों के अनुसार आउटपुट दिखाएगा।

एल्गोरिदम

Start
   Step 1 → In function convert(char *num)
      Declare and initialize int len = strlen(num)
      If len == 0 then,
         fprintf(stderr, "empty string\n")
         Return
      End If
      If len > 4 then,
         fprintf(stderr, "Length more than 4 is not supported\n")
         Return
      End If
      Declare and initialize a char *single_digit[] = { "zero", "one", "two","three", "four","five","six", "seven", "eight", "nine"}
      Declare and initialize a char *tens_place[] = {"", "ten", "eleven", "twelve","thirteen", "fourteen","fifteen", "sixteen","seventeen", "eighteen", "nineteen"}
      Declare and Initialize a char *tens_multiple[] = {"", "", "twenty", "thirty", "forty", "fifty","sixty", "seventy", "eighty", "ninety"}
      Declare and initialize char *tens_power[] = {"hundred", "thousand"}
      Print num  
      If len == 1 then,
         Print single_digit[*num - '0']
         Return
      End If
      While *num != '\0
         If len >= 3
            If *num -'0' != 0
               Print single_digit[*num - '0']
               Print tens_power[len-3]
            End If
               Decrement len by 1
            End If
         Else
            If *num == '1' then,
               Set sum = *num - '0' + *(num + 1)- '0'
               Print tens_place[sum]
               Return
            End If
            Else If *num == '2' && *(num + 1) == '0' then,
               Print “twenty”
               Return
            End else If
         Else
            Set i = *num - '0'
            Print i? tens_multiple[i]: ""
            Increment num by 1
            If *num != '0' then,
               Print single_digit[*num - '0']
            End If
            End Else
               Increment num by 1
            End Else
            End while
   Step 2 → In function main()
      Call function convert("9132")
Stop

उदाहरण

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//function to print the given number in words
void convert(char *num) {
   int len = strlen(num);
   // cases
   if (len == 0) {
      fprintf(stderr, "empty string\n");
      return;
   }
   if (len > 4) {
      fprintf(stderr, "Length more than 4 is not supported\n");
      return;
   }
   // the first string wont be used.
   char *single_digit[] = { "zero", "one", "two", "three", "four","five", "six", "seven", "eight", "nine"};
   // The first string is not used, it is to make
   // array indexing simple
      char *tens_place[] = {"", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
   // The first two string are not used, they are to make
   // array indexing simple
      char *tens_multiple[] = {"", "", "twenty", "thirty", "forty", "fifty","sixty", "seventy", "eighty", "ninety"};
      char *tens_power[] = {"hundred", "thousand"};
   // Used for debugging purpose only
   printf("\n%s: ", num);

   // For single digit number
   if (len == 1) {
      printf("%s\n", single_digit[*num - '0']);
      return;
   }
   // Iterate while num is not '\0'
   while (*num != '\0') {
      // Code path for first 2 digits
      if (len >= 3) {
         if (*num -'0' != 0) {
            printf("%s ", single_digit[*num - '0']);
            printf("%s ", tens_power[len-3]); // here len can be 3 or 4
         }
         --len;
      }
      // Code path for last 2 digits
      else {
         // Need to explicitly handle 10-19. Sum of the two digits is
         //used as index of "tens_place" array of strings
         if (*num == '1') {
            int sum = *num - '0' + *(num + 1)- '0';
            printf("%s\n", tens_place[sum]);
            return;
         }
         // Need to explicitely handle 20
         else if (*num == '2' && *(num + 1) == '0') {
            printf("twenty\n");
            return;
         }
         // Rest of the two digit numbers i.e., 21 to 99
         else {
            int i = *num - '0';
            printf("%s ", i? tens_multiple[i]: "");
            ++num;
            if (*num != '0')
               printf("%s ", single_digit[*num - '0']);
         }
      }
      ++num;
   }
}
int main() {
   convert("9132");
   return 0;
}

आउटपुट

nine thousand one hundred thirty two

  1. सी # प्रोग्राम एक स्ट्रिंग में शब्दों की संख्या की गणना करने के लिए

    आइए पहले स्ट्रिंग घोषित करें - string str = "Hello World!"; अब पूरी स्ट्रिंग के माध्यम से लूप करें और व्हाइटस्पेस या टैब या न्यूलाइन कैरेक्टर खोजें - while (a <= str.Length - 1) {    if(str[a]==' ' || str[a]=='\n' || str[a]=='\t') {      

  1. पायथन में किसी दिए गए नंबर के लिए ग्रे कोड बदलने का कार्यक्रम

    मान लीजिए कि हमारे पास एक नंबर n है, हमें उस दिए गए नंबर के लिए ग्रे कोड (दूसरे शब्दों में nth ग्रे कोड) खोजना होगा। जैसा कि हम जानते हैं कि ग्रे कोड बाइनरी नंबरों को ऑर्डर करने का एक तरीका है जैसे कि प्रत्येक लगातार संख्या के मान बिल्कुल एक बिट से भिन्न होते हैं। कुछ ग्रे कोड हैं:[0, 1, 11, 10, 110

  1. पायथन में संख्या को पूर्णांकों की सूची में बदलें

    पायथन में डेटा हेरफेर के हिस्से के रूप में हमें कभी-कभी किसी दिए गए नंबर को एक सूची में बदलने की आवश्यकता हो सकती है जिसमें उस संख्या के अंक होते हैं। इस लेख में हम इसे हासिल करने के तरीके देखेंगे। सूची समझ के साथ नीचे दिए गए दृष्टिकोण में हम दिए गए नंबर पर str फ़ंक्शन लागू करते हैं और फिर पहचान फ़