עבור לתוכן

שאלה בC# - לולאת FOR

Featured Replies

פורסם

כתוב תוכנית הקולטת מספר ומדפיסה את כל מחלקיו

מישהו יכול לעזור לי? אין לי כיוון אפילו ???

פורסם

אין לך מושג ברעיון של איך מוצאים את המחלקים ? או איך מתכנתים ב C# ? או מה ?

פורסם

מאוד פשוט!

static void Main(string[] args)
{
Console.Write("enter num: ");
int num = int.Parse(Console.ReadLine());
for (int i = 2; i < num; i++)
if (num % i == 0)
Console.WriteLine(i);
}

שים לב, אם אתה רוצה שזה ידפיס לך גם את המחלק 1 וגם את המספר עצמו אז עליך לשנות בהגדרות של הלואלה 2 דברים:

1) במקום i=2 תעשה i=1

2) במקום i<num תעשה i<=num

תעבור את הקוד ואני מבטיח לך שאתה תבין את הרעיון :)

פורסם
  • מחבר

אוקיי תודה הבנתי :yelclap:

אני אנסה עוד שאלה ואם אני לא אצליח אני אכתוב פה שוב

תודה

פורסם

יעילות, חבר'ה....

מספיק לעשות את הלולאה עד num/2. ואת החישוב של num/2 תעשה לפני הלולאה ותשים במשתנה נפרד.

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

הנה קיצצת לך חצי מזמן הריצה של הלולאה.

פורסם

אם ביעלוית עסקנו....

לולאה יותר יעילה תיהיה לולאה שתעבור מ1 ועד שורש של NUM ואז להדפיס גם את המחלק וגם את תוצאת החילוק (כמובן עבור חילוק שנותן שארית 0).

פורסם
  • מחבר

אוקיי נתקעתי התרגיל השני

יש לי בעיה ואני יודע מהי אבל אין לי מושג איך לפתור אותה..

השאלה: כתבו תוכנית הקולטת מספר ומדפיסה האם המספר ראשוני או לא.

      int i, num, x;
x = 0;
i = 1;
Console.Write("enter num: ");
num = int.Parse(Console.ReadLine());
for (; i < num; i++)
{
if (num % i == 0) //לא ראשוני//
{ x =x+ 0; }
else //ראשוני//
{ x =x+1 ; }
}
if (x == 0)
{ Console.WriteLine("lo rishoni"); }
else
{ Console.WriteLine("rishoni"); }

הבעיה:

הוא כותב לי כל הזמן שהמספר ראשוני בגלל ש: אם לדוגמא נבחר מספר 4:

השארית של 4 עם 1 =0 >> x=x+0

השארית של 4 עם 2 =0 >> x=x+0

השארית של 4 עם 3 =/0 >> x=x+1

השארית של 4 עם 4 =0 >> x=x+0

עכשיו בגלל שכבר X לא שווה 0

אז זה כותב שהמספר ראשוני

ד"א אני יודע שהקוד שלי ממש מבולגן ואפשר לקצר אותו בטח במלא

אבל אני לא טוב בזה כ"כ xD

תודה לעוזרים

פורסם

אם כבר מדברים על יעילות, זה לא עד ל num/2 אלא עד לשורש הריבועי של num!

עריכה: אופס, לא ראיתי ש-mtnm רשם את זה כבר.

פורסם

תתחיל לספור מ i = 2.


for (i = 2; i < num; i++)
{
if (num % i == 0)
{
x = 1;
break;
}
}

פורסם

לא יעזור לו לדעת ישר את התשובה בוא נעזור לנתח את הבעיה שלו.

הבעיה המרכזית שלך היא בהחלטה האם המספר ראשוני או לא (כלומר ב4 שורות האחרונות).

אתה ניסית לספור כמה מחלקים יש למספר כלשהו אז להחליט האם הוא ראשוני או לא.

במקרה שלך מספר המחלקים (כלומר X) יהיה תמיד לפחות 1 כי כול מספר מתחלק מ1 בלי שארית.

ולכן מספר ראשוני יהיה מספר X==1 ומספר לא ראשוני יהיה מספר שX<1.

עכשיו נעבור לבעיות יותר זוטריות.

1. אין טעם לכתוב X = X + 0 - זה לא עושה כלום אז למה לכתוב את זה.

2. במקום X = X + Y נהוג לכתוב X+=Y

3. אתה לא ילד מכיתה א' תפסיק לכתוב מילים עיבריות באנגלית. מספר ראשוני == prime number.

זה, מקווה שעזרתי

פורסם
  • מחבר

לא יעזור לו לדעת ישר את התשובה בוא נעזור לנתח את הבעיה שלו.

הבעיה המרכזית שלך היא בהחלטה האם המספר ראשוני או לא (כלומר ב4 שורות האחרונות).

אתה ניסית לספור כמה מחלקים יש למספר כלשהו אז להחליט האם הוא ראשוני או לא.

במקרה שלך מספר המחלקים (כלומר X) יהיה תמיד לפחות 1 כי כול מספר מתחלק מ1 בלי שארית.

ולכן מספר ראשוני יהיה מספר X==1 ומספר לא ראשוני יהיה מספר שX<1.

עכשיו נעבור לבעיות יותר זוטריות.

1. אין טעם לכתוב X = X + 0 - זה לא עושה כלום אז למה לכתוב את זה.

2. במקום X = X + Y נהוג לכתוב X+=Y

3. אתה לא ילד מכיתה א' תפסיק לכתוב מילים עיבריות באנגלית. מספר ראשוני == prime number.

זה, מקווה שעזרתי

אוקי תודה

ובקשר ל3.

זה בסה"כ שיעורי בית אז זה לא כ"כ אכפת לי

אם זה היה משהו חשוב הייתי מסדר את זה יותר

קבעתי שI=2

אבל זה לא כל הפתרון לבעיה

  • 3 שבועות מאוחר יותר...
פורסם

יש דרך יותר פשוטה לעשות את זה:

    static void Main(string[] args)
{
int count, num;
count = 0;
Console.WriteLine("hahnes mispar:");
num = int.Parse(Console.ReadLine());
for (int i = 1; i <= (num / 2); i++)
{
if (num % i == 0)
count++;
}
if (count == 1)
Console.WriteLine("hamisper {0} rishoni", num);
else
Console.WriteLine("hamispar {0} lo rishoni", num);
}

מקווה שעדכני עדיין חח :)..

אבל זאת יעילות ..

פורסם

אם כבר יעילות זה לעשות break מהלולאה כשהגעת למסקנה שהתנאי לא מתקיים.

ארכיון

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

דיונים חדשים