الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التحويل من كسر عشري الي كسر اعتيادي

مغلق
بدأه elbzar في 5 يناير 2008 · 2 رد · 7,195 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاتة

بعد طول غياب عن المنتدي أرجو من اخواني أعضاء المنتدي الكرام خصوصاً حزووووم تقبل عذري

وأهدي هذة الخوارزمية لكم جميعاً

للتحويل من الكسر العشري الي الكسر الاعتيادي أي مثلاً من 0.25 ال 1/4 هناك طريقتين

الطريقة الأولي :

تعتمد علي ايجاد بسط وايجاد مقام من الرقم المعطي 0.25 مثلا سيكون البسط 25 والمقام 100ثم سنقوم بتجربة قسمة كل منهم علي نفس الرقم حتي نصل للنهاية الي 1 في البسط و 4 في المقام

	Public Function GetFraction(ByVal value As String) As String
			   Dim HolderValue As Integer ' تحديد قيمة المقام الأولية 10 او 100 او 1000 الخ
				Dim numerator As Integer ' البسط
				Dim denominator As String = "1"  المقام
				Dim result As String
				Dim x As Integer
				Dim i As Integer
				Dim holdnum, holdden As Integer
				HolderValue = value.Length - 1
				For i = 1 To HolderValue
					denominator += "0"
				Next
				numerator = value * denominator
				For x = 1 To numerator
					If (((numerator Mod x) = 0) And ((denominator Mod x) = 0)) Then
						holdnum = numerator / x
						holdden = denominator / x
					End If
				Next
				Return holdnum & "/" & holdden
		End Select
	End Function

هذة الطريقة تحتوي بعض المشاكل حيث ان هناك بعض الكسور ذات قيمة لانهائية مثل 1/3 = 0.33333333333333333333333الي مالا نهاية

وبالتالي سيعطيك البرنامج error= Overflow

ولحل هذة المشكلة نستيع ان نتبع الطريقة الثانية

وهي تعتمد علي المطابقة من خلال بحث داخل متوالية من الأرقام

وتجربة قسمة رقم علي رقم حتي يتم المطابقة بين الكسر العشري ونتيجة هذة القسمة

مثال :

   Public Function frag(ByVal value As String) As String
		Dim i, s As Integer
		Dim D As Double = Math.Round(Val(value), 5)
		For i = 1 To 9999 '''''المقام
			For s = 0 To 9999 '''''' البسط
				If D = Math.Round(s / i, 5) Then
					frag = s & "/" & i
					Return frag
					Exit Function
				End If
			Next
		Next
		Return frag
	End Function

وشكراً

والسلام عليكم ورحمة الله وبركاته

أرجو ان أكون قدمت فائدة.

وفي انتظار ردودكم واستفساراتكم

#2

حمدالله عالسلامة أخي أسامة فينك ياراجل :)

بارك الله فيك علي مشاركتك وجعلها في ميزان حسناتك ,,,

#3

الله يكرمك يا حزووم والله لك وحشة

شكراً علي الرد الرقيق

هذا الموضوع مغلق.

مواضيع مشابهة