ایک فنکشن C ++ میں ایک صف کو پاس کرنا۔

Passing An Array Function C



ایک صف ایک ہی ڈیٹا ٹائپ کے عناصر کا ایک گروپ ہے۔ افعال میں یا تو مرکزی پروگرام میں یا اس کے باہر ، صفوں پر بہت سے فنکشنز انجام دیے جاتے ہیں۔ C ++ میں ، افعال کے معاملے میں ، ہمیں ان کو پاس کرنے کی ضرورت ہے۔ یہ دلائل کے طور پر پیرامیٹرز کے ذریعے کیا جاتا ہے۔ یہ دلائل مختلف طریقوں سے ہوسکتے ہیں ، یا تو بڑی صفیں یا پوائنٹر صف کے ذریعے۔ اس سبق میں ، ہم افعال کے مختلف پیرامیٹرز کا استعمال کرتے ہوئے صف کی منتقلی کے کچھ بڑے پہلوؤں کا احاطہ کریں گے۔

نحو۔

[واپسی۔قسم] [کے نامفنکشن] (ڈیٹاقسمصف نام[صفسائز])

{

فنکشنجسم

}

مثال 1۔

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









مرکزی تقریب کی طرف بڑھتے ہوئے ، ہم اس کے سائز اور اقدار کے ساتھ ایک صف کا اعلان کرتے ہیں۔ جیسا کہ ہمیں فنکشن کو کال کرنا ہے۔ تو طریقہ یہ ہے کہ ہم فنکشن کا نام سرنی کے نام کے ساتھ پیرامیٹر میں بطور دلیل لکھتے ہیں۔ ہم نے صف کے سائز کی وضاحت نہیں کی ہے۔



ڈسپلے(نشانات)؛

پیرامیٹر میں دلیل صف کے میموری ایڈریس کا مطلب ہے۔ فنکشن کے ہیڈر کے پیرامیٹر میں ، int m [7] int *m میں بدل جاتا ہے۔ اس میں وہی پتہ شامل ہے جو اصل صف کے طور پر ہے۔ جب ہم فنکشن کے جسم میں m [5] استعمال کرتے ہیں ، تو ہم اصل صف میں ہیرا پھیری کرنے جا رہے ہیں۔





باطل ڈسپلے۔(int m[] )

لینکس آپریٹنگ سسٹم میں ، ٹرمینل کے ذریعے آؤٹ پٹ حاصل کرنے کے لیے کچھ ضروریات انسٹال کرنے کی ضرورت ہوتی ہے۔ اسے کمانڈ پرامپٹ ٹرمینل میں کوڈ کو مرتب کرنے اور اس پر عمل کرنے کے لیے ایک مرتب کی ضرورت ہے۔ G ++ تالیف کے لیے C ++ میں استعمال ہوتا ہے۔



$جی ++ یاcode3 code3.c

$./کوڈ 3

جہاں –o کو سورس فائل سے آؤٹ پٹ فائل میں آؤٹ پٹ اسٹور کرنے کے لیے استعمال کیا جاتا ہے۔

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

مثال 2۔

پیرامیٹر سے گزرنے والی صف کے حوالے سے ایک اور مثال فنکشن میں کثیر جہتی صف کو منتقل کرنا ہے۔ ایک دو جہتی صف (2d) یہاں استعمال ہوتی ہے۔ مرکزی تقریب میں ، ہمیں ایک صف شروع کرنے کی ضرورت ہے۔

انٹ صف۔[قطار][کالم]

2d صف کی ابتداء میں صف اور کالم شامل ہیں۔ اور ان کا آرڈر پورے پروگرام میں برقرار رکھا جائے۔ 2d صف کو بریکٹ میں دو نمبروں کے ساتھ شروع کیا گیا ہے۔ جیسا کہ ہم نے ابتداء میں 2 کالم بیان کیے ہیں۔

ڈسپلے(ایک پر)؛

ہم صرف پیرامیٹر میں صف کا نام بطور دلیل استعمال کریں گے۔

اب ہم ڈسپلے فنکشن کا کام دیکھیں گے۔ جیسے ہی فنکشن شروع ہوتا ہے ، مین پروگرام کے ذریعے فنکشن کال کے ذریعے منظور ہونے والی ایک صف کو قبول کرنے میں ایک سرنی متغیر کی ضرورت ہوتی ہے۔

باطل ڈسپلے۔(int n[][] )

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

ہم ایک ہی مرتب کو استعمال کرکے آؤٹ پٹ دیکھ سکتے ہیں۔ آپ نتائج دیکھ سکتے ہیں کہ ہر قدر قطار اور کالم نمبر کے ساتھ الگ الگ دکھائی جاتی ہے۔

مثال 3۔

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

مرکزی پروگرام سے شروع کرتے ہوئے ، ایک صف کو اقدار کے ساتھ شروع کیا جاتا ہے۔

