פורסם 2005 ביוני 620 שנים צריך סיוע במימוש התכנית הבאה: נתון מערך a בגודל N (הגדירו את N ב-define). כתבו תוכנית שמסדרת לתוך מערך b שאף הוא בגודל N את המספרים ממערך a כך שהשליליים נמצאים בתחילת המערך, החיוביים בסופו והאפסים ביניהם. שימו לב! סדר המספרים בתוך המערך בין החיוביים לבין עצמם ובין השליליים לבין עצמם לא אמור להשתנות. יש לקלוט ערכים למערך a. לאחר מכן יש לעבור על המערך a לכל היותר פעמיים ליצירת המערך b. זה הקוד שלי, שהבעיה איתו, שהוא עובר על המערך 3 פעמים, אך מותר רק פעמיים: #include<stdio.h> #define N 5 void sort_array(int a[], int b[], int n); int main() { int a[N],b[N],i,j; printf("\nPlease insert the first array (5 numbers): \n"); for(i=0;i<N;i++) if (scanf("%d",&a[i])!=1) { printf("\nInput error!"); return 1; } printf("\The sorted array is: \n"); sort_array(a,b,N); return 0; } void sort_array(int a[], int b[], int n) { int i=0,j=0; for(i=0;i<n;i++) if (a[i]<0) { b[j]=a[i]; printf("%d ",b[j]);j++; } for(i=0;i<n;i++) if (a[i]==0) { b[j]=a[i]; printf("%d ",b[j]);j++; } for(i=0;i<n;i++) if (a[i]>0) { b[j]=a[i]; printf("%d ",b[j]);j++; } }
פורסם 2005 ביוני 620 שנים אז זה לא אמור להוות בעיה פשוט תאתחל את המערך השני מראש ( ככה תחסוך את הצבת האפסים ) .
פורסם 2005 ביוני 720 שנים אתה גם יכול בפעם הראשונה לספור כמה חיוביים, שליליים ואפשים יש.ובלולאה השניה פשוט לשים כל אחד במקום המתאים לו.למשל אם יש לך את המערך הבא:1 0 -2 5 -1 0 30אז יש לך 3 חיוביים, 2 אפסים ו- 2 שליליים.לכן, בלולאה השניה, את הראשון שתשים(1) תשים במקום ה- 2(אפסים)+2(שליליים)=4יש לך 0, ולכן תשים אותו במקום 2. אחר כך יש 0, ותשים אותו ב- 0.אחר כך יש לך 5, תשים אותו במקום 2(אפסים)+2(שליליים)+1(החיובי ששמנו מקודם)=5
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.