שלום לכולם, הייתי בריאיון בחברה וקיבלתי שאלה שלא הצלחתי לענות עליה, אשמח לתשובות.
נתונה הפונקציה:
funtion(int[] arr, int i, int j) {
if(arr[i] > arr[j] {
arr[i] = arr[i] -arr[j] }
}
עליך לממש פונקציה שמקבלת מערך ומחזירה את אותו מערך כך שלכל זוג אינדקסים i,j במערך התנאי לא יתקיים בפונקציה הנתונה.
כלומר שאי אפשר להמשיך ולשנות את ערכי המערך.
*הגישה למערך מתבצעת אך ורק באמצעות הפונקציה הנתונה.
ע"י: 1_אורח_כללי
הפונקציה מקבלת מערך, ושני אינדקסים.
אם מה שבמקום הi הוא גדול יותר, אז ערכו ישתנה להפרש שבין שני הערכים.
קטן או שווה- נשאר ללא שינוי
הם מבקשים בעצם שנשלח לפונקציה מערך באופן שיחזור אותו הדבר- ללא שינוי,
כלומר לכל אורך ij שנעשה לא ישתנה דבר במערך.
אם שולחים את המערך כאשר i=j אזי לא יהיה שינוי במערך כלל, כיוון שהערכים יהיו שווים
אז נשלח
int i=j=0; while(arr[i]){function (*arr, i++, j++);}
ע"י: אורח74
ניתן דוגמה נגיד ונתון לנו המערך: 1,2,3
אנחנו צריכים להחזיר את המערך 1,1,1.
הסבר: אם נסתכל על הזוג 1,3 נוכל לחסר מהאיבר 3 , את המספר 1 פעם אחת ואחר כך נוכל לעשות זאת שוב וכך בעצם 3 הפך ל-1. והמערך יראה: 1,2,1.
כעת נסתכל על הזוג הנותר שאפשרי להפעיל עליו את הפונקציה 1,2. נפעיל את הפונקציה ואז ה-2 יהפך ל-1. ואז נקבל את המערך הדרוש: 1,1,1.
לא משנה הסדר של האיברים שנבחר להפעיל עליהם את הפונקציה, בסופו של דבר נקבל את אותו מערך פלט..
ע"י: בסי
אתה יכול להסביר ברור יותר את השאלה?
מה אמור להיות במערך החדש שהפונ' תחזיר?