رفتن به مطلب
  • 0

پیدا کردن اطراف یک عدد


FarzamPlus

سوال

با سلام و خسته نباشید به اساتید .

یه کد نوشتم که به صورت تصادفی سوال ریاضی میسازه مثلا جمع ، تفریق ، ضرب و ...

میخوام به صورت چهار جوابی باشه ، که توی اون گزینه ها اعداد به عدد جواب درست شبیه باشن یا نزدیک باشد.

مثلا اگر سوال : 10+15 بود که میشه 25 توی چهار گزینه ای ها 26-24-27 باشه

 

یه سوال دیگه اینکه 15+10 خب راحته ، چجوری میشه سوال رو به صورت ؟ + 10 = 25 ساخت ؟

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

1 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

درود. از کلاس زیر استفاده کنید. خروجی متد GenerateQuestion سوال جواب و گزینه ها رو داره. برای سوال آخر هم از همین ایده بگیرید

 

Sub Class_Globals
	Type QuestionModel(question As String,answer As Int, options(4) As Int)
End Sub

Public Sub Initialize
	
End Sub
Sub GenerateQuestion(minValue As Int,maxValue As Int) As QuestionModel
	Dim operations() As String = Array As String("+", "-", "*", "/")
	Dim operation As String = operations(Rnd(0, operations.Length))
	Dim a, b,answer As Int
	Select operation
		Case "+"
			a = Rnd(minValue, maxValue)
			b = Rnd(minValue, maxValue)
			answer = a + b
		Case "-"
			a = Rnd(minValue, maxValue)
			b = Rnd(minValue, a + 1)
			answer = a - b
		Case "*"
			a = Rnd(minValue, maxValue)
			b = Rnd(minValue, maxValue)
			answer = a * b
		Case "/"
			b = Rnd(minValue, maxValue)
			answer = Rnd(minValue, maxValue)
			a = answer * b
	End Select
	Dim qestion As QuestionModel:qestion.Initialize
	qestion.question=$"${a} ${operation} ${b}"$
	qestion.answer=answer
	qestion.options=GenerateOptions(answer)
	Return qestion
End Sub

private Sub GenerateOptions(answer As Int) As Int()
	Dim position As Int=Rnd(0,3)
	Dim options(4) As Int
	Select position
		Case 0:
			options= Array As Int(answer,answer+1,answer+2,answer+3)
		Case 1:
			options= Array As Int(answer-1,answer,answer+1,answer+2)
		Case 2:
			options= Array As Int(answer-2,answer-1,answer,answer+1)	
		Case Else:
			options= Array As Int(answer-3,answer-2,answer-1,answer)
	End Select
	Return ShuffleArray(options)
End Sub

private Sub ShuffleArray(arr() As Int) As Int()
	Dim shuffled(arr.Length) As Int
	Dim indices As List
	indices.Initialize
	For i = 0 To arr.Length - 1
		indices.Add(i)
	Next
	For i = 0 To arr.Length - 1
		Dim index As Int = Rnd(0, indices.Size)
		shuffled(i) = arr(indices.Get(index))
		indices.RemoveAt(index)
	Next
	Return shuffled
End Sub

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...