תרגיל בעייתי שנתקלתי בו במבחנים של גאמא - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

תרגיל בעייתי שנתקלתי בו במבחנים של גאמא


Revertigo

Recommended Posts

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

התכנית מקבלת מספרים N ו D (שלמים וחיוביים, N<D) ומדפיסה את N/D כמספר עשרוני באופן הבא:

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

1/4 = 0.25 -> 0.25
1/7 = 0.142857142... -> 0.(142857)
5/6 = 0.8333... -> 0.8(3)

הם גם הוסיפו שבשביל הפשטות אפשר להניח ש N ו D הם בין 1-9, אם זה משנה.

למישהו יש פתרון אלגנטי לבעיה?

קישור לתוכן
שתף באתרים אחרים

למצוא את הסגנון של ה 1/7 הצלחתי יפה

אבל הבעיה הייתה ליצור אלגוריתם כולל שיעבוד על ה 5/6

קצת יותר בעייתי

אני עדיין חושב על משהו שיכלול הכל

אני בטוח שהם לא מצפים שנרשום פה תוכנית מסובכת , כי ככה מבינים שהבנאדם לא חושב

אני כמעט בטוח שזה אמור ליהיות משהו חשבוני, לפחות חלק ממנו

כי ברגע שאמרו לך זהם קטנים מ10 כלומר בין 1-9 זה יהיה משהו שעובד על ספירה עשרונית

יכול ליהיות שאני טועה, אבל סביר להניח שזה ככה

אני אמשיך לחשוב ואעדכן אותך

קישור לתוכן
שתף באתרים אחרים

הנה פתרון אפשרי, אפשר להרחיב את זה למקרים יותר כללים מההגבלות של 1-9, אבל אז צריך לממש חילוק שלם מלא יותר:


using System;
using System.Collections.Generic;
using System.Text;

namespace sequence
{
class Program
{
static string Sequence(int n, int d)
{
if (n < 1 || n > 9 | d < 1 || d > 9 || n >= d)
throw new Exception("go to hell");
StringBuilder str = new StringBuilder("0.");
List<int> reminders = new List<int>();
int t = n;
while (t != 0)
{
if (t < d)
t *= 10;
if (reminders.IndexOf(t) != -1)
break;
reminders.Add(t);
t = t - d * (t / d);
}
foreach (int i in reminders)
{
if (i == t)
str.Append('(');
str.Append(i / d);
}
if (t != 0)
str.Append(')');
return str.ToString();
}

static void Main(string[] args)
{
for (int x = 1; x <= 9; x++)
for (int y = 1; y < x; y++)
Console.WriteLine("{0}/{1}={2}", y, x, Sequence(y, x));
Console.ReadKey();
}
}
}

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...