PDA

View Full Version : تبديل يك عدد 8 رقمي به يك عدد 4 رقمي



afsharan
یک شنبه 22 فروردین 1389, 12:07 عصر
سلام
من مي خوام يك عدد 8 رقمي را به يك عدد 4 رقمي تبديل كنم اين عدد از 0 تا 99999999
مي باشد از دوستان ميخوام روي اين موضوع فكر كنند و منو راهنمايي كنند

M.T.P
یک شنبه 22 فروردین 1389, 17:12 عصر
به نظر من سوالتون یه کم مبهمه:متفکر:

Tasiyan
یک شنبه 22 فروردین 1389, 17:13 عصر
Mid(Text1, 1, 4)
:لبخند:

مهران رسا
یک شنبه 22 فروردین 1389, 17:37 عصر
سوال نا مفهومه . مگر اینکه منظورتون استفاده از توان ها باشه .

afsharan
دوشنبه 23 فروردین 1389, 08:34 صبح
سلام
اين عدد 8 رقمي توسط يك برنامه ي توليد ميشه كه عدد از0 تا 99999999 ميباشد محيطي كه من مي خوام اين
عدد رو نشون بدم 4 رقمي هستش حالا من مي خوام يك برنامه ي بنويسم كه اين عدد 8 رقمي روبگيره بعد با يك سري عمليات رياضي عدد رو تبديل كنه به 4 رقم تا بتونم نمايش بدم

afsharan
دوشنبه 23 فروردین 1389, 08:37 صبح
Mid(Text1, 1, 4)
:لبخند:
ميشه يك مثال بزني چون به نظر من اين كد اين كار رو نميكنه اين كد از داخل رشته 4 رقم انتخاب
ميكنه

