استعمل الخوارزم.وسائط.شاشة؛

(۩۩
def bubble_sort(lst) -> list:
    for element in lst:
        for element_idx in range(len(lst)):
            if element_idx < (len(lst) - 1):
                if lst[element_idx] > lst[element_idx + 1]:
                    temp = lst[element_idx + 1]
                    lst[element_idx + 1] = lst[element_idx]
                    lst[element_idx] = temp
    return lst		
۩۩)


الدالة رتب (مصفوفة  ۢصحيح) {
	المتغير الفهرس_الخارجي صحيح طبيعي؛
	المتغير الفهرس_الداخلي صحيح طبيعي؛
	لاجل 	الفهرس_الخارجي := 0؛ الفهرس_الخارجي < طول(مصفوفة)؛ الفهرس_الخارجي := الفهرس_الخارجي + 1 {
		لاجل الفهرس_الداخلي := 0؛ الفهرس_الداخلي < طول(مصفوفة)؛ الفهرس_الداخلي:= الفهرس_الداخلي + 1 {
			اذا الفهرس_الداخلي < (طول(مصفوفة) + 1) {
				اذا مصفوفة[الفهرس_الداخلي]> مصفوفة[الفهرس_الداخلي + 1] {
					المتغير المتغير_المؤقت صحيح := مصفوفة[الفهرس_الداخلي + 1]؛
					مصفوفة[الفهرس_الداخلي + 1] := مصفوفة[الفهرس_الداخلي]؛
					مصفوفة[الفهرس_الداخلي] := المتغير_المؤقت؛					
				} 
			} 
		}   
	} 
}		

الدالة الاصل () {
	المتغير أرقام [] صحيح := [5، 4، -2، 8، 9، 0]؛
	المتغير فهرس  صحيح طبيعي؛
	
	اكتب("قبل الترتيب: /س")؛	
	لاجل فهرس := 0؛ فهرس < طول(أرقام)؛ فهرس := فهرس + 1  {
		اكتب(أرقام[فهرس])؛
		اكتب('/س')؛				
	}
	
	رتب(ارقام)؛
	
	اكتب("بعد الترتيب: /س")؛	
	لاجل فهرس := 0؛ فهرس < طول(أرقام)؛ فهرس:= فهرس + 1 {
		اكتب(أرقام[فهرس])؛
		اكتب('/س')؛				
	}			
			
}

