Module: (C ++) الروتينات الفرعية: الإجراءات والوظائف - 1


Problem

12/12

تغيير الحجج

Theory Click to read/hide

مهمة اكتب إجراء يتبادل قيم متغيرين.

خصوصيات هذه المهمة هي أننا بحاجة إلى التغييرات التي تم إجراؤها في الإجراء حتى تصبح معروفة للبرنامج المتصل.

دعنا نحاول كتابة الإجراء مثل هذا: مبادلة باطلة (int a، int b) // مع مثل هذا الوصف لمعلمات الإجراء ، {// سيتم نسخ قيم الوسيطات (س وص) ، كثافة العمليات ج ؛ // المتغيرات a و b هي متغيرات مستقلة لا علاقة لها بـ x و y ج = أ ؛ أ = ب ؛ ب = ج ؛ } رئيسي() { int س = 1 ، ص = 2 ؛ المبادلة (س ، ص) ؛ // قيم المتغيرات x و y (الوسائط) يتم نسخها إلى المعلمات a و b كوت & lt؛ & lt؛ & quot؛ س = & quot؛ & lt؛ & lt؛ x & lt؛ & lt؛ & quot ؛، y = & quot؛ & lt؛ & lt؛ ذ ؛ // س = 1 ، ص = 2 } إذا قمت بتشغيل هذا البرنامج ، يمكنك أن ترى أن قيم المتغيرات x و y لم تتغير. لكي تغير المعلمات قيم الوسيطات ، يجب عليك استخدام تمرير البيانات حسب المرجع. & nbsp؛ للقيام بذلك ، بعد اسم نوع البيانات في رأس الروتين الفرعي ، يجب عليك وضع العلامة & nbsp؛ & amp؛ ("علامة العطف"). مبادلة باطلة (int & amp؛ a، int & amp؛ b) // الآن يحصل المتغيران a و b على عناوين المتغيرين x و y في الذاكرة { كثافة العمليات ج ؛ ج = أ ؛ أ = ب ؛ ب = ج ؛ } الاستخدام: إذا قمت بتمرير وسيطة من خلال المرجع ، فيمكن أن يكون اسم المتغير فقط ( ليس رقمًا وليس تعبيرًا حسابيًا ) في هذا المكان عند استدعاء الإجراء! < ر />
لا تطلب إجراءً مثل هذا: Swap (x، 4 ) ؛ مبادلة ( 5 + x ، y)؛

Problem

اكتب إجراء يتبادل قيم متغيرين. حاول كتابتها دون استخدام متغير إضافي. صحح أي أخطاء إن وجدت.
نبسب ؛