look20
دوشنبه 23 فروردین 1389, 10:35 صبح
سلام اینم یه سری توابع که دوست عزیزم ali682344 (http://www.barnamenevis.org/forum/member.php?u=16272) به من یاد داده

Text1همون تکس باکسیه که عدد اصلی رو توی اون نوشتی
و Text2 همون تکس باکسیه عددی که تبدیل شده رو نمایش میده

انتخاب N رقم از راست یک عبارت ∞ کاراکتری:
(مثال 4 رقم آخر)


Text2.Text = Right(Text1, 4)


انتخاب N رقم از چپ یک عبارت ∞ کاراکتری:
(مثال 4 رقم اول)


Text2.Text = left(Text1, 4)


انتخاب N رقم از یک محل خواص در یک عبارت ∞ کاراکتری
(مثال از رقم 5 تا 7)

ساختارش به اينصورته :
محل شروع جداسازي: 5
طول جداسازي: 2


Text2.Text = Mid(Text1.Text, 5, 2)





انتخاب N رقم از یک محل خواص تا انتهای یک عبارت ∞ کاراکتری
(مثال از رقم 5 تا آخر)



Text2.Text = Mid(Text1.Text, 5, Len(Text1.Text))



انتخاب N رقم از راست یک عبارت M کاراکتری:
مثال 4 رقم آخر از عبارت 12 رقمی


Text2.Text = Mid$(Text1.Text, 9, 4)

afsharan
دوشنبه 23 فروردین 1389, 17:23 عصر
سلام
من ميخوام تبديل كنم نه جداكنم

M.T.P
دوشنبه 23 فروردین 1389, 18:11 عصر
سلام
من ميخوام تبديل كنم نه جداكنم

دوست عزیز همچین چیزی امکان نداره ، شما تنها راهی که داری اینه که اعداد بزرگتر از 4 رقم رو به یک عدد مشترک مثلا 10000 تقسیم کنید تا طول رشته کاهش پیدا کنه بعد عدد حاصله رو نمایش بدید و برای فهمیدن مقدار واقعی عدد مجددا حاصل رو در عدد 10000 ضرب کنید.
اما معمولا با اعشار مواجه میشید ،،،، فرض کنیم عدد شما 99999999 هست و وقتی شما اونو به 10000 تقسیم کنی حاصل میشه 9999.9999 خب حالا اعشارش رو چکار کنیم؟
شاید برای جلوگیری از اعشاری شدن بتونید اونها رو به عدد های مختلف تقسیم کنید مثلا اعدادی که به 2 بخشپذیرند یا اعدادی که به 0 یا 5 بخشپذیرند و...
:متعجب:خلاصه من که نفهمیدم:متعجب:

profnami
دوشنبه 23 فروردین 1389, 18:45 عصر
همون طور که گفتند امکان نداره . اصلا چطور ممکنه 1 عدد 8 رقمی رو 4 رقم کنید ؟ منطقی نیست !!!!!

Babak.Hassanpour
سه شنبه 24 فروردین 1389, 14:23 عصر
این کار با تبدیل مبنا ها امکان پذیر است.این نمونه که قرار می دهم تعداد کاراکتر را از 8 به 6 کاهش می دهد
تبدیل مبنای 10 به مبنای 36.بسته به نیازتون می توانید توسعه اش بدهید.


Private Sub Form_Load()
Dim i

i = Dec2Any(99999999, 36)
MsgBox i
MsgBox ConvertBase36ToBase10(CStr(i))
End Sub

Function Dec2Any(ByVal number As Long, ByVal base As Integer) As String
Dim index As Long
Dim digits As String
Dim digitValue As Long

If base < 2 Or base > 36 Then Err.Raise 5
digits = Left("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", base)

Do While number
digitValue = number Mod base
number = number \ base
Dec2Any = Mid$(digits, digitValue + 1, 1) & Dec2Any
Loop

End Function
Function ConvertBase36ToBase10(Base36Number As String) As Double
Dim X As Long, Total As Double, Digit As String
For X = Len(Base36Number) To 1 Step -1
Digit = UCase(Mid(Base36Number, X, 1))
ConvertBase36ToBase10 = ConvertBase36ToBase10 + IIf(IsNumeric(Digit), _
Digit, (Asc(Digit) - 55)) * (36 ^ (Len(Base36Number) - X))
Next
End Function

abas1388
چهارشنبه 25 فروردین 1389, 14:58 عصر
[quote=Babak.Hassanpour;951827]این کار با تبدیل مبنا ها امکان پذیر است.این نمونه که قرار می دهم تعداد کاراکتر را از 8 به 6 کاهش می دهد
تبدیل مبنای 10 به مبنای 36.بسته به نیازتون می توانید توسعه اش بدهید.
[code]
Private Sub Form_Load()
Dim i

i = Dec2Any(99999999, 36)
MsgBox i

MsgBox ConvertBase36ToBase10(CStr(i)

با سلام
چگونه ميتوانيم از كد فوق در حالتيكه بجاي عدد ثابت 99999999 يك عدد داشته باشيم كه ارقام آن متغير باشد مثلاً بجاي عدد 99999999 عددهاي 1234689754 يا 7548545154211254 و ...... ؟
البته بايد به عرض برسانم كه بنده در ارتباط با تبديل مبناها اطلاعاتي ندارم و بخاطر همين نتوانستم كد فوق را برحسب نيازم توسعه بدهم.
با تشكر

Babak.Hassanpour
جمعه 27 فروردین 1389, 13:08 عصر
[quote=Babak.Hassanpour;951827]این کار با تبدیل مبنا ها امکان پذیر است.این نمونه که قرار می دهم تعداد کاراکتر را از 8 به 6 کاهش می دهد
تبدیل مبنای 10 به مبنای 36.بسته به نیازتون می توانید توسعه اش بدهید.
[code]
Private Sub Form_Load()
Dim i

i = Dec2Any(99999999, 36)
MsgBox i

MsgBox ConvertBase36ToBase10(CStr(i)

با سلام
چگونه ميتوانيم از كد فوق در حالتيكه بجاي عدد ثابت 99999999 يك عدد داشته باشيم كه ارقام آن متغير باشد مثلاً بجاي عدد 99999999 عددهاي 1234689754 يا 7548545154211254 و ...... ؟
البته بايد به عرض برسانم كه بنده در ارتباط با تبديل مبناها اطلاعاتي ندارم و بخاطر همين نتوانستم كد فوق را برحسب نيازم توسعه بدهم.
با تشكر

کاری نداره دوست عزیز.براتون یک پروژه ضمیمه کردم.ببینید:

abas1388
شنبه 28 فروردین 1389, 07:40 صبح
[quote=abas1388;952618]

کاری نداره دوست عزیز.براتون یک پروژه ضمیمه کردم.ببینید:
جناب آقاي حسن پور سلام!
در نمونه فوق در تكست باكس desimal فقط اعداد تا 9 رقم قبول مي كند و براي اعدادي كه ارقام آن بيشتر از 9 است خطا صادر ميشود.
با تشكر

مهران رسا
شنبه 28 فروردین 1389, 23:16 عصر
بله با مبنا امکان پذیره اما فکر نمی کنم با هیچ کدوم از مبناها بشه عدد 8 رقمی رو به 4 رقمی تبدیل کرد . تازه اگه اینطور باشه بازهم نمیشه گفت عدد موجود به عدد جدیدی تبدیل شده . میشه بپرسم این سوال کجا مطرح شده ؟ آیا ایده خودتون هست ؟

Babak.Hassanpour
یک شنبه 29 فروردین 1389, 08:44 صبح
یک سری توابع اینکریپشن نیز هست که کار شما رو راه می اندازه.کمی فرصت بدید براتون پیدا می کنم.

afsharan
دوشنبه 26 مهر 1389, 06:27 صبح
یک سری توابع اینکریپشن نیز هست که کار شما رو راه می اندازه.کمی فرصت بدید براتون پیدا می کنم.
منتظريم توابع رو معرفي كنيد