איתחול מערך מתוך פונקציה ?

איתחול מערך מתוך פונקציה ?

שלום רב, הגדרתי מערך של מספרים:

int [] MyArray;

ועכשיו אני רוצה לקרוא לפונקציה שתאתחל אותו בערכים. הבעיה היא שאינני יודע מראש כמה ערכים יהיו ולכן לפני הקריאה לפונקציה אינני יכול לאתחל את המערך בגודל קבוע כלשהו....

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

תודה מראש.
 
איך זה עונה על מה ששאלתי ?

אורך של מערך מתקבל רק אחרי שהמערך כבר מאותחל בערכים....

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

1. איך אני קורא לפונקציה עם מערך לא מאותחל כפרמטר ?

2. מה עלי לרשום בתוך הפונקציה כדי לאתחל את המערך (שכאמור התקבל כפרמטר) ?

ממתין לתשובה, תודה.
 

shlomolol

New member
למה אתה צריך להעביר מערך לא מאותחל כפרמטר?

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


public int[] MyFunc()
{
return new int[100];
}
int[] arry = MyFunc();
 
עכשיו הבנתי.... תודה

חשבתי שקודם אני צריך להעביר את המערך לתוך הפונקציה בתור פרמטר Ref אבל כשניסיתי את זה קיבלתי שגיאה בקומפילציה...

נראה לי שזה עונה על השאלה שלי, תודה!

דרך אגב, נגיד שכן הייתי צריך להעביר מערכים לא מאותחלים לפונקציה כדי שהיא תאתחל אותם? בדוגמה שנתת הפונקציה יכולה לאתחל רק מערך אחד, אבל נגיד שהיו לי 4 מערכים שאני רוצה שהפונקציה תאתחל, האם במקרה כזה אני לא חייב לשלוח אותם כפרמטר Ref ? ואז חוזרים שוב לשאלה המקורית ששאלתי, אם אינני יודע מראש כמה ערכים יתמלאו בכל מערך, איך אני שולח את ארבעת המערכים לפוקנציה? כשאני מנסה לשלוח אותם לא מאותחלים מתקבלת הודעת שגיאה...
 

IamStalker

New member
אתה צריך להבין מה אתה רוצה לבצע?

נראה לי שהחוסר ניסיון וידע מביאים אותך למצב שאתה מבולבל קצת.

תתחיל מההתחלה למה אתה צריך לייצר מערכים בגדלים דינאמיים?
אם תתן הסבר יותר מעמיק תוכל להבין גם למה אתה מבצע את מה שאתה מבצע
 
חסרים מצבים בהם לא יודעים מראש כמה נתונים

יתמלאו בבאפר? מה לדוגמה עם פונקציה שמחפשת מספרים ראשוניים מ 0 עד ערך מסויים, איך אפשר לקבוע מראש את גודלו של המערך שנשלח לפונקציה אם לא יודעים מראש כמה מספרים ראשוניים הפונקציה תמצא?

ואפשר לחשוב על הרבה מצבים נוספים בהם לא יודעים מראש מה גודל המערך הדרוש.

האם זה לא מצריך מערכים דינאמיים?
 

IamStalker

New member
אפשר ועדיף להשתמש ב-generic collections

שמאפשרות דינאמיות מוחלטת, האם ישנו צורך במערכות קיימות להשתמש ב-pure arrays ? אינני חושב.
 

rnan

New member
מממ

בשביל זה בדיוק קיים לא REF אלא OUT
שאז תוכל לאתחל אותם בפונקציה.
 

arielRuuubi

New member
ובכן

ארכיטקטורה נכונה לזה זה שהפונ שאמורה לאתחל את ה4 תקרא 4 פעמים לפונ שמאתחלת מערך אחד

תעבוד תמיד עם עקרון הפירוק לגורמים, כלומר פירוק לפונ, זה פותר את רוב הבעיות מהסוג הזה
 
למעלה