কম্পিউটার

সি প্রোগ্রাম স্ট্রিং বিন্যাসে লব এবং হর হিসাবে সংখ্যা প্রতিনিধিত্ব করে


সমস্যা

গতিশীল মেমরি বরাদ্দ ব্যবহার করে রান টাইমে ব্যবহারকারীর দেওয়া দুটি প্রদত্ত পূর্ণসংখ্যা থেকে ভগ্নাংশের অংশ খুঁজুন এবং স্ট্রিং বিন্যাসে লব এবং হর উপস্থাপন করুন৷

সমাধান

স্ট্রিং বিন্যাসে লব এবং হর উপস্থাপন করার সমাধান নিম্নরূপ -

উদাহরণ -

  • ইনপুট নিচে দেওয়া হল -
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. সর্পিল প্যাটার্নে সংখ্যাগুলিকে উপস্থাপন করতে সি প্রোগ্রাম

  2. সি প্রোগ্রাম স্ট্রিং এবং তাদের ঠিকানা পয়েন্টার অ্যারে মুদ্রণ

  3. C প্রোগ্রামে 'X' ফরম্যাটে বিজোড় দৈর্ঘ্যের স্ট্রিং প্রিন্ট করুন।

  4. পাইথন প্রোগ্রাম বিভক্ত এবং একটি স্ট্রিং যোগদান?