01-11-2006, 20:38
|
|
|
חבר מתאריך: 11.08.05
הודעות: 357
|
|
אמ...
הינה תיקנתי את הקוד
קוד:
#include<stdio.h>
void sort(int *pa,int n){
int i;
printf("\t\t1\n");
if(n < 1)
return;
printf("\t\t2\n");
sort(pa,n - 1);
while(*(pa += (n - 1)),*(pa -= (n - 1)) < *(pa += (n - 2)),*(pa -= (n - 2)) && (n > 1)){
i = *(pa += (n - 1));
*(pa) = *(pa += (n - 1));
*(pa) = i;
n--;
*(pa -= (n - 2));
}
}
void main(){
int i,num[8] = {3,2,1,4,6,7,8,5};
for(i=0;i < 8;i++)
printf("%d\n",num[i]);
sort(num,8);
printf("\n");
for(i=0;i < 8;i++)
printf("%d\n",num[i]);
}
אמ אז ככה... ה += זה בשביל להעלות את ארכו של המצביע PA וה פסיק שיש אחרי זה, זה מין סימן כזה בתכנות לא רואים אותו הרבה
הוא מחזיר ערך רק בפקודה הראשונה שמשמאל ומה שמימן הוא רק מבצע אותה כי צריך להוריד מהערך
הלולאה עושה ככה
בודקת
אם הערך האחרון יותר(לפי N -2) קטן מ הארך שקודם יותר(לפי N-1)
עכשיו זה עוד נכנס ללואה מקודם זה לא היה נכנס,אבל זה לא טוב זה עוד בעיות אם מספר 2
זה שם אותו במקומות הלא נכונים וכל זה
|