تمرين تطبيقي : ترتيب الجدول تصاعديا وتنازليا | Hackshow Blog Hackshowblog

ربنا لاتؤاخذنا ان نسينا او اخطئنا ربنا ولا تحمل علينا اصرا كما حملته على الذين من قبلنا ربنا لا تحملنا مالا طاقة لنا به واعف عنا واغفر لنا وارحمنا انت مولانا فانصرنا على القوم الكافرين

dimanche 20 septembre 2015
17:15

تمرين تطبيقي : ترتيب الجدول تصاعديا وتنازليا

advertisements

  
  السلام عليكم  




 ندخل مباشرة في صلب الموضوع شرحنا

في الدرس السابق درس الجدوال العادية


اليوم موعدنا مع تمرين تطبيقي لترسيخ الأفكار


 كود المستخدم في الشرح 


  


#include "stdio.h"
#include "stdlib.h"


main () {

//#define constant_variable value

#define size 5

int tab[size],i,j,tmp=NULL;
//tmp=0;


if(size <= 0) {

printf("\nError !! \n\n");
}

else {

    for(i=0 ; i < size ; i++) {

        printf("\nenter number tab[%d] : ",i);
        fflush(stdin);
        scanf("%d",&tab[i]);


    }

}

for(i=0 ; i < size ; i++) {

        printf("\n tab[%d] :%d \n",i,tab[i]);


    }
     printf("\n\n NEW ORDRE\n");
    for(i=0 ; i < size ; i++) {
for(j=0 ; j < size; j++) {

            if(tab[i]>tab[j]) {

                tmp=tab[i];
                tab[i]=tab[j];
                tab[j]=tmp;
            }

 }
    }

    for(i=0 ; i < size ; i++) {

        printf("\n tab[%d] :%d \n",i,tab[i]);


    }


    printf("\n");
system("pause");

}



: النتيجة 




طيب لو قمتا بعملنا تغير بسيط

:  كود 


  


#include "stdio.h"
#include "stdlib.h"


main () {

//#define constant_variable value

#define size 5

int tab[size],i,j,tmp=NULL;
//tmp=0;


if(size <= 0) {

printf("\nError !! \n\n");
}

else {

    for(i=0 ; i < size ; i++) {

        printf("\nenter number tab[%d] : ",i);
        fflush(stdin);
        scanf("%d",&tab[i]);


    }

}

for(i=0 ; i < size ; i++) {

        printf("\n tab[%d] :%d \n",i,tab[i]);


    }
     printf("\n\n NEW ORDRE\n");
    for(i=0 ; i < size ; i++) {
for(j=i ; j < size; j++) { //تم التعديل هنا J=I

            if(tab[i]>tab[j]) {

                tmp=tab[i];
                tab[i]=tab[j];
                tab[j]=tmp;
            }

 }
    }

    for(i=0 ; i < size ; i++) {

        printf("\n tab[%d] :%d \n",i,tab[i]);


    }


    printf("\n");
system("pause");

}

: النتيجة




الأن قد تستغرب ياشيخنا ههههه




  




سأرجع بكم لدرس

 قلنا في الدرس أنه لما يدخل البرنامج لدالة التكرارية

الأولى بعدها سيدخل في الدالة التالية 

for(I=0...) for(J=0...) if ( tab[i] > tab[j] ) 

if ( tab[0] > tab[0] ) 
if ( tab[0] > tab[1] ) 
if ( tab[0] > tab[2] ) 
if ( tab[0] > tab[3] ) 
if ( tab[0] > tab[4] ) 
if ( tab[1] > tab[0] )  
if ( tab[1] > tab[1] ) 
if ( tab[1] > tab[2] ) 
if ( tab[1] > tab[3] ) 
if ( tab[1] > tab[4] ) 
if ( tab[2] > tab[0] )  
if ( tab[2] > tab[1] ) 
if ( tab[2] > tab[2] ) 
if ( tab[2] > tab[3] ) 
if ( tab[2] > tab[4] ) 
if ( tab[3] > tab[0] ) 
if ( tab[3] > tab[1] ) 
if ( tab[3] > tab[2] ) 
if ( tab[3] > tab[3] ) 
if ( tab[3] > tab[4] ) 
if ( tab[4] > tab[0] ) 
if ( tab[4] > tab[1] ) 
if ( tab[4] > tab[2] ) 
if ( tab[4] > tab[3] ) 
if ( tab[4] > tab[4] ) 

طيب هنا نرى ان دالة الثانية ستبدأ المقارنة الخانة مع الجدول كامل 

أما في هذا الكود 

for(I=0...) for(J=I...) if ( tab[i] > tab[j] )   

نفس المنهية السابقة إلا انه سيتم مسح بعض الحالات 

if ( tab[0] > tab[0] ) 
if ( tab[0] > tab[1] ) 
if ( tab[0] > tab[2] ) 
if ( tab[0] > tab[3] ) 
if ( tab[0] > tab[4] ) 
 
if ( tab[1] > tab[1] ) 
if ( tab[1] > tab[2] ) 
if ( tab[1] > tab[3] ) 
if ( tab[1] > tab[4] ) 

if ( tab[2] > tab[2] ) 
if ( tab[2] > tab[3] ) 
if ( tab[2] > tab[4] ) 

if ( tab[3] > tab[3] ) 
if ( tab[3] > tab[4] ) 

if ( tab[4] > tab[4] )   

 كما تلاحطون الأمر مختلف عن الأول 

تلخيص منهجية العمل 

 

I=1 > J=I = 1 > 4
I=2 > J=I = 2 > 4
I=3 > J=I = 3 > 4
I=4 > J=I = 4 > 4


ومنه الجدول سيبدأ بمقارنة من خانة رقم 1 

وهكذا سيتم تجاهل الحالات الأخرى 

ومنه لا يتم مقارنة الخانة مع الجدول كاملا كل مرة 

وهذه طريقة أسرع من الأولى


 : شرح الفديو


 


في أمان الله 


قـد يـهمـك أيــضا ..

كـريمَ

مــبرمج و مهتم بأمن المعلومات و بجديد التقنيات سبق لي ان قدمت دورات امنية و برمجية, و الطريق طويل بادن الله

-

0 commentaires :

Enregistrer un commentaire