Document

‫י"ב‪/‬חשון‪/‬תשע"ה‬
‫מחסנית מספרים ‪ -‬תרגילים נוספים ‪2‬‬
‫תרגיל ‪1‬‬
‫‪ ‬כתוב פעולה‪ ,‬המקבלת מחסנית מלאה במספרים טבעיים‬
‫וספרה המיוצגת ע"י מספר שלם ומחזירה האם הספרה‬
‫מופיעה לפחות באחד מהמספרים במחסנית‪.‬‬
‫‪1‬‬
‫מחסנית מספרים ‪ -‬תרגילים נוספים ‪2‬‬
‫תרגיל ‪ – 1‬פתרון ‪ -‬דרך א'‬
‫‪‬‬
‫(פעולת עזר)‬
‫)‪static bool IsDigitInNumber(int num, int digit‬‬
‫{‬
‫‪//‬מחזירה האם הספרה מופיעה במספר‬
‫;‪bool flag = false‬‬
‫)‪while (num > 0 && !flag‬‬
‫{‬
‫)‪if (num % 10 == digit‬‬
‫;‪flag = true‬‬
‫‪else‬‬
‫;‪num /= 10‬‬
‫}‬
‫;‪return flag‬‬
‫}‬
‫מחסנית מספרים ‪ -‬תרגילים נוספים ‪2‬‬
‫‪2‬‬
‫‪1‬‬
‫תשע"ה‬/‫חשון‬/‫י"ב‬
‫ המשך‬- '‫ דרך א‬- ‫ – פתרון‬1 ‫תרגיל‬
)‫(פעולת עיקרית‬

static bool IsDigitInStack(Stack s, int digit)
{
‫מחזירה האם הספרה מופיעה לפחות באחד מהמספרים במחסנית המספרים‬//
‫הנחה – המחסנית אותחלה‬//
bool flag = false; int x;
while (!s.IsEmpty() & !flag)
{
x = s.Top();
if (IsDigitInNumber2(x, digit))
flag = true;
else
s.Pop();
}
return flag;
}3
2 ‫ תרגילים נוספים‬- ‫מחסנית מספרים‬
'‫ דרך ב‬- ‫ – פתרון‬1 ‫תרגיל‬
)‫(פעולת עזר‬

static bool IsDigitInNumber(int num, int digit)
{
‫מחזירה האם הספרה מופיעה במספר‬//
while (num > 0)
{
if (num % 10 == digit)
return true;
num /= 10;
}
return false;
}
4
2
2 ‫ תרגילים נוספים‬- ‫מחסנית מספרים‬
‫י"ב‪/‬חשון‪/‬תשע"ה‬
‫תרגיל ‪ – 1‬פתרון ‪ -‬דרך ב' ‪ -‬המשך‬
‫‪‬‬
‫(פעולת עיקרית)‬
‫)‪static bool IsDigitInStack(Stack s, int digit‬‬
‫{‬
‫‪//‬מחזירה האם הספרה מופיעה לפחות באחד מהמספרים במחסנית המספרים‬
‫‪//‬הנחה – המחסנית אותחלה‬
‫;‪int x‬‬
‫))(‪while (!s.IsEmpty‬‬
‫{‬
‫;)(‪x = s.Top‬‬
‫))‪if (IsDigitInNumber(x, digit‬‬
‫;‪return true‬‬
‫;)(‪s.Pop‬‬
‫}‬
‫;‪return false‬‬
‫}‬
‫מחסנית מספרים ‪ -‬תרגילים נוספים ‪2‬‬
‫‪5‬‬
‫תרגיל ‪2 -‬‬
‫‪‬‬
‫כתבו פעולה המקבלת מחסנית מלאה במספרים טבעיים‬
‫וספרה המיוצגת ע"י מספר שלם‪.‬‬
‫הפעולה מחזירה האם הספרה מופיעה במספרי המחסנית‬
‫לפחות שלוש פעמים (יכול להיות שמופיעה באותו מספר‬
‫שלוש פעמים או שמופיעה פעם במספר אחד ופעמיים‬
‫באחר וכדומה)‪.‬‬
‫מחסנית מספרים ‪ -‬תרגילים נוספים ‪2‬‬
‫‪6‬‬
‫‪3‬‬
‫תשע"ה‬/‫חשון‬/‫י"ב‬
‫ – פתרון‬2 ‫תרגיל‬
)‫(פעולת עזר‬

static int CountDigitInNumber(int num, int digit)
{
‫מחזירה כמה פעמים הספרה מופיעה במספר‬//
int count = 0;
while (num > 0)
{
if (num % 10 == digit)
count++;
num /= 10;
}
return count;
}
7
2 ‫ תרגילים נוספים‬- ‫מחסנית מספרים‬
‫ המשך‬- ‫ – פתרון‬2 ‫תרגיל‬
)‫(פעולת עיקרית‬

static bool IsKCountDigitInStack(Stack s, int digit, int k)
{
‫ פעמים במספרים במחסנית המספרים‬K ‫מחזירה האם הספרה מופיעה לפחות‬//
‫הנחה – המחסנית אותחלה‬//
int x;
int countDigit = 0;
while (!s.IsEmpty())
{
x = s.Top();
countDigit += CountDigitInNumber(x, digit);
if (countDigit >= k)
return true;
s.Pop();
}
return false;
}
8
4
2 ‫ תרגילים נוספים‬- ‫מחסנית מספרים‬