لا يطبع شيئا...ما العلل هنا؟

    Ahmed1

    نعتذر لكن يجب إعادة تحميل النسخة 1.9.0 مجددَا.. كما ذكرنا في سؤالكم السابق.

    بالنسبة للمثال : يجب تحديد طول المصفوفة. فالدالة رتب لا تعلم طول المصفوفة مسبقا أو جعله في منطلق في الدالة الى جانب المصفوفة مصفوفة [] صحيح .
    وأيضا المرجو تحويل:

    اذا الفهرس_الداخلي < (طول(مصفوفة) + 1 )
    الى

    اذا الفهرس_الداخلي < (طول(مصفوفة) - 1_ط).
    اليكم صفرة تعمل بشكل جيد:

    
      الدالة رتب__6 (مصفوفة 	[6]	 صحيح  ) {
    	المتغير الفهرس_الخارجي صحيح طبيعي؛
    	المتغير الفهرس_الداخلي صحيح طبيعي؛
    	لاجل 	الفهرس_الخارجي := 0؛ الفهرس_الخارجي < طول(مصفوفة)؛ الفهرس_الخارجي := الفهرس_الخارجي + 1 {
    		لاجل الفهرس_الداخلي := 0؛ الفهرس_الداخلي < طول(مصفوفة)؛ الفهرس_الداخلي:= الفهرس_الداخلي + 1 {
    			اذا الفهرس_الداخلي < (طول(مصفوفة)  - 1_ط) {
    				اذا مصفوفة[الفهرس_الداخلي]> مصفوفة[الفهرس_الداخلي + 1] {
    					المتغير المتغير_المؤقت صحيح := مصفوفة[الفهرس_الداخلي + 1]؛
    							مصفوفة[الفهرس_الداخلي + 1] := مصفوفة[الفهرس_الداخلي]؛
    							مصفوفة[الفهرس_الداخلي] := المتغير_المؤقت؛					
    				} 
    			} 
    		}   
    	} 
    }

    مع
    المتغير أرقام_6 [ ] صحيح := [5، 4، -2، 8، 9، 0]
    المثال يمكن تطبيقه أيضا على مصفوفة

    المتغير أرقام_6_6 [6][6]  صحيح   	:=	[ [5، 4، -2، 8، 9 ]	، [5، 4، -2، 8، 9 ]	،  [5، 4، -2، 8، 9 ]	،  [5، 4، -2، 8، 9 ]	، [5، 4، -2، 8، 9 ] ،
    											   				 [0،0،0،0،0 ]	   ] 
    		الدالة			اكتب	(	 أرقام_6_6 [6][6]  صحيح	)		{
    						ليكن	ا := 0		
    						 ليكن	 ب := 0										
    						لاجل 		ا := 0 ؛	ا<6 ؛ ا++ {
    							رتب__6 (أرقام_6_6 [ا] )
    						}
    						 لاجل 	ا := 0؛ ا< 6 ؛ ا++ {						
    							 لاجل 	ب := 0؛ب< 6 ؛ب++ {
    								  اكتب	(أرقام_6_6[ا][ب])	؛ '/ج'.اكتب	()
    							 }	
    							 '/س'.اكتب	()							 
    						 }						 
    }	

      admin شكرا على ردكم. هل هذا يعني أنه لا نستطيع أن نفس الدالة إذا لدينا مصفوفة أكبر؟ على عكس لغات أخر مثل سي؟

        Ahmed1 بلا يمكنكم تحديد ما شئتم. على أن تحددوا طول الصفيف في المنطلق مثلا ان لم تريدو تحديده مع الصفبف. لكي تعلم الدالة حجمه ان احتجتموه.

        الدالة رتب (مصفوفة [ ]صحيح، طولها صحيح) {

          أها أنا لم أكن أعلم أنه علي أن أعيد تحميل الخوارزم.

          هذه الصفرة الجديدة:

          استعمل الخوارزم.وسائط.شاشة؛
          
          الدالة رتب (مصفوفة []صحيح، طول_المصفوفة صحيح طبيعي) {
          	المتغير الفهرس_الخارجي صحيح طبيعي؛
          	المتغير الفهرس_الداخلي صحيح طبيعي؛
          	لاجل 	الفهرس_الخارجي := 0؛ الفهرس_الخارجي < طول_المصفوفة؛ الفهرس_الخارجي := الفهرس_الخارجي + 1 {
          		لاجل الفهرس_الداخلي := 0؛ الفهرس_الداخلي < طول_المصفوفة؛ الفهرس_الداخلي:= الفهرس_الداخلي + 1 {
          			اذا الفهرس_الداخلي < (طول_المصفوفة - 1_ط) {
          				اذا مصفوفة[الفهرس_الداخلي]> مصفوفة[الفهرس_الداخلي + 1] {
          					المتغير المتغير_المؤقت صحيح := مصفوفة[الفهرس_الداخلي + 1]؛
          					مصفوفة[الفهرس_الداخلي + 1] := مصفوفة[الفهرس_الداخلي]؛
          					مصفوفة[الفهرس_الداخلي] := المتغير_المؤقت؛					
          				} 
          			} 
          		}   
          	} 
          }		
          
          الدالة الاصل () {
          	المتغير أرقام [] صحيح := [5، 4، -2، 8، 9، 0]؛
          	المتغير فهرس صحيح طبيعي؛
          	
          	اكتب("قبل الترتيب: /س")؛	
          	لاجل فهرس := 0؛ فهرس < طول(أرقام)؛ فهرس := فهرس + 1  {
          		اكتب(أرقام[فهرس])؛
          		اكتب('/س')؛				
          	}
          	
          	رتب(ارقام، طول(أرقام))؛
          	
          	اكتب("بعد الترتيب: /س")؛	
          	لاجل فهرس := 0؛ فهرس < طول(أرقام)؛ فهرس:= فهرس + 1 {
          		اكتب(أرقام[فهرس])؛
          		اكتب('/س')؛				
          	}			
          			
          }

          لكن المترجم يشتكي:

          خطأ في متغيرات المنطلق 2 الدالة رتب; وجدت 'صحيح طبيعي' غير اني أنتظر 'صحيح طبيعي' تجربة.خ /تجربة/المصدر السطر 83 و وصف مصدر مسار موقع نوع
          المتغير 'ارقام' غير معلن تجربة.خ /تجربة/المصدر السطر 83 مشاكل
          فما الحل؟

            Ahmed1

            نسيتم همزة :
            رتب(ارقام، طول(أرقام)) ---> رتب(أرقام، طول(أرقام))


              admin معذرتا😅
              وماذا عن خطأ في متغيرات المنطلق 2 الدالة رتب; وجدت 'صحيح طبيعي' غير اني أنتظر 'صحيح طبيعي' تجربة.خ.

                Ahmed1
                عند كتابة المتغير بشكل جيد الصفرة تعمل كما يجب.

                  admin بكل أعجوبة هذه الصفرة اشتغلت:

                  استعمل الخوارزم.وسائط.شاشة؛
                  
                  الدالة رتب (مصفوفة  ۢصحيح، طول_المصفوفة صحيح طبيعي) {
                  	المتغير الفهرس_الخارجي صحيح طبيعي؛
                  	المتغير الفهرس_الداخلي صحيح طبيعي؛
                  	لاجل 	الفهرس_الخارجي := 0؛ الفهرس_الخارجي < طول_المصفوفة؛ الفهرس_الخارجي := الفهرس_الخارجي + 1 {
                  		لاجل الفهرس_الداخلي := 0؛ الفهرس_الداخلي < طول_المصفوفة؛ الفهرس_الداخلي:= الفهرس_الداخلي + 1 {
                  			اذا الفهرس_الداخلي < (طول_المصفوفة - 1_ط) {
                  				اذا مصفوفة[الفهرس_الداخلي]> مصفوفة[الفهرس_الداخلي + 1] {
                  					المتغير المتغير_المؤقت صحيح := مصفوفة[الفهرس_الداخلي + 1]؛
                  					مصفوفة[الفهرس_الداخلي + 1] := مصفوفة[الفهرس_الداخلي]؛
                  					مصفوفة[الفهرس_الداخلي] := المتغير_المؤقت؛					
                  				} 
                  			} 
                  		}   
                  	} 
                  }		
                  
                  الدالة الاصل () {
                  	المتغير أرقام [] صحيح := [5، 4، -2، 8، 9، 0]؛
                  	المتغير فهرس صحيح طبيعي := 0؛
                  	اكتب("قبل الترتيب: /س")؛	
                  	لاجل فهرس := 0؛ فهرس < طول(أرقام)؛ فهرس := فهرس + 1  {
                  		اكتب(أرقام[فهرس])؛
                  		اكتب('/س')؛				
                  	}
                  	
                  	رتب(؏أرقام[0]، طول(أرقام))؛
                  	
                  	اكتب("بعد الترتيب: /س")؛	
                  	لاجل فهرس := 0؛ فهرس < طول(أرقام)؛ فهرس:= فهرس + 1 {
                  		اكتب(أرقام[فهرس])؛
                  		اكتب('/س')؛				
                  	}			
                  			
                  }

                  المشكلة التي كنت أعاني منها عندما كنت أستخدم المصفوفة:

                  وصف	مصدر	مسار	موقع	نوع
                   خطأ في متغيرات المنطلق  1  الدالة رتب; وجدت 'مصفوفة 6  من نوع صحيح' غير اني أنتظر 'مصفوفة غير تامة  من نوع صحيح'	تجربة.خ	/تجربة/المصدر	السطر 81	مشاكل

                  أعتقد، والله أعلم، أنه يوجد مشكلة عندما أستخدم مصفوفة غير محددة الحجم كمنطلق لدالة. سي، ولغات أخر، تسمح للشخص أن يستخدم مصفوفات غير محددة الحجم كمنطلقات لدوال؛ أما في الخوارزم، فهذا ما يحدث: وجدت 'مصفوفة 6 من نوع صحيح' غير اني أنتظر 'مصفوفة غير تامة من نوع صحيح'

                    Ahmed1

                    السلام عليكم،

                    لا نستطيع إعادة ما وجدتم من أخطاء.

                    لقد قمنا بالخطوات الآتية لتشغيل مثالكم, دونما خطأ:
                    مع
                    الدالة رتب (مصفوفة []صحيح، طول_المصفوفة صحيح طبيعي) {

                    • أعدنا تنزيل بيئة الخوارزم 1.9.0
                    • ثم أطلقنا صفرتكم كما هي، فحصلناعلى الناتج:
                      قبل الترتيب:
                      5
                      4
                      -2
                      8
                      9
                      0
                      بعد الترتيب:
                      -2
                      0
                      4
                      5
                      8
                      9

                    هل فككتم ضغط 1.9.0 في نفس الموقع أو ما شابه؟

                      admin غريبة، حملت الخوارزمي للمرة الثالثة واشتغل البرنامج. شكرا على المساعدة!

                      Ahmed1

                      على الرحب والسعة !

                        أكتب ردك...