לולאות מקוננות כפרמטר

אוופסס

New member
לולאות מקוננות כפרמטר

שלום לכולם, לא יודע אם זה הפורום המתאים, אבל ננסה. אני צריך לעשות לולאות מקוננות (nested loops), אבל מספר הלולאות שאני אצטרך הוא פרמטר שלא ידוע בזמן כתיבת הקוד. איך ניתן לממש זאת בדרך אלגנטית, בלי להשתמש ברקורסיה?
 

HaifaMan

New member
תכניס את זה לפונקציה

והפונקציה תקבל כפרמטר int שהוא יהיה מספר הפעמים שהיא תרוץ.
 

asm32

New member
ככה

תיצור מערך של אינדקסים בזמן הריצה וכל מיקום במערך יהיה אינדקס וכמו ש haifaman רשם ככה תבצע את מספר הריצות
 

HaifaMan

New member
עדיין לא הבנתי במדויק את הבעיה

אתה יכול לפרט ולתת דוגמא אולי?
 

אוופסס

New member
הבעיה

זאת לא בדיוק הבעיה אבל אני מביא רק את הפרטים החשובים. יש לי קו ישר שמחולק למקטעים. מספר המקטעים הוא פרמטר. בכל מקטע יש מספר אפשרויות (סופי ויחסית קטן) למקם חפץ, שתלוי באורך המקטע. אני רוצה להדפיס את כל האפשרויות לכל המיקומים של חפצים לאורך הקו. לדוגמא, נניח ויש לי 3 מקטעים, כל אחד באורך 3 (הם לא חייבים להיות באורך זהה). בכל מקטע יש 3 אפשרויות למקם את החפץ, אני צריך להדפיס (- מסמן מקום ריק, 0 מסמן את החפץ): 1. 0-- 0-- 0-- 2. -0- 0-- 0-- 3. --0 0-- 0-- 4. 0-- -0- 0-- ... 27. --0 --0 --0 בעזרת 3 לולאות מקוננות קל לעשות זאת. אבל מספר המקטעים הוא פרמטר, לכן זו לא הדרך.
 

HaifaMan

New member
מה לגבי הפסאודו קוד הבא:

for (i = 0; i < numOfSections; ++i) { for (j = 0; j < section.getNumOfPossibilities; ++j) { for (k = 0; k < posibility[j].length; ++k) { put object on this place } } }

לא יודע איך אתה יכול לקבל את הנתונים לכל קטע, אבל זה אפשרי פשוט תשתמש בתבנית שכתבתי.
 

אוופסס

New member
זה לא פותר את הבעיה

כי כשעוברים בלולאה החיצונית ביותר למקטע הבא, מתעסקים רק בו, למרות ששוב צריך לעבור על כל האפשרויות של המקטע השני. בכל מקרה מצאתי פתרון, לא יודע אם הוא הטוב ביותר for(j=0; j < numOfSections ;++j) { cycleFlag = sectionsArray[j].IncrementHolesPosition(); if(!cycleFlag) break; } כל מקטע שומר את המיקום של החורים ויודע להתקדם מצב אחד קדימה. הוא מחזיר אמת במידה וסיים סיבוב אחד של אפשרויות
 
למעלה