C++ میں 'جمپ ٹو کیس لیبل کراس انیشیلائزیشن' کی خرابی کو کیسے ٹھیک کریں۔

C My Jmp W Kys Lybl Kras Anyshylayzyshn Ky Khraby Kw Kys Yk Kry



سوئچ اسٹیٹمنٹ طویل if-else-if اسٹیٹمنٹ کے لیے بہترین متبادل ہے، کیونکہ یہ کوڈ کی لمبائی کو کم کرتا ہے اور بہتر وضاحت لاتا ہے۔ قیمت کا اندازہ سوئچ اسٹیٹمنٹ کا استعمال کرتے ہوئے کیا جاتا ہے اور ہر کیس لیبل کی اقدار کے خلاف جانچا جاتا ہے۔ اگر میچ پایا جاتا ہے، تو کوڈ وقفے سے پہلے عمل میں آتا ہے، بصورت دیگر، یہ کوڈ کو 'ڈیفالٹ' کے بعد عمل میں لاتا ہے۔

C++ میں 'جمپ ٹو کیس لیبل کراس انیشیلائزیشن' کی خرابی کی کیا وجہ ہے؟

سوئچ اسٹیٹمنٹ کا استعمال کرتے ہوئے، C++ میں ایک عام خامی جو دیکھی جا سکتی ہے وہ ہے 'جمپ ٹو کیس لیبل کراس انیشیلائزیشن'۔ یہ غلطی عام طور پر کیس لیبل کے اندر متغیر کے غلط اعلان کی وجہ سے ظاہر ہوتی ہے۔ C++ میں 'جمپ ٹو کیس لیبل کراس انیشیلائزیشن' کی خرابی کو ظاہر کرنے کے لیے یہاں ایک مثالی پروگرام ہے:







# شامل کریں
#include
نام کی جگہ کا استعمال کرتے ہوئے std؛
void menu_display ( ) ;
int choice_menu ( ) ;
void get_two_operands ( int اور n، int اور m ) ;
int شامل کریں ( int n، int m ) ;
int منہا ( int n، int m ) ;


اہم int ( )
{
int سلیکشن؛

کیا
{
مینو_ڈسپلے ( ) ;
انتخاب = انتخاب_مینو ( ) ;
int x, y;
سوئچ ( انتخاب )
{
معاملہ 1 :

get_to_operands ( x,y ) ;
int رقم = شامل کریں۔ ( x,y ) ;
cout << ایکس << '+' << اور << '=' << رقم << endl

توڑنا ;

معاملہ 2 :

get_to_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 اور m )
{
cout << 'دو کام دیں' << endl
cout << 'پہلا آپریشن:' ;
کھانا >> n
cout << 'دوسرا کام:' ;
کھانا >>

}


int شامل کریں ( int n، int m )
{
واپسی ( n + m ) ;
}

int منہا ( int n، int m )
{
واپسی ( n - m ) ;
}


جب یہ پروگرام عمل میں آتا ہے، تو یہ 'جمپ ٹو کیس لیبل' کی خرابی لوٹاتا ہے۔ یہ تالیف کی غلطی ہے۔



یہ خرابی کسی کیس سٹیٹمنٹ کے اندر انکلونگ بریکٹ کے بغیر متغیر کے اعلان کی وجہ سے ظاہر ہوتی ہے۔ کیس صرف ایک لیبل ہے، لہذا اس کے نیچے لکھے گئے پیرامیٹرز کی دستیابی کو محدود کرنے کی صلاحیت نہیں ہے۔ جب مندرجہ بالا کوڈ پر عمل کیا جاتا ہے تو کیس 1 کے متغیرات تک کیس 2 کے ذریعے رسائی حاصل کی جا سکتی ہے، اور یہ غیر شروع کے طور پر ظاہر ہو جائے گا جس کی وجہ سے غلطیاں پیدا ہوں گی۔







C++ میں 'جمپ ٹو کیس لیبل کراس انیشیلائزیشن' کی خرابی کو کیسے ٹھیک کریں۔

اس خرابی کو کیس بلاک کے اندر بریکٹ استعمال کرکے ٹھیک کیا جا سکتا ہے، جو ایک منسلک دائرہ کار بنائے گا اور مختلف کیس بلاکس کے پیرامیٹرز میں ہیرا پھیری نہیں ہوگی۔

ڈیبگ شدہ کوڈ

یہ اوپر کی خرابی کے لیے ڈیبگ شدہ کوڈ ہے۔ بریکٹ کے اندر کیسز کے تحت ڈیٹا کو بند کر کے غلطی کو ٹھیک کیا جاتا ہے:



# شامل کریں
#include
نام کی جگہ کا استعمال کرتے ہوئے std؛
void menu_display ( ) ;
int choice_menu ( ) ;
void get_two_operands ( int اور n، int اور m ) ;
int شامل کریں ( int n، int m ) ;
int منہا ( int n، int m ) ;


اہم int ( )
{
int سلیکشن؛

کیا
{
مینو_ڈسپلے ( ) ;
انتخاب = انتخاب_مینو ( ) ;
int x, y;
سوئچ ( انتخاب )
{
معاملہ 1 :
{
get_to_operands ( x، y ) ;
int رقم = شامل کریں۔ ( x، y ) ;
cout << ایکس << '+' << اور << '=' << رقم << endl
}
توڑنا ;
معاملہ 2 :
{
get_to_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 اور m )
{
cout << 'دو کام دیں' << endl
cout << 'پہلا کام:' ;
کھانا >> n
cout << 'دوسرا کام:' ;
کھانا >>

}


int شامل کریں ( int n، int m )
{
واپسی ( n + m ) ;
}

int منہا ( int n، int m )
{
واپسی ( n - m ) ;
}


کوڈ کے کیس بلاکس میں انکلوزنگ بریکٹ کے استعمال کے بعد، غلطی کو ٹھیک کر دیا گیا ہے اور آؤٹ پٹ ظاہر ہوتا ہے:

نتیجہ

سوئچ اسٹیٹمنٹ طویل if-else-if اسٹیٹمنٹ کے لیے بہترین متبادل ہے، کیونکہ یہ کوڈ کی لمبائی کو کم کرتا ہے اور بہتر وضاحت لاتا ہے۔ سوئچ اسٹیٹمنٹ کا استعمال کرتے ہوئے، C++ میں ایک عام تالیف کی غلطی جو دیکھی جا سکتی ہے وہ ہے 'جمپ ٹو کیس لیبل کراس انیشیلائزیشن'۔ یہ غلطی عام طور پر کیس لیبل کے اندر متغیر کے غلط اعلان کی وجہ سے ظاہر ہوتی ہے۔ کیس بلاکس کے تحت ڈیٹا کے ارد گرد منسلک بریکٹ استعمال کرکے اسے ٹھیک کیا جاسکتا ہے۔