PDA

View Full Version : سوال: کمک برای طراحی یک الگوریتم ساده



jalil_m
شنبه 02 اردیبهشت 1391, 01:16 صبح
سلام
فرض کنید من یک کلاس به اسم سوال طراحی کردم واسه نگه داشتن یک سری تست به صورت زیر

private class Question
{
string question;
string gozine1;
string gozine2;
string gozine3;
string gozine4;
int gozinedorost;
}



حالا میخوام یه تابع به اسم Rand و یکی به اسم DeRand بنویسم که تو تابع Rand گزینه ها جابجا بشن و گزینه درست هم عددش تغییر کنه و عدد گزینه صحیح داخلش باشه
تو تابع دوم میخوام بتونم این جابجایی گزینه هارو به شکل اول در بیارم.کسی میدونه چه جوری میتونم این کارو بکنم؟

masoudmok
شنبه 02 اردیبهشت 1391, 09:10 صبح
سلام
انجام این کار خیلی راحته منتها نه به این صورت !!!
شما می خوای حین اجرا سورس رو تغییر بدی ؟؟؟؟!!!
راهش اینه :
یه آرایه با طول 6 تعریف کنی . خونه ی اول شماره سوال . دوم جواب صحیح و سوم تا ششم گزینه هات .
برای هر سوال تابع random رو اجرا کنی .
نتیجه ی تابع بین 0 تا 1 هست . باید به چهار قسمت مساوی تقسیمش کنی و با توجه به هر قسمت هر بار یکی از گزینه های سوالو توی اون قسمت قرار بدی
مثلا نتیجه ی random اول میشه 0.60 . یعنی گزینه ی اولو باید توی خونه ی سوم ارایه قرار بدی . البته خونه ی سوم قسمت گزینه ها . در اصل پنجم
با این کار سوال اول میشه گزینه ی سوم . واسه همش باید همین کارو انجام بدی . فقط یادت باشه گزینه ی صحیح تغییر کرده رو هم ذخیره کنی

jalil_m
شنبه 02 اردیبهشت 1391, 13:36 عصر
سلام ممنونم میشه یه تیکه کد براش بذارید؟ ممنون میشم ضمنا تابع بازگشتش مهمتره

jalil_m
یک شنبه 03 اردیبهشت 1391, 18:42 عصر
کمک کنید لطفا

jalil_m
یک شنبه 03 اردیبهشت 1391, 19:09 عصر
ببینید من به کلاس Question یه پراپرتی به اسم key اضافه کردم که نشون میده چه جوری گزینه ها جابجا شده اند
مقادیر key هم تمام جایگشت های "1234" هست مثل "1324" "2341" "4231" و ...
تابع اولیه جابجایی رو هم نوشتم که درست کار میکنه اما تابع بازگشتش رو نمیدونم چه جوری بنویسم


public static List<Question> Rand(Question q2)
{
string[] s =
{
"4123","4132","4213","4231","4312","4321","1423","1432","1243","1234","1342","1324",
"2413","2431","2143","2134","2341","2314","3412","3421","3142","3124","3241","3214"
};
Random r = new Random((int)DateTime.Now.Ticks);
int i = r.Next(0, 24);
string key = s[i];
string[] ch = new string[4];
ch[0] = q2.Ch1;
ch[1] = q2.Ch2;
ch[2] = q2.Ch3;
ch[3] = q2.Ch4;
q2.Ch1 = ch[key.IndexOf('1')];
q2.Ch2 = ch[key.IndexOf('2')];
q2.Ch3 = ch[key.IndexOf('3')];
q2.Ch4 = ch[key.IndexOf('4')];

int newtr = key.IndexOf(char.Parse(q2.TrueCh.ToString()))+1;

q2.TrueCh = newtr;

q2.key = key;

return q2;
}

jalil_m
یک شنبه 03 اردیبهشت 1391, 20:22 عصر
ببخشید من چک کردم خط 21 جوابش غلط میشه
کسی نیست کمک کنه واقعااااااااااااااااااااا ااااااااااااااااااااااااا ااااااااااااااااا؟

Mahmoud.Afrad
یک شنبه 03 اردیبهشت 1391, 21:05 عصر
اگر از دیتابیس استفاده میکنید سوال همراه چهارگزینه و جواب صحیح رو ذخیره کنید(جواب صحیح رو هم به صورت رشته ذخیره کنید نه عدد)
در زمانی نمایش سوال و گزینه هاش کافیه به صورت رندوم چهار گزنیه رو نمایش بدید. مثلا توسط رادیو باتن. بعد موقع تصحیح امتحان کافیه تکست رادیوباتن انتخاب شده رو بدست بیارید و با جواب صحیح مقایسه کنید.

jalil_m
یک شنبه 03 اردیبهشت 1391, 21:55 عصر
میشه یه نمونه کد بذارید واسه رندوم نشون دادن گزینه ها؟