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

ساخت سوال ریاضی


FarzamPlus

سوال

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

میخوام سوال ریاضی تولید کنم ، مثلا : 15+10*6

اعداد دوتایی رو بلدم .

ولی 3 تایی سخت میشه و باید اولویت توی معادله درست باشه .

یعنی اگر سوال : 6*10+2 جواب بشه 62

یا مثلا توی 5/10*6 = 3

Sub QuestionHard1(minValue As Int,maxValue As Int) As QuestionModel
	Dim operations() As String = Array As String("+", "-", "x", "÷")
	Dim operation1 As String = operations(Rnd(0, operations.Length))
	Dim a, b,c,answer As Int
	
	Select operation1
		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 "x"
			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
	
	L_Quzie.Text = a & " " & operation1 & " " & b 
	
	AnsverNum=answer


	Dim operation2 As String = operations(Rnd(0, operations.Length))
	Select operation2
		Case "+"
			a = AnsverNum
			c = Rnd(minValue, maxValue)
			answer = a + c
			
		Case "-"
			a = AnsverNum
			c = Rnd(minValue, a + 1)
			answer = a - c
			
		Case "x"
			
				Select operation1
					Case "+"
						c =Rnd(minValue, maxValue)
						
						answer = b * c
						answer = a + answer
						
					Case "-"
						c =Rnd(minValue, maxValue)
						answer = b * c
						answer = a - answer
					Case "÷"
						
						c =Rnd(minValue, maxValue)
						answer = Rnd(minValue, maxValue)
						b= answer * c
						answer = a * b
					Case "x"
					a = AnsverNum
					c = Rnd(minValue, maxValue)
					answer = a * c
				End Select
			
		Case "÷"
			
			c = Rnd(minValue, maxValue)
			
			answer = AnsverNum
			answer = answer / c
			
	End Select

	AnsverNum=answer
	
	L_Quzie.Text = L_Quzie.Text & " " & operation2 & " " & c & " = ?"
	
	GenerateOptions(answer)
	
	
End Sub

 

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

مثلا : 7*10-7 =  -63 نمیخوام اینجوری بشه .

 

کسی هست کمک کنه ؟؟؟

 

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

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

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

  • 0
۱۳ ساعت قبل، FarzamPlus گفته است:

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

میخوام سوال ریاضی تولید کنم ، مثلا : 15+10*6

اعداد دوتایی رو بلدم .

ولی 3 تایی سخت میشه و باید اولویت توی معادله درست باشه .

یعنی اگر سوال : 6*10+2 جواب بشه 62

یا مثلا توی 5/10*6 = 3

 

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

مثلا : 7*10-7 =  -63 نمیخوام اینجوری بشه .

 

کسی هست کمک کنه ؟؟؟

 

درود. من کلیت سوالتون رو متوجه نشدم عزیز. لطفا کاملتر توضیح بدین

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

ابتدا فایل رو تو پوشه  additionallibs کپی کنید

خط زیر رو اضافه کنید

#Region  Project Attributes 
	#AdditionalJar: EvalEx-2.6
#End Region

متد جاوای زیر رو به اکتیویتی اضافه کنید

#If java
import com.udojava.evalex.Expression;
public String evaluateExpression(String expression) {
    try {
        Expression exp = new Expression(expression);
        return exp.eval().toString();
    } catch (Exception e) {
        return "Error";
    }
}
#End If

ساب زیر رو اضافه کنید

Private Sub calculate(exp As String) As String
	Dim jo As JavaObject
	Return jo.InitializeContext.RunMethod("evaluateExpression",Array(exp))
End Sub

و به شکل زیر استفده کنید

Dim x As String=calculate("6/4-5*6+8")
	Log(x)

 

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

  • 0
13 ساعت قبل، محمدرضا شاهپیری گفته است:

درود. من کلیت سوالتون رو متوجه نشدم عزیز. لطفا کاملتر توضیح بدین

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

ابتدا فایل رو تو پوشه  additionallibs کپی کنید

خط زیر رو اضافه کنید

#Region  Project Attributes 
	#AdditionalJar: EvalEx-2.6
#End Region

متد جاوای زیر رو به اکتیویتی اضافه کنید

#If java
import com.udojava.evalex.Expression;
public String evaluateExpression(String expression) {
    try {
        Expression exp = new Expression(expression);
        return exp.eval().toString();
    } catch (Exception e) {
        return "Error";
    }
}
#End If

ساب زیر رو اضافه کنید

Private Sub calculate(exp As String) As String
	Dim jo As JavaObject
	Return jo.InitializeContext.RunMethod("evaluateExpression",Array(exp))
End Sub

و به شکل زیر استفده کنید

Dim x As String=calculate("6/4-5*6+8")
	Log(x)

 

خب نگاه کنید منظورم اینه چجوری میشه سوال درست کرد که 3 تا عدد با هم عملیات ریاضی رو انجام بده . بدون اینکه عدد خروجی منفی بشه ؟؟؟

یا موقع تقسیم عدد صحیح باشه ...

 

اون سورسی که شما برای من فرستادین برای محاسبه دو عدد خیلی خوبه ولی توی 3 تا عدد یا 4 تا عدد داستان عوض میشه ...

میخوام این ترتیب اعداد درست در بیاد : مثلا نشه 2*10-5 اینجوری خورجی منفی میشه .

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

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .
توجه: مطلب ارسالی شما پس از تایید مدیریت برای همه قابل رویت خواهد بود.

مهمان
پاسخ به این سوال ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

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

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