שאלה 4.1.1
שחקן מסובב שני סביבונים 30 פעם. אם שניהם נפלו על אותה מילה השחקן מקבל נקודה.
כתבו תוכנית המדמה משחק זה. בכל תור יוצגו תוצאות הטלת הסביבונים (מספר בין 1 ל-4), ובסיום יוצג מספר הנקודות שצבר השחקן.
פתרון
static void Main()
{
int num1, num2;
int count = 0;
for (int i = 0; i < 30; i++)
{
num1 = rnd.Next(1, 5);
num2 = rnd.Next(1, 5);
Console.WriteLine($"sevivon1: {num1} sevivon2: {num2} ");
if (num1 == num2)
count++;
}
Console.WriteLine(count);
}
שאלה 4.1.2
עצרת (מסומנת ע”י ‘!’) היא פעולה חשבונית המחשבת את מכפלת כל המספרים מ-1 ועד n.
כתבו תוכנית בה הקלט הוא מספר טבעי (n), והפלט הוא תוצאת חישוב העצרת של מספר זה (n!).
אין פתרון
שאלה 4.1.3
למספר 2025 יש תכונה מיוחדת: \((20+25)^2 = 2025\)
א. כתבו תוכנית שבה קלט הוא מספר בעל 4 ספרות, והתוכנית מדפיסה האם המספר מקיים את התכונה.
ב. שנו את התוכנית כך שהפלט יהיה כל המספרים בעלי 4 ספרות המקיימים תכונה זו.
- כתבו תוכנית שבה קלט הוא מספר בעל 4 ספרות, והתוכנית מדפיסה האם המספר מקיים את התכונה.
- שנו את התוכנית כך שהפלט יהיה כל המספרים בעלי 4 ספרות המקיימים תכונה זו.
אין פתרון
שאלה 4.1.4 (דורש קינון)
“מספר מושלם” הוא מספר שסכום מחלקיו (למעט המספר עצמו) שווה למספר עצמו.
כתבו תוכנית המדפיסה את כל המספרים המושלמים בין 1 ל-1000.
אין פתרון
שאלה 4.1.5
מספר ראשוני הוא מספר המתחלק ללא שארית רק בעצמו ובאחד.
א. כתבו תוכנית שבה הקלט הוא מספר שלם חיובי, והפלט הוא האם המספר ראשוני או לא (כולל הסבר).
ב. כמה פעמים רצה לולאת התוכנית עבור המספר 97? כמה עבור 96?
ג. שפרו את התוכנית כך שהלולאה תרוץ לכל היותר מחצית מהפעמים עבור 96.
ד. שפרו את התוכנית כך שהלולאה תרוץ פחות מ-20 פעמים עבור מספרים כמו 96 ו-121.
אין פתרון
שאלה 4.1.6 (דורש קינון)
כתבו תוכנית למציאת כל השברים הקטנים מ-1, בעלי מונה ומכנה דו ספרתיים, שבהם אפשר לצמצם את ספרת האחדות במונה עם ספרת העשרות במכנה ולקבל תוצאה נכונה.
לדוגמה: \(\frac{16}{64}=\frac{1}{4}\), \(\frac{19}{95}=\frac{1}{5}\)
שימו לב: יש להימנע מחלוקה באפס.
אין פתרון
שאלה 4.1.7
כתבו תוכנית המדפיסה את כל המספרים בין 1 ל-100 שמתחלקים ב-7 וגם ב-11. השתמשו ב-break
כדי לעצור את הלולאה מיד אחרי מציאת המספר הראשון הגדול מ-70.
אין פתרון
שאלה 4.1.8
כתבו תוכנית הקולטת 15 מספרים מהמשתמש. השתמשו בדגל (bool
) כדי לבדוק האם נקלט מספר שלילי. אם כן, הפסיקו את קליטת המספרים והציגו הודעה מתאימה.
אין פתרון
שאלה 4.1.9
כתבו תוכנית הקולטת 10 מספרים ומדפיסה כמה מספרים נקלטו עד המספר הראשון שהתחלק ב-5.
אין פתרון
שאלה 4.1.10 (שאלה בלולאות while צריך להעביר!!!)
כתבו תוכנית הקולטת מספר שלם ומדפיסה את סכום ספרותיו. אם במהלך חישוב סכום הספרות מתקבלת הספרה 0, הפסיקו את הלולאה והדפיסו הודעה מיוחדת שהמספר מכיל את הספרה 0.
פתרון
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static void Main()
{
int sum = 0;
bool allOk = true;
Console.Write("Enter a number: ");
int num = int.Parse(Console.ReadLine());
while (num > 0 && allOk) // תנאי יציאה כפול
{
int digit = num % 10;
if (digit == 0) // הדלקת דגל במקרה של בעיה
allOk = false; // ברייק לא מספיק: אני מסמן שיצאתי באופן חריג
sum += digit; // סכימה
num /= 10; // קיצוץ ספרה
}
if (allOk)
Console.WriteLine("sum: " + sum);
else
Console.WriteLine("Huston we have had a problem: number contained 0");
}
⬅ עבור לתרגול 4.2 - לולאות for: מונה, צובר, מינימום ומקסימום