י'/חשון/תשע"ה
מחסנית פעולות ממשק -תזכורת
•ראש המחסנית – המקום אליו מכניסים וממנו מוציאים את הערכים.
מה עושה הפעולה
הפעולה
שם הפעולה
מחזירה
בC#-
לא מחזירה –
פעולה המחזירה מחסנית ריקה.
)(new Stack
בנאי
פעולה המחזירה 'אמת' אם המחסנית ריקה ,ו'שקר' אחרת.
אמת/שקר
הנחה :המחסנית מאותחלת.
האחרון שהוכנס יוצא ראשון
)(IsEmpty
LIFO - Last In First Out
הפעולה מכניסה את האיבר Xלראש המחסנית.
לא מחזירה
)Push(x
הנחה :המחסנית מאותחלת.
פעולה המוציאה את האיבר שבראש המחסנית ומחזירה את ערכו.
מספר
)(Pop
הנחות :המחסנית מאותחלת ואינה ריקה.
פעולה המחזירה את ערכו של האיבר שבראש המחסנית מבלי להוציאו.
מספר
)(Top
הנחות :המחסנית מאותחלת ואינה ריקה.
1
מחסנית מספרים -תרגילים נוספים
אופן סריקת מחסנית -תזכורת
באופן כללי -עוברים על כל איברי המחסנית בלולאת כל עוד ע"י שליפת
איברי המחסנית מראשה אחד אחר השני.
בכל ביצוע של הלולאה מבצעים חישוב/פעולה על הערך שיצא מראש
המחסנית.
הלולאה מסתיימת כאשר המחסנית ריקה (תנאי עצירה של הלולאה).
תבנית בC#-
))(while (!s.IsEmpty
{
;)(x = s.Top
//חישוב/פעולה על הערך שיצא מראש המחסנית
;)(s.Pop
}
מחסנית מספרים -תרגילים נוספים
2
1
י'/חשון/תשע"ה
תרגיל 1
כתוב פעולה ,המקבלת מחסנית שלמים ומציגה מה יש
יותר במחסנית מספרים חיוביים או שליליים
3
מחסנית מספרים -תרגילים נוספים
תרגיל - 1פתרון
)static void WhatMoreInStack(Stack s
{
//מקבלת מחסנית של מספרים שלמים ומציגה מה יש יותר במחסנית מספרים חיוביים או שליליים .הנחה – המחסנית אותחלה
;int x
מונה שלילי int countN = 0;//מונה חיוביint countP = 0;//
))(while (!s.IsEmpty
{
;)(x = s.Top
)if (x > 0
;countP++
else
)if (x < 0
;countN++
;)(s.Pop
}
מחסנית מספרים -תרגילים נוספים
4
2
י'/חשון/תשע"ה
תרגיל – 1פתרון המשך
)static void WhatMoreInStack(Stack s
...
)if (countP > countN
;)"יותר חיוביים"(Console.WriteLine
else
)if (countN > countP
;)"יותר שליליים"(Console.WriteLine
else
;)"שוויון"(Console.WriteLine
}
מחסנית מספרים -תרגילים נוספים
5
תרגיל 2
כתוב פעולה ,המקבלת מחסנית מלאה במספרים שלמים
ומציגה מה יש יותר במחסנית:
מספרים חיוביים בעלי מספר זוגי של ספרות
או מספרים שליליים בעלי מספר אי-זוגי של ספרות
מחסנית מספרים -תרגילים נוספים
6
3
י'/חשון/תשע"ה
תרגיל - 2פתרון
(פעולת עזר)
)static int CountDigit(int num
{
//מחזירה את מספר הספרות של מספר שאינו שלילי
;int count = 0
)while (num > 0
{
;count++
;num /= 10;//num = num/10
}
;return count
}
7
מחסנית מספרים -תרגילים נוספים
תרגיל – 2פתרון המשך
)static void WhatMoreInStack(Stack s
{
//מקבלת מחסנית של מספרים שלמים ומציגה מה יש יותר במחסנית מספרים חיוביים בעלי מספר זוגי של
ספרות או מספרים שליליים בעלי מספר אי-זוגי של ספרות .הנחה – המחסנית אותחלה
;int x
מונה שלילי int countN = 0;//מונה חיוביint countP = 0;//
))(while (!s.IsEmpty
{
;)(x = s.Top
)if (x > 0 && CountDigit(x) % 2 == 0
;countP++
else
)if (x < 0 && CountDigit(Math.Abs(x)) % 2 != 0
;countN++
;)(s.Pop
מחסנית מספרים -תרגילים נוספים
}8
4
י'/חשון/תשע"ה
תרגיל – 2פתרון המשך
)static void WhatMoreInStack(Stack s
...
)if (countP > countN
;)"יותר חיובי עם מספר ספרות זוגי"(Console.WriteLine
else
)if (countN > countP
;)"יותר שלילי עם מספר ספרות אי-זוגי"(Console.WriteLine
else
;)"שוויון"(Console.WriteLine
}
9
מחסנית מספרים -תרגילים נוספים
תרגיל 3
כתבו פעולה המקבלת מחסנית מלאה במספרים שלמים.
הפעולה מחזירה האם במחסנית מספר המספרים שכל
ספרותיהן זוגיות שווה למספר המספרים שכל ספרותיהן
אי-זוגיות.
מחסנית מספרים -תרגילים נוספים
10
5
תשע"ה/חשון/'י
פתרון- 3 תרגיל
)(פעולת עזר
static bool IsSameZugiyut(int num, bool isZugi)
{
מחזירה האם כל ספרות המספר זוגיות או אי זוגיות בהתאם לערכו של המשתנה הבוליאני//
while (num > 0)
if (((num % 10) % 2 == 0 && !isZugi)
|| ((num % 10) % 2 != 0 && isZugi))
return false;
else
num /= 10;
return true;
}
11
תרגילים נוספים- מחסנית מספרים
– פתרון המשך3 תרגיל
'דרך א
static bool IsEquleSameZugiyut(Stack s)
{
מחזירה האם יש במחסנית מספר המספרים שכל ספרותיהן זוגיות שווה למספר המספרים שכל ספרותיהן//
הנחה – המחסנית אותחלה.זוגיות-אי
int countZugi = 0; int countEZugi = 0; int x;
while (!s.IsEmpty()) {
x = s.Top();
if (x % 2 == 0 && IsSameZugiyut(Math.Abs(x), true))
countZugi++;
if (x % 2 != 0 && IsSameZugiyut(Math.Abs(x), false))
countEZugi++;
s.Pop(); }
return countZugi == countEZugi; }
12
6
תרגילים נוספים- מחסנית מספרים
י'/חשון/תשע"ה
תרגיל – 3פתרון המשך
דרך ב'
)static bool IsEquleSameZugiyut2(Stack s
{
//מחזירה האם יש במחסנית מספר המספרים שכל ספרותיהן זוגיות שווה למספר המספרים שכל ספרותיהן
אי-זוגיות .הנחה – המחסנית אותחלה
;int count = 0; int x
{ ))(while (!s.IsEmpty
;)(x = s.Top
))if (x % 2 == 0 && IsSameZugiyut(x, true
;count++
))if (x % 2 != 0 && IsSameZugiyut(x, false
;count--
} ;)(s.Pop
} ;return count == 0
מחסנית מספרים -תרגילים נוספים
13
7
© Copyright 2025