עבור לתוכן

צריך עזרה בC# לולאות FOR

Featured Replies

פורסם

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

הנה התרגיל:

בתחרות מכוניות השתתפו N מכוניות. פתח ויישם אלוגריתם המקבל כקלט את הספר המכוניות ואת משך הזמן שלקח לכל מכונית לסיים את המסלול. פלט האלגוריתם: משך הזמן של המכונית הכי מהירה ומשך הזמן של המכונית במקום השני.

הנה הקוד שכתבתי:

      int n, num1=10000, num2=10000, i, sum;
Console.WriteLine("How many cars?");
n = int.Parse(Console.ReadLine());
for (i = 0; i < n; i++)
{
Console.WriteLine("How much time (sec)?");
sum = int.Parse(Console.ReadLine());
if (sum < num1)
{ num1 = sum; }
if (sum < num2 && sum<num2)
{ num2 = sum; }
}

Console.WriteLine("");
Console.WriteLine("{0} {1}", num1,num2);

הבעיה שלי היא שאני לא מצליח לקלוט את משך הזמן השני טוב. אם לדוגמא יהיו 3 מכוניות:

1. 34

2. 46

3. 31

הוא יקלוט את המהירה כ 31 ואת השניה כ-46 בגלל שה34 היה כבר תפוס כמכונית המהירה ביותר

איך אפשר לתקן את זה?

מקווה שהבנתם

תודה

פורסם

תעשה דבר כזה

תקלוט את מספר המכוניות (שחייב להיות גדול מ2)

תקלוט את הזמן הראשון ושים אותו בNUM1

תתחיל תFOR שיעשה N-1 פעמים

על כל אחד תבדוק לעומת NUM1 וNUM2 ותציב בהתאם

פורסם

בכל לולאה המשתנה נגיד קוראים לו tempTime נבדק, אם הוא הכי מהיר


if (num1 > tempTime)
{
num2 = num1;
num1 = tempTime;
}

פורסם

בתנאי שלך אתה מפספס את המקום השני...

פורסם


if (num1 > tempTime)
{
num2 = num1;
num1 = tempTime;
}
else if (num2 > tempTime)
{
num2 = tempTime
}



פורסם

בדיוק...

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

ארכיון

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

דיונים חדשים