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

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


lesForce

Recommended Posts

הי..

תראו אני לא מצליח בתרגיל אחד שהוא אומר לי ליצור פעולה שתקבל מחסנית מסוג 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);

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...