কম্পিউটার

ভ্যারিয়াডিক ফাংশন সহ যোগফল, সর্বোচ্চ এবং সর্বনিম্ন নির্ণয় করতে C প্রোগ্রাম


ধরুন আমরা এমন কিছু ফাংশন তৈরি করতে চাই যা একাধিক আর্গুমেন্ট নিতে পারে, সেখানে কোনো নির্দিষ্ট সংখ্যক আর্গুমেন্ট নেই। আমরা তিনটি ফাংশন sum(), max() এবং min() করতে চাই, তারা যথাক্রমে সংখ্যার যোগফল, সর্বাধিক সংখ্যা এবং সর্বনিম্ন প্রদত্ত সংখ্যা গণনা করতে পারে। এই ফাংশনগুলির প্রতিটি তাদের প্রথম আর্গুমেন্ট হিসাবে গণনা করা আর্গুমেন্টের সংখ্যা গ্রহণ করবে। এই ধরনের ফাংশন সংজ্ঞায়িত করার জন্য আমাদের ফাংশন আর্গুমেন্টে উপবৃত্তাকার (...) তিনটি বিন্দু ব্যবহার করতে হবে। এটি ব্যবহার করার জন্য আমাদের stdarg.h হেডার ফাইল অন্তর্ভুক্ত করতে হবে। এই ধরনের ফাংশনকে variadict ফাংশন বলা হয়। পরিবর্তনশীল আর্গুমেন্ট অ্যাক্সেস করার জন্য চারটি ভিন্ন জিনিস আছে যা আমরা লক্ষ্য করতে পারি −

  • va_list :এটি সমস্ত প্রদত্ত আর্গুমেন্ট সঞ্চয় করে

  • va_start :এটি পরিবর্তনশীল আর্গুমেন্ট এপি ভেরিয়েবল অ্যাক্সেস করা শুরু করবে

  • va_arg :এটি প্রদত্ত প্রকারের পরবর্তী আর্গুমেন্ট পুনরুদ্ধার করতে ব্যবহৃত হয়

  • va_end :এটি ভেরিয়েবল আর্গুমেন্ট লিস্ট অ্যাক্সেস করা শেষ করে

সুতরাং, যদি আমরা ফাংশনকে কল করি যেমন −;

  • সমষ্টি(5, 5, 2, 8, 9, 3)
  • সর্বোচ্চ(3, 5, 9, 2)
  • মিনিট(6, 8, 5, 2, 6, 7, 9)

তাহলে আউটপুট হবে 27 (সমস্ত পাঁচটি সংখ্যার যোগফল), 9 (প্রদত্ত তিনটি সংখ্যার সর্বোচ্চ), 2 (প্রদত্ত ছয়টি সংখ্যার সর্বনিম্ন)।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

একটি ফাংশনের যোগফল সংজ্ঞায়িত করুন (), এটি cnt, এবং আর্গুমেন্টের পরিবর্তনশীল সংখ্যা গ্রহণ করবে

  • va_list ap সংজ্ঞায়িত করুন
  • va_start(ap, cnt) দ্বারা ap আরম্ভ করুন
  • n :=0
  • আরম্ভ করার জন্য i :=0, যখন i
  • n :=n + va_arg(ap, int) দ্বারা পরবর্তী আর্গুমেন্ট
  • va_end(ap) দ্বারা এপি অ্যাক্সেস করা শেষ করুন
  • রিটার্ন n
  • একটি ফাংশন min() সংজ্ঞায়িত করুন, এটি cnt এবং পরিবর্তনশীল সংখ্যার আর্গুমেন্ট নেবে
  • va_list ap সংজ্ঞায়িত করুন
  • va_start(ap, cnt) দ্বারা ap আরম্ভ করুন
  • সর্বনিম্ন :=99999
  • আরম্ভ করার জন্য i :=0, যখন i
  • বর্তমান :=va_arg(ap, int) দ্বারা পরবর্তী যুক্তি
  • যদি বর্তমান <সর্বনিম্ন, তারপর:
    • সর্বনিম্ন :=বর্তমান
  • va_end(ap) দ্বারা এপি অ্যাক্সেস করা শেষ করুন
  • নূন্যতম রিটার্ন
  • একটি ফাংশন max() সংজ্ঞায়িত করুন, এটি cnt এবং পরিবর্তনশীল সংখ্যক আর্গুমেন্ট নেবে
  • va_list ap সংজ্ঞায়িত করুন
  • va_start(ap, cnt) দ্বারা ap আরম্ভ করুন
  • সর্বোচ্চ :=0
  • আরম্ভ করার জন্য i :=0, যখন i
  • বর্তমান :=va_arg(ap, int) দ্বারা পরবর্তী যুক্তি
  • যদি বর্তমান> সর্বাধিক, তারপর:
    • সর্বোচ্চ :=বর্তমান
  • va_end(ap) দ্বারা এপি অ্যাক্সেস করা শেষ করুন
  • সর্বোচ্চ রিটার্ন
  • উদাহরণ

    আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

    #include <stdio.h>
    #include <stdarg.h>
    int sum (int cnt,...) {
        va_list ap;
        int i, n;
        va_start(ap, cnt);
        n = 0;
        for (i=0;i<cnt;i++){
            n += va_arg(ap, int);
         }
        va_end(ap);
        return n;
    }
    int min(int cnt,...) {
        va_list ap;
        int i, current, minimum;
        va_start(ap, cnt);
        minimum = 99999;
        for (i=0;i<cnt;i++){
            current = va_arg(ap, int);
            if (current < minimum)
                minimum = current;
        }
        va_end(ap);
        return minimum;
    }
    int max(int cnt,...) {
        va_list ap;
        int i, current, maximum;
        va_start(ap, cnt);
        maximum = 0;
        for (i=0;i<cnt;i++){
            current = va_arg(ap, int);  
            if (current > maximum)
                maximum = current;
        }
        va_end(ap);
        return maximum;
    }
    int main(){
        printf("%d\n",sum(5, 5, 2, 8, 9, 3));
        printf("%d\n",max(3, 5, 9, 2));
        printf("%d\n",min(6, 8, 5, 2, 6, 7, 9));
    }
    

    ইনপুট

    sum(5, 5, 2, 8, 9, 3)
    max(3, 5, 9, 2)
    min(6, 8, 5, 2, 6, 7, 9)

    আউটপুট

    27
    9
    2

    1. কিভাবে Excel এর MIN, Max, এবং AVERAGE ফাংশন ব্যবহার করবেন

    2. পাইথনে সর্বাধিক যোগফল সহ সংলগ্ন সাবলিস্টের যোগফল খুঁজে বের করার প্রোগ্রাম

    3. পাইথনে বাম এবং ডান সাবট্রি সমষ্টির সাথে মান আপডেট করে একটি ট্রি খুঁজে বের করার প্রোগ্রাম

    4. পাইথন প্রোগ্রামে সর্বোচ্চ গুণফলের সাথে N-এর চারটি গুণনীয়ক এবং N-এর সমান যোগফল নির্ণয় করুন - সেট-2