#C - שאלה למתחילה :)

Blueberry1

New member
#C - שאלה למתחילה :)

שלום,

יש לי תרגיל שבו אני אמורה להדפיס על המסך את המספרים 1-100 (כולל)

בכל פעם שמספר מתחלק ב2 ללא שארית - יודפס על המסך "2"
בכל פעם שמספר מתחלק ב3 ללא שארית - יודפס על המסך "3"
ובכל פעם שמספר מתחלק גם ב2 וגם ב3 ללא שארית - יודפס על המסך "BOOM"

כתבתי קוד קצר, אבל לפי התוצאות שהוא מציג על המסך, הוא לא תקין..
אשמח להסבר היכן הטעות ולמה.

תודה

for (int num=1; num<=100 ; num++)
{
if (num % 2 == 0 && num % 3 == 0)
Console.WriteLine("BOOM");
if(num % 2 == 0)
Console.WriteLine("2");
if (num % 3 == 0)
Console.WriteLine("3");

Console.WriteLine(num);
 

BravoMan

Active member
הדרך הכי טובה להבין היכן הבעיה

היא לכתוב מה הקוד עושה בעברית פשוטה:
בדוק אם המספר מתחלק ללא שארית גם ב-2 וגם בשלוש.
אם כן, תדפיס BOOM
עכשיו בדוק אם המספר מתחלק ב-2.
אם כן, תדפיס 2.
ולסיום תבדוק אם המספר מתחלק ב-3.
אם כן תדפיס 3.

כפי שאת רואה, אין בקוד שום הוראה שאומרת "אם כבר נכנסת לתנאי אחד, תתעלם משאר התנאים".
להוראה כזו בשפת #C קוראים else (אחרת).
 

Blueberry1

New member
הצלחתי לתקן ! :)

תודה רבה

for (int num = 1; num <= 100; num++)
{
if (num % 2 == 0 && num % 3 == 0)
Console.WriteLine("BOOM");
else
if (num % 2 == 0)
Console.WriteLine("2");
else
if (num % 3 == 0)
Console.WriteLine("3");
else
Console.WriteLine(num);
 
למעלה