עזרה בבקשה :)

nightmare89

New member
עזרה בבקשה :)

קודם כל חג שמח וצהריים טובים:) במהלך פתירת שיעורי הבית בשפת סי נתקלתי בבעיה... אני ארשום לכם את התרגיל (הלקוח מבחינת בגרות שנת 2002) ואת הפיתרון, שאגב פועל חלק אבל לא נכון :\\ אם תוכלו להסביר לי מה הבעיה בפיתרון אשמח נורא. תודה מראש. הבעיה: א. נתון מערך a, בגודל 20 המכיל מספרים שלמים. איברי המערך השונים זה מזה. כתוב תת-תוכנית (פונקציה), שתקבל כפרמטרים את מערך a ומספר שלם num הפונקציה תבדוק אם המספר נמצא במערך אם המספר num מופיע במערך, תחזיר הפונקציה את מספר האיברים הקטנים ממנו המופיעים לפניו במערך. אם המספר num אינו מופיע במערך, תחזיר הפונקציה את מספר האיברים הקטנים ממנו בכל המערך. ב. כתוב תוכנית שתקלוט מספרים שלמים למערך בגודל 20 ו10 מספרים שלמים נוספים. התוכנית תזמן את הפונקציה שכתבת בסעיף א' עבור כל אחד מ- 10 המספרים שנקלטו, ותדפיס את הערך שהחזריה הפונקציה הערה: הנח שהקלט תקין תשובה:
#include <stdio.h> #define n 20 typedef int arr[n]; typedef int arrl[n-10]; int checking(arr a, arrl num); void main() // ÷ìè: îòøê çã îéîãé áï 20 úàéí // ôìè: äàí äîùúðä ðîöà áîòøê { int i; // îåðä äìåìàä arr a; // îòøê çã îéîãé áï 20 úàéí int check; // îùúðä äé÷áì àú úåöàåú äôåð÷öéä arrl b; // îòøê çã îéîãé áï 10 úàéí for (i=0;i<n;i++) { printf("Enter number to a[%d]\n",i); scanf("%d",&a); }//for for (i=0;i<n-10;i++) { printf("Enter number to b[%d]\n",i); scanf("%d",&b); }//for printf("\n\n"); for (i=0;i<n-10;i++) { check=checking(a,b); printf("%d\n",check); }//for }//main int checking(arr a, arrl num) // èòðú ëðéñä: îòøê çã îéîãé áï 20 úàéí åîùúðä ìáãé÷ä // èòðú éöéàä: ðúåï áùàìä { int i,x; // îåðä äìåìàä int counter=0; // îåðä äáãé÷ä int temp; // îùúðä æîðé ìáãé÷ä for (i=0;i<n;i++) { for (x=0;x<n-10;x++) { if (num[x] == a) temp=1; else temp=2; }//for }//for if (temp == 1) { for (i=0;i<n;i++) { for (x=0;x<num-1;i++) { if (num[x] < a) counter++; }//for }//for }//if else { for (i=0;i<n;i++) { for (x=0;x<n-10;x++) { if (num[x] < a) counter++; }//for }//for }//else return counter; }//checking
 

nightmare89

New member
אופס..

בקשר לאותיות הקיריליות זו העתקה של עברית במצב אנגלית אין לזה יחס משמעותי
 

EndersG

New member
אם זה ש"ב - רקורסיה ממש מתבקשת כאן

הרעיון הבא יחסוך לך הרבה קוד:
int check(int *arr,int arr_size,int num) { int *tmp_arr=arr; if (arr_size=0) return 0; return check(++tmp_arr,--arr_size,num)+ ((arr[0]<num)?1:0); } int main (); { ...get num ...get arr ...get arr_size int result=check(arr,arr_size,num); }​
זה רק אלגוריתם כמובן וא יעבור קומפילציה אבל אני חושב שהרעין ברור...
 
למעלה