اوسط = اوسط حاصل کریں۔(بقیہ،)؛

نتیجہ اوسط متغیر میں محفوظ کیا جائے گا۔ صرف صف کا نام پاس کرنے کے بجائے ، سرنی کا سائز بھی پیرامیٹر میں شامل کیا جاتا ہے۔

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

اب ہم آؤٹ پٹ دیکھیں گے۔ یہ قدر تصویر کے ذریعے نظر آتی ہے فنکشن سے حاصل کی جاتی ہے۔

مثال 4۔

یہ مثال صف میں زیادہ سے زیادہ تعداد کے تعین سے متعلق ہے ، درحقیقت دو صفوں سے۔ یہاں ہم مرکزی پروگرام میں دو صفوں کو شروع کرتے ہیں۔ دونوں صفوں کو الگ الگ فنکشن کالز میں فنکشن میں منتقل کیا جاتا ہے۔

پرنٹ میکس۔(arr1)؛

پرنٹ میکس۔(arr2)؛

جہاں پرنٹ میکس فنکشن کا نام ہے اور arr سرنی ہے۔ نتیجہ فنکشن سے واپس نہیں آئے گا اور وہاں دکھایا جائے گا۔ لوپ دونوں صفوں میں زیادہ سے زیادہ تعداد کا حساب لگائے گا۔ if-statement استعمال کیا جاتا ہے for لوپ کے اندر۔ فنکشن کا ہیڈر ہے:

باطل پرنٹ میکس۔(int پہنچ[])

چونکہ دونوں صفوں میں مختلف اقدار ہیں ، دونوں کے نتائج مختلف ہوں گے۔

مثال 5۔

یہ مثال پیرامیٹرز سے گزرنے والی ہر قسم کی صفوں کا خلاصہ ہے۔ یہ سائز ، غیر سائز یا پوائنٹر صفیں ہوسکتی ہیں۔ ہم ان پر ایک ایک کر کے غور کریں گے۔

مرکزی پروگرام میں ، ہر فنکشن کو پہلے قرار دیا جاتا ہے۔ آپ ان کے اعلان میں فرق کی نشاندہی کر سکتے ہیں۔

خلاصہ 1۔(int tmp[])؛

خلاصہ 2۔(int tmp[])؛

خلاصہ 3۔(int*tmp)؛

یہ تین صفیں اس بات کی عکاسی کرتی ہیں کہ فنکشن میں ان پیرامیٹرز کے ساتھ صفوں کو پاس کیا جاسکتا ہے۔

فنکشن شروع کرنے کے بعد ، ہمارے پاس مرکزی پروگرام ہے جس میں صف کا اعلان کیا گیا ہے۔ پچھلی مثال کے برعکس ، ایک صف کو دو کے بجائے شروع کیا گیا ہے ، لیکن یہ تین مختلف طریقوں سے گزرتا ہے۔ اب ہم یہاں کی گئی فنکشن کالز دیکھیں گے۔

کل = رقم 1۔(فروخت)؛

کل = رقم 2۔(فروخت)؛

کل = سم 3(فروخت)؛

آؤٹ پٹ مین فنکشن میں ظاہر ہوتا ہے ، لہذا ایک متغیر کو فنکشن کے ذریعہ لوٹی گئی قیمت کو قبول کرنے کا اعلان کیا جاتا ہے۔ تینوں فنکشن کالز سے ، آپ دیکھ سکتے ہیں کہ یہاں پیرامیٹرز ایک جیسے ہیں۔ ہر صف میں صرف ایک صف کا نام ہوتا ہے۔ لیکن اس فنکشن کے پیرامیٹر جو سرنی کو قبول کرتے ہیں وہ مختلف ہیں۔

تینوں افعال کا اندرونی جسم ایک جیسا ہے ، جیسا کہ تمام نمبروں کا مجموعہ فار لوپ کے استعمال سے شمار کیا جاتا ہے۔ طریقہ کار اور صف کی اقدار یکساں ہیں صرف افعال کے پیرامیٹرز کے درمیان امتیازی سلوک ہے۔ لہذا ، یہ ثابت ہوا کہ ہم یا تو ایک صف کو قبول کرنے کے لیے مختلف طریقے استعمال کر سکتے ہیں یا ایک ہی فعالیت انجام دے سکتے ہیں ، اور جواب ایک ہی ہے۔ ہم آؤٹ پٹ چیک کرکے اس کی تصدیق کر سکتے ہیں۔ اسی تالیف کے طریقہ کار کو استعمال کرتے ہوئے ، ہمیں نیچے دی گئی تصویر میں دکھایا گیا آؤٹ پٹ ملے گا۔

آپ دیکھ سکتے ہیں کہ جواب تینوں افعال کے لیے ایک جیسا ہے۔

نتیجہ

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