Module: (C++) زیر برنامه ها: رویه ها و توابع - 1


Problem

12/12

تغییر استدلال ها

Theory Click to read/hide

وظیفه
روشی بنویسید که مقادیر دو متغیر را تعویض کند.

ویژگی های این کار این است که ما به تغییرات ایجاد شده در رویه نیاز داریم تا به برنامه فراخوانی شناخته شود.

بیایید سعی کنیم روال را به این صورت بنویسیم: void Swap (int a, int b) // با چنین توصیفی از پارامترهای رویه، { // مقادیر آرگومان ها (x و y) کپی خواهند شد، int c; // متغیرهای a و b متغیرهای مستقلی هستند که به x و y مرتبط نیستند c = a; a = b; b=c; } main() { int x=1, y=2; مبادله (x, y); // مقادیر متغیرهای x و y (آگومان ها) در پارامترهای a و b کپی می شوند. cout << "x=" << x<< "، y=" << y; // x=1، y=2 } اگر این برنامه را اجرا کنید، می بینید که مقادیر متغیرهای x و y تغییر نکرده است. برای اینکه پارامترها مقادیر آرگومان‌ها را تغییر دهند، باید از عبور داده‌ها با مرجع استفاده کنید. برای انجام این کار، پس از نام نوع داده در سربرگ زیربرنامه باید علامت & ("ampersand") را قرار دهید. void Swap ( int & a، int & b ) // اکنون متغیرهای a و b آدرس متغیرهای x و y را در حافظه دریافت می کنند. { int c; c = a; a = b; b=c; } استفاده: اگر یک آرگومان را با مرجع ارسال می‌کنید، آنگاه فقط نام متغیر (نه یک عدد و نه یک عبارت حسابی) می‌تواند در این مکان هنگام فراخوانی رویه باشد!< br />
روشی را مانند این فراخوانی نکنید: تعویض (x، 4 ); تعویض (5+x، y);

Problem

رویه ای بنویسید که مقادیر دو متغیر را عوض کند. سعی کنید آن را بدون استفاده از متغیر اضافی بنویسید. در صورت وجود هرگونه اشتباه را تصحیح کنید.