সি++ এ 'জাম্প টু কেস লেবেল ক্রস ইনিশিয়ালাইজেশন' ত্রুটি কীভাবে ঠিক করবেন

Si E Jampa Tu Kesa Lebela Krasa Inisiyala Ijesana Truti Kibhabe Thika Karabena



সুইচ স্টেটমেন্ট হল লং if-else-if স্টেটমেন্টের জন্য সর্বোত্তম বিকল্প, কারণ এটি কোডের দৈর্ঘ্য কমায় এবং আরও ভালো স্পষ্টতা আনে। মানটি সুইচ স্টেটমেন্ট ব্যবহার করে মূল্যায়ন করা হয় এবং প্রতিটি কেস লেবেলের মানের সাথে পরীক্ষা করা হয়। যদি মিল পাওয়া যায়, কোডটি বিরতির আগে কার্যকর হয়, অন্যথায়, এটি 'ডিফল্ট' এর পরে কোডটি কার্যকর করে।

C++ এ 'জাম্প টু কেস লেবেল ক্রস ইনিশিয়ালাইজেশন' ত্রুটির কারণ কী

সুইচ স্টেটমেন্ট ব্যবহার করার সময়, C++ এ একটি সাধারণ ত্রুটি লক্ষ্য করা যেতে পারে তা হল 'জাম্প টু কেস লেবেল ক্রস ইনিশিয়ালাইজেশন'। এই ত্রুটিটি সাধারণত কেস লেবেলের মধ্যে একটি ভেরিয়েবলের ভুল ঘোষণার কারণে প্রদর্শিত হয়। C++ এ 'জাম্প টু কেস লেবেল ক্রস ইনিশিয়ালাইজেশন' ত্রুটি প্রদর্শনের জন্য এখানে একটি উদাহরণ প্রোগ্রাম রয়েছে:







# অন্তর্ভুক্ত করুন
# অন্তর্ভুক্ত
নামস্থান std ব্যবহার করে;
void menu_display ( ) ;
int choice_menu ( ) ;
void get_two_operands ( int এবং n, int এবং মি ) ;
int যোগ ( int n, int m ) ;
int বিয়োগ ( int n, int m ) ;


int প্রধান ( )
{
int নির্বাচন;

করতে
{
মেনু_প্রদর্শন ( ) ;
নির্বাচন = পছন্দ_মেনু ( ) ;
int x, y;
সুইচ ( নির্বাচন )
{
মামলা 1 :

get_two_operands ( x,y ) ;
int যোগফল = যোগ করুন ( x,y ) ;
cout << এক্স << '+' << এবং << '=' << যোগফল << endl;

বিরতি ;

মামলা 2 :

get_two_operands ( x, y ) ;

int পার্থক্য = বিয়োগ ( x,y ) ;
cout << এক্স << '-' << এবং << '=' << পার্থক্য << endl;

বিরতি ;
ডিফল্ট:;
}

} যখন ( নির্বাচন ! = 3 ) ;

cout << 'প্রোগ্রাম সমাপ্ত' << endl;

ফিরে 0 ;
}


void menu_display ( )
{
cout << endl;
cout << 'বেসিক ক্যালকুলেটর' << endl;
cout << ' 1. যোগ করুন (+)' << endl;
cout << ' 2. বিয়োগ (-)' << endl;
cout << '3. প্রস্থান করুন' << endl;

cout << endl;
}

int get_menu_choice ( )
{
int পছন্দ;
cout << 'অবৈধ পছন্দ আবার চেষ্টা করুন:' ;
খাওয়া >> নির্বাচন;

যখন ( ( ( নির্বাচন < 1 ) || ( নির্বাচন > 3 ) ) && ( ! cin.fail ( ) ) )
{
cout << ':' ;
খাওয়া >> নির্বাচন;
}
যদি ( cin.fail ( ) )
{
cout << 'ত্রুটি ' << endl;
প্রস্থান ( 1 ) ;
}
ফিরে নির্বাচন;
}

void get_two_operands ( int এবং n, int এবং মি )
{
cout << 'দুটি অপারেন্ড দিন' << endl;
cout << 'প্রথম অপারেন্ড:' ;
খাওয়া >> n;
cout << 'দ্বিতীয় অপারেন্ড :' ;
খাওয়া >> মি;

}


int যোগ ( int n, int m )
{
ফিরে ( n + মি ) ;
}

int বিয়োগ ( int n, int m )
{
ফিরে ( n - মি ) ;
}


যখন এই প্রোগ্রামটি কার্যকর করা হয়, এটি একটি 'জাম্প টু কেস লেবেল' ত্রুটি প্রদান করে। এটি একটি সংকলন ত্রুটি.



