עבור לתוכן

לא מצליח ליצור פעולה שמקבלת מחסנית(String)ולהחזיר מחסנית(Int) שתכיל את האורך(C#)

Featured Replies

פורסם

הי..

תראו אני לא מצליח בתרגיל אחד שהוא אומר לי ליצור פעולה שתקבל מחסנית מסוג string שמכיל שמות, ולהחזיר מחסנית מסוג int שמכילה את מספר האותיות שיש בכל שם.

למשל אני מקבל מחסנית כזו:

pele

messy

ronaldiniho

אני צריך להחזיר מחסנית

4

5

11

זה מה שעשיתי:

  class Porgamess
{
public static Stack<int> GetStringLength(Stack<string> st1)
{
Stack<int> sn = new Stack<int>();
Stack<string> st2 = new Stack<string>();
string str;
while (!st2.IsEmpty())
{
str = st2.Pop();
sn.Push(str.Length);
}
return sn;
}
}
}

ובMAIN

    static void Main(string[] args)
{
Stack<string> s = new Stack<string>();
s.Push("Ronaldinho");
s.Push("Messy");
s.Push("Pele");
Console.WriteLine(Porgamess.GetStringLength(s));
}

וזה מחזיר לי מחסנית ריקה כיאלו... מה הבעיה?

עריכה:

חח איזה אידיוט יצאתי! שחכתי להשוות בין st2 = s ... כי הם אמרו "שימו לב- המחסנית המתקבלת לא תשתנה בסיום הפעולה)

פורסם

אם אסור שהמחסנית תשתנה אז להוסיף st2 = st1 לא יעזור לך כי זה פשוט יעביר reference ו-st2 יצביע לאותו אובייקט כמו-st1 ,כל שינוי שתעשה ישתקף בשניהם. מה שאתה צריך זה זה להעתיק את הערכים מ-st1 ל-st2, ככה:

st2 = st1.Clone();

או ככה:

Stack<string> st2 = new Stack<string>(st1);

פורסם
  • מחבר

צודק במאה אחוז.

תודה על ההארה... ניראה לי אני צריך לחזור שוב על החומר.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים