עבור לתוכן

שאלה קטנה ב-C#

Featured Replies

פורסם

אוקי אני די מתחיל ב-C# נתנו לנו את התרגיל הבא:

צריך לכתוב תכנית שמגרילה 40 מספרים מ- מינוס 100 עד 50. הפלט הוא הערך המקסימלי שהוגרל וכמה מספרים בעלי ערך זהה הוגרלו.

בנתיים הצלחתי את כל התרגיל חוץ ממציאת כמה מספרים בעלי אותו הערך הוגרלו.

דרך אגב, השתמשתי במערכים ורנדום.

{

Random rnd = new Random();

int[] a = new int[41];

int i,max,same;

max=-101;

same=0;

Console.WriteLine("This prog. randomizes 40 numbers and calculates the MAX number.");

for (i = 1; i < 41; i++)

{

a = rnd.Next(-100, 50);

Console.Write("{0}.", i);

Console.WriteLine("{0}", a);

if (a > max)

max = a;

}

Console.WriteLine("The max number is {0} which appeares {1} times.", max, same);

}

same אמור להיות המשתנה של מספר הפעמים שהערך המקסימלי מופיע, אבל אני לא מוצא איך להשתמש בו. :(

(כן כן, C# של מתחילים ^^)

תודה רבה לעוזרים.

עריכה: משום מה הפורום מחק את כל הסוגריים מרובעים ו-i אחרי כל a.

פורסם

צריך למצוא מספרים בעלי אותו ערך שהוגרלו מהמקסימום?

ז"א אם הוגרל בין המספרים 49 (שלוש פעמים, הכי גבוהה) ו 20 (חמש פעמים) אז להציג רק את 49 שהוגרל 3 פעמים או גם את 20?

פורסם
  • מחבר

צריך למצוא מספרים בעלי אותו ערך שהוגרלו מהמקסימום?

ז"א אם הוגרל בין המספרים 49 (שלוש פעמים, הכי גבוהה) ו 20 (חמש פעמים) אז להציג רק את 49 שהוגרל 3 פעמים או גם את 20?

רק את 49 ובפלט שלוש פעמים. :)

פורסם


Random rnd = new Random();
int[] raffledNums = new int[40];
int i, max, min, raffledMaxNum,MaxNumDuplicator;
string MaxDuplicatedNumArrayIndex;

max = 50;
min = -100;
raffledMaxNum = -100;
MaxNumDuplicator = 0;
MaxDuplicatedNumArrayIndex = "Array(";

Console.WriteLine("This prog. randomizes 40 numbers and calculates the MAX number.\n");

for (i = 0; i < 40; i++)
{
raffledNums[i] = rnd.Next(min, max);
Console.WriteLine("{0} = {1}", i, raffledNums[i]);

if (raffledNums[i] > raffledMaxNum) // New max number
raffledMaxNum = raffledNums[i];
System.Threading.Thread.Sleep(100);
}

Console.WriteLine("\nCalculating results...");

for (i = 0; i < 40; i++)
{
if (raffledNums[i] == raffledMaxNum) // Same max number (duplicated)
{
MaxNumDuplicator++;

if (MaxNumDuplicator != 1)
MaxDuplicatedNumArrayIndex += ",";

MaxDuplicatedNumArrayIndex += i;
}
}
MaxDuplicatedNumArrayIndex += ");";

System.Threading.Thread.Sleep(1000);

Console.WriteLine("\nThe maximum number is: {0}", raffledMaxNum);
Console.WriteLine("The maximum number has been raffled {0} time(s).\nDuplicated max number array index: \"" + MaxDuplicatedNumArrayIndex + "\"", MaxNumDuplicator);
Console.Read();

שיפרתי לך את הלוגיקה של האפליקציה והוספתי את מה שהסתבכת בו, תהנה ומקווה שתלמד ממנו ;)

עריכה:

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

וסתם בשביל הקטע הוספתי אפקט הגרלה בזמן אמת :P

פורסם
  • מחבר


Random rnd = new Random();
int[] raffledNums = new int[40];
int i, max, min, raffledMaxNum,MaxNumDuplicator;

max = 50;
min = -100;
raffledMaxNum = -100;
MaxNumDuplicator = 0;

Console.WriteLine("This prog. randomizes 40 numbers and calculates the MAX number.\n");

for (i = 0; i < 40; i++)
{
raffledNums[i] = rnd.Next(min, max);
Console.WriteLine("{0} = {1}", i, raffledNums[i]);

if (raffledNums[i] > raffledMaxNum) // New max number
raffledMaxNum = raffledNums[i];
System.Threading.Thread.Sleep(100);
}

Console.WriteLine("\nCalculating results...");

for (i = 0; i < 40; i++)
{
if (raffledNums[i] == raffledMaxNum) // Same max number (duplicated)
MaxNumDuplicator++;
}
System.Threading.Thread.Sleep(1000);

Console.WriteLine("\nThe maximum number is: {0}", raffledMaxNum);
Console.WriteLine("The maximum number has been raffled {0} time(s).", MaxNumDuplicator);
Console.Read();

שיפרתי לך את הלוגיקה של האפליקציה והוספתי את מה שהסתבכת בו, תהנה ומקווה שתלמד ממנו ;)

עריכה:

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

וסתם בשביל הקטע הוספתי אפקט הגרלה בזמן אמת :P

תודה רבה. :xyxthumbs: עזרת לי מאוד.

פורסם

בבקשה :)

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

וד"א, ערכתי שוב את הקוד שבתוצאות יכיל באילו index ים נמצאו מספרים שהוגרלו כמה פעמים.

(הפעם זה סופי.. עפתי לישון)

ארכיון

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

דיונים חדשים