এই ত্রুটিটি আবির্ভূত বন্ধনী ছাড়াই একটি কেস স্টেটমেন্টের ভিতরে ভেরিয়েবলের ঘোষণার কারণে দেখা দেয়। কেসটি কেবল একটি লেবেল, তাই এটির অধীনে লেখা পরামিতিগুলির প্রাপ্যতা সীমাবদ্ধ করার ক্ষমতা নেই। উপরের কোডটি কার্যকর করা হলে কেস 1 এর ভেরিয়েবলগুলি কেস 2 দ্বারা অ্যাক্সেস করা যেতে পারে এবং এটি ত্রুটির দিকে অগ্রসর না হওয়া হিসাবে প্রদর্শিত হবে।







সি++ এ 'জাম্প টু কেস লেবেল ক্রস ইনিশিয়ালাইজেশন' ত্রুটি কীভাবে ঠিক করবেন

কেস ব্লকের ভিতরে বন্ধনী ব্যবহার করে এই ত্রুটিটি ঠিক করা যেতে পারে, যা একটি আবদ্ধ সুযোগ তৈরি করবে এবং বিভিন্ন কেস ব্লকের পরামিতিগুলি হেরফের হবে না।

ডিবাগ করা কোড

উপরের ত্রুটির জন্য এটি ডিবাগ করা কোড। বন্ধনীর মধ্যে কেসের অধীনে ডেটা আবদ্ধ করে ত্রুটিটি সংশোধন করা হয়েছে:



# অন্তর্ভুক্ত করুন
# অন্তর্ভুক্ত
নামস্থান std ব্যবহার করে;
void menu_display ( ) ;
int choice_menu ( ) ;
void get_two_operands ( int এবং n, int এবং মি ) ;
int যোগ ( int n, int m ) ;
int বিয়োগ ( int n, int m ) ;


int প্রধান ( )
{
int নির্বাচন;

করতে
{
মেনু_প্রদর্শন ( ) ;
নির্বাচন = পছন্দ_মেনু ( ) ;
int x, y;
সুইচ ( নির্বাচন )
{
মামলা 1 :
{
get_two_operands ( x,y ) ;
int যোগফল = যোগ করুন ( x,y ) ;
cout << এক্স << '+' << এবং << '=' << যোগফল << endl;
}
বিরতি ;
মামলা 2 :
{
get_two_operands ( x,y ) ;
int পার্থক্য = বিয়োগ ( x,y ) ;
cout << এক্স << '-' << এবং << '=' << পার্থক্য << endl;
}
বিরতি ;
ডিফল্ট:;
}

} যখন ( নির্বাচন ! = 3 ) ;

cout << 'প্রোগ্রাম সমাপ্ত' << endl;

প্রত্যাবর্তন 0 ;
}


void menu_display ( )
{
cout << endl;
cout << 'বেসিক ক্যালকুলেটর' << endl;
cout << ' 1. যোগ করুন (+)' << endl;
cout << ' 2. বিয়োগ (-)' << endl;
cout << '3. প্রস্থান করুন' << endl;
cout << endl;
}

int choice_menu ( )
{
int নির্বাচন;
cout << 'অপারেশন চয়ন করুন:' ;
খাওয়া >> নির্বাচন;

যখন ( ( ( নির্বাচন < 1 ) || ( নির্বাচন > 3 ) ) && ( ! cin.fail ( ) ) )
{
cout << 'অবৈধ পছন্দ আবার চেষ্টা করুন:' ;
খাওয়া >> নির্বাচন;
}
যদি ( cin.fail ( ) )
{
cout << 'ত্রুটি' << endl;
প্রস্থান ( 1 ) ;
}
প্রত্যাবর্তন নির্বাচন;
}

void get_two_operands ( int এবং n, int এবং মি )
{
cout << 'দুটি অপারেন্ড দিন' << endl;
cout << 'প্রথম অপারেন্ড:' ;
খাওয়া >> n;
cout << 'দ্বিতীয় অপারেন্ড :' ;
খাওয়া >> মি;

}


int যোগ ( int n, int m )
{
প্রত্যাবর্তন ( n + মি ) ;
}

int বিয়োগ ( int n, int m )
{
প্রত্যাবর্তন ( n - মি ) ;
}


কোডের কেস ব্লকে বন্ধনী ব্যবহার করার পরে, ত্রুটি সংশোধন করা হয়েছে এবং আউটপুট প্রদর্শিত হয়:

উপসংহার

সুইচ স্টেটমেন্ট হল লং if-else-if স্টেটমেন্টের জন্য সর্বোত্তম বিকল্প, কারণ এটি কোডের দৈর্ঘ্য কমায় এবং আরও ভালো স্পষ্টতা আনে। সুইচ স্টেটমেন্ট ব্যবহার করার সময়, C++ এ একটি সাধারণ সংকলন ত্রুটি লক্ষ্য করা যেতে পারে যা হল 'জাম্প টু কেস লেবেল ক্রস ইনিশিয়ালাইজেশন'। এই ত্রুটিটি সাধারণত কেস লেবেলের মধ্যে একটি ভেরিয়েবলের ভুল ঘোষণার কারণে প্রদর্শিত হয়। কেস ব্লকের অধীনে ডেটার চারপাশে বন্ধনী বন্ধনী ব্যবহার করে এটি ঠিক করা যেতে পারে।