• 0
مبتدى بايثون

سؤال حول تخزين رقم بعد الخروج من loop

سؤال

السلام عليكم ورحمة الله وبركاته

 

لدي الكود التالي يحتوي على for loop تقوم بإجراء عملية حسابية ثم يقوم بطباعة في كل مرة بعد عدة مرات من تكرار الطباعة سوف يكون الناتج 532815 لكن هذا الناتج لأن يظهر أذا كنت كتبت جملة الطباعة خارج for loop بل سوف يكون الناتج فقط 15

 

السؤال كيف أقوم بحفظ الناتج 532815 في متغير بحيث يمكنني استخدامه خارج عملية التكرار بحيث أذا أستخدمت جملة الطباعة خارج for loop سوف يعطي نفس ناتج عند الاستخدام داخل loop

    public static void main(String[] args) {int a =51;int x=2;int y=0;for (;a>=10;) {y=a+x; a=a-a/2; a=a;  System.out.print(y);}        }   }

ناتج الكود السابق لا يساوي ناتج  الكود التالي , المطلوب هو معرفة كيف يمكنني تخزين ناتج الكود السابق في متغير بحيث يمكنني طباعة و أستخدام ذلك المتغير خارج for loop

public static void main(String[] args) {int a =51;int x=2;int y=0;for (;a>=10;) {y=a+x; a=a-a/2; a=a;}      System.out.print(y);    }   }

شكراً

تم تعديل بواسطه مبتدى بايثون
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

4 إجابة على هذا السؤال .

  • 0

لا لا يا عزيزي الناتج لن ولم يتغير انما انت تستخدم جملة الطباعة بشكل خاطى

public static void main(String[] args) {int a =51;int x=2;int y=0;while (a>=10){y=a+x;a=a-a/2;System.out.println(y);}System.out.println(y);      }

هذا الكود بعد التعديل

انت عندما تستخدم جملة الطباعة داخل الحلقة loop  فهي سوف تقوم بطباعة النتيجة كل مرة ولكنك استخدمت print اي طبع النتائج في سطر واحد فيظهر لك 532815  لكنها ليست قيمة المتغير y  النهائية انما هي قيمة المتغير في كل مرة تجري عليها حسابات الحلقة loop سواء while  او for  ويقوم بطبع النتيجة لدى كل مرور بالحلقة ولان الحلقة سوف يتم تنفيذها 3 مرات فسيكون هناك ثلاثة نتائج الاولى 53 والثانية 28 والثالثة 15 ولانهم يطتبوا في سطر واحد فسيكتبون في سطر واحد وهذا ما ولد الشك والريبة لديك انما لو استخدمت println اي كتابة كل نتيجة في سطر فعندها سيطبع النتائج الثلاثة كل في سطر واحد

وبكل الأحوال النتيجة النهائية للمتغير y لن تتغير مهما كانت جملة الطباعة او حتى لو لم تستخدم جملة الطباعة سوف تكون النتيجة النهائية هي 15

 

ملاحظات :

الأفضل بالشكل الذي استخدمته استخدام الـ while بدل الـ for  اللهم الا اذا كان استخدامك للـ for بشكلها الأمثل يعني هكذا

for(int x =0; x >=10; x++)

يعني يتم تعريف المتغير ووضع الشرط والعملية التي سوف تحدد التغير الذي سوف يحدث للمتغير سواء زيادة او نقصان او خلاف ذلك

كنك في مثالك لم تقم سوى بوضع الشرط وبدون تعريف المتغير او حتى تحديد التغير الذي سوف يحصل للمتغير لدى كل مرة يعاد فيها تنفيذ العملية لذلك الأفضل استخدام الـ while

طبعا بالنهاية النتيجة سوف تكون أفضل لكنها مجرد نصيح لتنسيق الكود ليكون اسهل للقراءة والصيانة

 

الملاحظة الثانية وهي 

انه في كودك قمت بكتابة الشرط التالي  a=a وهو ما لا فائدة منه ولا يقوم باي دور او تغير او اي شيء فقمت بحذفه

 

اتمنى لك التوفيق والنجاح

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أشكرك أخي العزيز على التوضيح

 

لكن أنا أريد الاحتفاظ بهذه القيمة 532815 في متغير أنا أعرف بأن هذه القيمة ليست قيمة واحد بل هي مكونة من ثلاث خانات 53 و 28 و 15 لكن أنا أريدهم أن يكونوا في شكل 532815 ثم أقوم بتخزين هذه القيمة كقيمة واحدة في متغير واحد بحيث أستطيع أجراء عمليات حسابية على هذه كعدد واحد

 

شكراً لك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

حسناً اخي رغم ان طلبك غريب لكن هذا هو الحل

	public static void main(String[] args) {		int a =51;		int x=2;		int y=0;		String temp= "";				while (a>=10){		y=a+x;		a=a-a/2;		temp = temp + String.valueOf(y);		System.out.println(temp);				}		int result = Integer.parseInt(temp);		System.out.println( "The final Result " + result);      		}

المتغير result  من نوع int  يحوي القيمة التي تريدها

 

بالتوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جزاك الله خير وشكراً لك على المساعدة

 

أسأل الله لك التوفيق في الدنيا و الآخرة

 

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .