কম্পিউটার

প্রতিটি সারি C++ এ সাজানোর জন্য মুছে ফেলার জন্য কলাম গণনা করুন


C++ প্রোগ্রামের অস্বাভাবিক আচরণ প্রায়ই প্রোগ্রাম ক্র্যাশের দিকে নিয়ে যায়। আপনি সেগমেন্টেশন ফল্ট, বাদ দেওয়া, ফ্লোটিং পয়েন্ট ব্যতিক্রম ইত্যাদির মতো সমস্যার সম্মুখীন হতে পারেন। নিম্নলিখিত নমুনা প্রোগ্রামগুলি রয়েছে যা আপনাকে C++ প্রোগ্রাম ক্র্যাশের কারণ বুঝতে সাহায্য করতে পারে।

ব্যতিক্রম

C++ এর ব্যতিক্রম হল একটি প্রোগ্রামের প্রতিক্রিয়া যখন এটি একটি অস্বাভাবিক অবস্থার সম্মুখীন হয়। ট্রাই-ক্যাচ ব্লক ব্যবহার করে সঠিকভাবে পরিচালনা না করা হলে এই ধরনের ব্যতিক্রমের কারণে প্রোগ্রামটি ক্র্যাশ হয়ে যায়। শূন্য ব্যতিক্রম দ্বারা ভাগ করার কারণে নিম্নলিখিত প্রোগ্রাম ক্র্যাশ হয় -

উদাহরণ

#include <iostream>
int main(){
   int num1=10;
   int num2=0;
   int quotient=num1/num2;
   printf("\n Quotient is: %d",quotient);
   return 0;
}

আউটপুট

Floating point exception (core dumped)

বাফার ওভারফ্লো

বাফার একটি অস্থায়ী স্টোরেজ এলাকা। বাফারে ডেটা লেখার সময় একটি প্রোগ্রাম যখন বাফার ধরে রাখতে পারে এমন আকারকে ছাড়িয়ে যায়, তখন অতিরিক্ত ডেটা বাফারের সীমানার বাইরে চলে যায়। ডেটা সংলগ্ন মেমরি অবস্থানগুলিতে ওভাররাইট করে। নিম্নলিখিত প্রোগ্রামটি তার আচরণ পরিবর্তন করে যখন ইনপুট আকার অতিক্রম করে, পরিবর্তনশীল সংখ্যা ধরে রাখতে পারে।

উদাহরণ

#include <iostream>
#include <string.h>
int main(){
   int num=100;
   std::cout<<"\nValue for num:"<<num;
   char c[2];
   strcpy(c,"abcdefghijklmnopqrstuvwxyz");
   std::cout<<"\nValue for c:"<<c;
   return 0;
}

আউটপুট

Value for num:100
Segmentation fault (core dumped)

স্ট্যাক ওভারফ্লো

স্ট্যাক ওভারফ্লো সমস্যাটি ঘটে যখন কল স্ট্যাক পয়েন্টার স্ট্যাক বাউন্ড অতিক্রম করে। স্ট্যাক সীমিত পরিমাণ স্থান নিয়ে গঠিত। যখন একটি প্রোগ্রাম স্ট্যাকের উপলব্ধ স্থানের চেয়ে বেশি স্থান ব্যবহার করে তখন স্ট্যাকটিকে উপচে পড়া এবং প্রোগ্রামটি ক্র্যাশ করে বলে বলা হয়। সবচেয়ে সাধারণ কারণ হল অসীম পুনরাবৃত্তি।

নিম্নলিখিত প্রোগ্রামে ফ্যাক্টোরিয়াল() ফাংশনের জন্য অসীম কল রয়েছে। এই ক্ষেত্রে রিটার্ন স্টেটমেন্ট সঠিক নয়।

উদাহরণ

#include <iostream>
#include <string.h>
int factorial(int num){
   if(num==0)
      return 1;
   else
      return(factorial(num));
}
int main(){
    int n=10;
   int fact=factorial(n);
   std::cout<<fact;
}

আউটপুট

Segmentation fault (core dumped)

সেগমেন্টেশন ফল্ট

সেগমেন্টেশন ফল্ট বা কোর ডাম্প ঘটে যখন একটি প্রোগ্রাম মেমরি অবস্থানগুলি অ্যাক্সেস করার চেষ্টা করে যা এটির অন্তর্গত নয়। নিম্নলিখিত প্রোগ্রামে, পয়েন্টার স্ট্রিস অনির্দিষ্টকালের জন্য মেমরি বৃদ্ধি এবং যোগ করা।

উদাহরণ

#include <iostream>
int main(){
   char *str;
   char name[]="iostream";
   str=name;
   while(1)
      (*str++)='a';
}

আউটপুট

Segmentation fault (core dumped)

মেমরি লিকস

মেমরি ফাঁস ঘটে যখন গতিশীলভাবে বরাদ্দ করা মেমরি কখনও ডিললোকেট করা হয় না। মেমরি মুক্ত করা আবশ্যক যখন এটি আর ব্যবহার করা হয় না। যদি আমরা ক্রমাগত মেমরি বারবার বরাদ্দ করি, তাহলে সময়ের সাথে সাথে এই মেমরি লিক বাড়বে এবং শেষ পর্যন্ত প্রোগ্রামটি ক্র্যাশ হয়ে যাবে। নিচের মত দুর্বল কোডের পুনরাবৃত্তি মেমরি লিক-

ঘটায়

উদাহরণ

#include <iostream>
int main(){
    int *node;
   node = (int *) malloc(9999999);
   // free(node);
}

  1. সি প্রোগ্রামে দেওয়া ম্যাট্রিক্সে শূন্যের সংখ্যা অনুসারে সাজানো কলামগুলির প্রিন্ট সূচক।

  2. C++ প্রোগ্রাম ন্যূনতম সংখ্যক ক্রিয়াকলাপ গণনা করে যা সংখ্যা n থেকে 1 করতে হবে

  3. প্রতিটি সিঁড়িতে সিঁড়ির সংখ্যা এবং ধাপের সংখ্যা গণনা করার জন্য C++ প্রোগ্রাম

  4. ডোডেকাগনের সংখ্যা গণনা করার জন্য C++ প্রোগ্রাম আমরা d এর আকার তৈরি করতে পারি