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

सी प्रोग्राम स्ट्रिंग प्रारूप में अंश और हर में संख्याओं का प्रतिनिधित्व करने के लिए

समस्या

गतिशील स्मृति आवंटन का उपयोग करके उपयोगकर्ता द्वारा दिए गए दो दिए गए पूर्णांकों में से भिन्न भाग का पता लगाएं और स्ट्रिंग प्रारूप में अंश और हर का प्रतिनिधित्व करें।

समाधान

अंश और हर को स्ट्रिंग प्रारूप में निरूपित करने का समाधान इस प्रकार है -

उदाहरण -

  • इनपुट नीचे दिया गया है -
Numerator1 = 3
Denominator2 = 2

numerator2 = 4
denominator2 = 7
  • आउटपुट इस प्रकार है -
Fractional part1: 1.5
Fractional part2: 0.(571428)

उदाहरण

अंश और हर को स्ट्रिंग प्रारूप में प्रस्तुत करने के लिए C निम्नलिखित सी प्रोग्राम है -

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
char* fractionToDecimal(int numerator, int denominator) {
   char *p;
   int psz, n, *dec, dsz, x;
   long long num, den, k, f;
   int i, repeat_at;
   int neg = 0;
   psz = dsz = 100; n = x = 0;
   p = malloc(psz * sizeof(char));
   //assert(p);
   neg = ((numerator > 0 && denominator < 0) ||
   (numerator < 0 && denominator > 0)) ? 1 : 0;
   num = numerator;
   den = denominator;
   num = (num < 0) ? -num : num;
   den = (den < 0) ? -den : den;
   k = num / den;
   f = num % den;
   if (neg && (k || f)) p[n ++] = '-';
      n += sprintf(&p[n], "%lld", k);
   if (!f) {
      p[n] = 0;
      return p;
   }
   p[n ++] = '.';
   dec = malloc(dsz * sizeof(int));
   repeat_at = -1;
   if (f < 0) f = -f;
   while (f) {
      for (i = 0; i < x; i += 2) {
         if (dec[i] == f) {
            repeat_at = i;
            goto done;
         }
      }
      if (x + 1 >= dsz) {
         dsz *= 2;
         dec = realloc(dec, dsz * sizeof(int));
      }
      dec[x ++] = f;
      f *= 10;
      k = f / den;
      dec[x ++] = k;
      f = f % den;
   }
   done:
   for (i = 0; i < x; i += 2) {
      if (n + 3 > psz) {
         psz *= 2;
         p = realloc(p, psz * sizeof(char));
      }
      if (repeat_at == i) {
         p[n ++] = '(';
      }
      p[n ++] = '0' + dec[i + 1];
   }
   if (repeat_at != -1) p[n ++] = ')';
      p[n ++] = 0;
   free(dec);
   return p;
}
int main(void){
   int n,d;
   printf("enter numerator1 and denominator1:");
   scanf("%d%d",&n,&d);
   printf("n = %d, d = %d ", n, d);
   printf("\nFractional part1: %s \n",fractionToDecimal(n, d));
   printf("enter numerator2 and denominator2:");
   scanf("%d%d",&n,&d);
   printf("\nn = %d, d = %d ", n, d);
   printf("\nFractional part2: %s\n ",fractionToDecimal(n, d));
   return 0;
}

आउटपुट

जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -

enter numerator1 and denominator1:4 5
n = 4, d = 5
Fractional part1: 0.8
enter numerator2 and denominator2:5 9

n = 5, d = 9
Fractional part2: 0.(5)

  1. सी प्रोग्राम सर्पिल पैटर्न में संख्याओं का प्रतिनिधित्व करने के लिए

    संख्याओं को दर्शाने के लिए सर्पिल पैटर्न नीचे दिखाया गया है - सर्पिल पैटर्न में संख्याओं को मुद्रित करने के लिए लागू तर्क इस प्रकार है - for(i=1;i<=rows*2;i+=2){    if(k%2==1){       printf("%3d %3d",i,i+1);       k++;    }else{  

  1. सी प्रोग्राम स्ट्रिंग्स और उनके पते पर पॉइंटर्स की सरणी मुद्रित करने के लिए

    सबसे पहले, आइए समझते हैं कि C प्रोग्रामिंग भाषा में पॉइंटर्स की सरणियाँ क्या हैं। पॉइंटर्स की सरणी:(स्ट्रिंग्स के लिए) यह एक सरणी है जिसके तत्व स्ट्रिंग के आधार जोड़ के ptrs हैं। इसे निम्नानुसार घोषित और आरंभ किया गया है - char *a[ ] = {"one", "two", "three"};

  1. सी प्रोग्राम में 'X' फॉर्मेट में विषम लंबाई की प्रिंट स्ट्रिंग।

    एक स्ट्रिंग प्रोग्राम के साथ दिए गए स्ट्रिंग को X प्रारूप में प्रिंट करना चाहिए। संदर्भ के लिए, नीचे दी गई छवि देखें। यहां, एक चर का उपयोग बाएं दाएं (i) से प्रिंट करने के लिए किया जा सकता है और अन्य चर का उपयोग दाएं से बाएं (जे) प्रिंट करने के लिए किया जा सकता है और हम अन्य चर k ले सकते हैं जो अं