PDA

View Full Version : سوال: خروجی گرفتن از یک عبارت رشته ای متغیر بصورت یک عبارت رشته ای دیگر



atf1379
سه شنبه 03 بهمن 1402, 11:53 صبح
سلام
فرض کنید یک عبارت رشته ای متغیر که از 6 عدد تشکیل شده اند بصورت زیر داریم:
Dim strword1 As String
Dim strword2 As String
strword = "5,0,1,2,3,4"


حالا میخواهیم یک خروجی رشته ای از این عبارت بگیریم بطوریکه :
عدد 0 مساوی A
عدد 1 مساوی B
عدد 2 مساوی C
عدد 3 مساوی D
عدد 4 مساوی E
عدد 5 مساوی F
و خروجی رشته ای عبارت بصورت زیر باشد:

strword2 = "F,A,B,C,D,E"
با توجه به متغیر بودن رشته عددی ورودی رشته حروفی خروجی نیز باید متغیر باشد . به عبارتی اگر اعداد در رشته اول جابجا شدند رشته حروف هم به همان ترتیب جابجا شوند. یا بطور خلاصه عرض کنم در هر حالتی به اعداد فوق حروف مربوطه اختصاص پیدا کند حتی در صورت جابجائی
ضمناً میخواهم خروجی رو بصورت آرایه بدست بیارم(از لحاظ آموزشی) ؟
ممنون

mazoolagh
سه شنبه 03 بهمن 1402, 20:01 عصر
سلام و روز خوش

1- با split رشته ورودی رو به array تبدیل کنین
2- در یک حلقه، هر آیتم رو به کد اسکی A به مقدار آیتم تغییر بدین
3- array رو join کنین (برای رشته خروجی) و گرنه که پاسخ آماده است

atf1379
چهارشنبه 04 بهمن 1402, 13:01 عصر
سلام و روز خوش

1- با split رشته ورودی رو به array تبدیل کنین
2- در یک حلقه، هر آیتم رو به کد اسکی A به مقدار آیتم تغییر بدین
3- array رو join کنین (برای رشته خروجی) و گرنه که پاسخ آماده است

سلام استاد
ممنون از پیگیریتون
در پست اول بنده یادم رفت که اشاره کنم که بجای حروف لاتین A,B,C.. ممکنه یک کلمه قرار گیرد .

ROSTAM2
چهارشنبه 04 بهمن 1402, 16:42 عصر
سلام استاد
ممنون از پیگیریتون
در پست اول بنده یادم رفت که اشاره کنم که بجای حروف لاتین A,B,C.. ممکنه یک کلمه قرار گیرد .

سلام.
می تونید از تابع Choose هم کمک بگیرید ازونجایی که ورودی یک عدد هست کار رو راحت می کنه...

Choose function (Visual Basic for Applications) | Microsoft Learn (https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/choose-function)

ROSTAM2
چهارشنبه 04 بهمن 1402, 16:59 عصر
2- در یک حلقه، هر آیتم رو به کد اسکی A به مقدار آیتم تغییر بدین


سلام
در مورد این آیتم دوم من اطلاعاتی ندارم، لطفا یک نمونه کد بنویسید.

ROSTAM2
چهارشنبه 04 بهمن 1402, 21:20 عصر
سلام
فرض کنید یک عبارت رشته ای متغیر که از 6 عدد تشکیل شده اند بصورت زیر داریم:
Dim strword1 As String
Dim strword2 As String
strword = "5,0,1,2,3,4"


حالا میخواهیم یک خروجی رشته ای از این عبارت بگیریم بطوریکه :
عدد 0 مساوی A
عدد 1 مساوی B
عدد 2 مساوی C
عدد 3 مساوی D
عدد 4 مساوی E
عدد 5 مساوی F
و خروجی رشته ای عبارت بصورت زیر باشد:

strword2 = "F,A,B,C,D,E"
با توجه به متغیر بودن رشته عددی ورودی رشته حروفی خروجی نیز باید متغیر باشد . به عبارتی اگر اعداد در رشته اول جابجا شدند رشته حروف هم به همان ترتیب جابجا شوند. یا بطور خلاصه عرض کنم در هر حالتی به اعداد فوق حروف مربوطه اختصاص پیدا کند حتی در صورت جابجائی
ضمناً میخواهم خروجی رو بصورت آرایه بدست بیارم(از لحاظ آموزشی) ؟
ممنون

تبدیل رشته حاوی عدد به رشته و آرایه حاوی حروف و کلمات (https://barnamenevis.org/showthread.php?577796-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D8%B1%D8%B4%D8%AA%D9%87-%D8%AD%D8%A7%D9%88%DB%8C-%D8%B9%D8%AF%D8%AF-%D8%A8%D9%87-%D8%B1%D8%B4%D8%AA%D9%87-%D9%88-%D8%A2%D8%B1%D8%A7%DB%8C%D9%87-%D8%AD%D8%A7%D9%88%DB%8C-%D8%AD%D8%B1%D9%88%D9%81-%D9%88-%DA%A9%D9%84%D9%85%D8%A7%D8%AA)

atf1379
پنج شنبه 05 بهمن 1402, 09:52 صبح
سلام و روز خوش

1- با split رشته ورودی رو به array تبدیل کنین
2- در یک حلقه، هر آیتم رو به کد اسکی A به مقدار آیتم تغییر بدین
3- array رو join کنین (برای رشته خروجی) و گرنه که پاسخ آماده است

سلام استاد
ممنون از راهنمائیتون
توضیحات جنابعالی خیلی تخصصی بود و بنده متوجه نشدم برای حل مسئله باید چکار کنم

atf1379
پنج شنبه 05 بهمن 1402, 10:11 صبح
تبدیل رشته حاوی عدد به رشته و آرایه حاوی حروف و کلمات (https://barnamenevis.org/showthread.php?577796-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D8%B1%D8%B4%D8%AA%D9%87-%D8%AD%D8%A7%D9%88%DB%8C-%D8%B9%D8%AF%D8%AF-%D8%A8%D9%87-%D8%B1%D8%B4%D8%AA%D9%87-%D9%88-%D8%A2%D8%B1%D8%A7%DB%8C%D9%87-%D8%AD%D8%A7%D9%88%DB%8C-%D8%AD%D8%B1%D9%88%D9%81-%D9%88-%DA%A9%D9%84%D9%85%D8%A7%D8%AA)



سلام
ممنون از آموزشتون ولی باور کنین متوجه توضیحات شما در قسمت کد نویسی نشدم
البته مشکل از طرف بنده میباشد که با مبحث آرایه خیلی آشنائی ندارم

ظاهراً رسیدن به جواب از طریق آرایه برای بنده کار آسانی نیست بخاطر همین ممنون میشم اگه برای این مسئله راه حل دیگه ای وجود داره با نوشتن کد مربوطه راهنمائی فرمایند
با تشکر

eb_1345
پنج شنبه 05 بهمن 1402, 10:46 صبح
البته مشکل از طرف بنده میباشد که با مبحث آرایه خیلی آشنائی ندارم

ظاهراً رسیدن به جواب از طریق آرایه برای بنده کار آسانی نیست بخاطر همین ممنون میشم اگه برای این مسئله راه حل دیگه ای وجود داره با نوشتن کد مربوطه راهنمائی فرمایند

سلام
راه حل زیر که در اون از تابع Choice و حلقه for ...next استفاده شده بررسی کن!


Dim strword1 As String
Dim strword2 As String
Dim I As Integer
Function GetChoice(Ind As Integer)
GetChoice = Choose(Ind + 1, "A", "B", "C", "D", "E", "F")
End Function
Private Sub Command0_Click()
On Error Resume Next
strword1 = "5,0,1,2,3,4"
strword1 = Replace(strword1, ",", "")
For I = 0 To Len(strword1)
strword2 = strword2 & "," & GetChoice(Mid(strword1, I, 1))
Next
strword2 = Right(strword2, Len(strword2) - 1)
MsgBox strword2
End Sub

atf1379
پنج شنبه 05 بهمن 1402, 15:51 عصر
سلام
راه حل زیر که در اون از تابع Choice و حلقه for ...next استفاده شده بررسی کن!


Dim strword1 As String
Dim strword2 As String
Dim I As Integer
Function GetChoice(Ind As Integer)
GetChoice = Choose(Ind + 1, "A", "B", "C", "D", "E", "F")
End Function
Private Sub Command0_Click()
On Error Resume Next
strword1 = "5,0,1,2,3,4)"
For I = 0 To Len(strword1)
strword2 = strword2 & "," & GetChoice(Mid(strword1, I, 1))
Next
strword2 = Right(strword2, Len(strword2) - 1)
MsgBox strword2
End Sub


سلام
بسیار عالی :تشویق::تشویق::تشویق:
ممنونم

eb_1345
پنج شنبه 05 بهمن 1402, 16:08 عصر
کدهای پست 9 ویرایش شد

mazoolagh
پنج شنبه 05 بهمن 1402, 17:20 عصر
سلام
در مورد این آیتم دوم من اطلاعاتی ندارم، لطفا یک نمونه کد بنویسید.

سلام و روز خوش

باید دقیقتر مینوشتم:


2- در یک حلقه، هر آیتم رو به کارآکتر با (کد اسکی حرف A به اضافه مقدار آیتم) تغییر بدین
Dim strword1 As String
Dim strword2 As String
strword1 = "5,0,1,2,3,4"


dim i as integer
dim a ' as variant
a= split(strword1 , ",")
for i= 0 to ubound(a)
a(i)= chr(a(i) + asc("A"))
next i
strword2= join(a , ",")

mazoolagh
پنج شنبه 05 بهمن 1402, 17:36 عصر
سلام استاد
ممنون از راهنمائیتون
توضیحات جنابعالی خیلی تخصصی بود و بنده متوجه نشدم برای حل مسئله باید چکار کنم

سلام و روز خوش
پست 12 رو ببینین

برای پرسش (تمرین درسی؟) شما به همین شکل مطرح شده (جایگزینی اعداد 0 تا 26 با حروف A تا Z) همین کد ساده کافی هست،
ولی اگر به جای حروف لیستی از کلمات رندوم باشه، باید راه حل رستم خان و جناب بهرامی رو استفاده کنین که هر دو حالت رو پوشش میده و جنرال هست.

atf1379
جمعه 06 بهمن 1402, 15:34 عصر
سلام و روز خوش
پست 12 رو ببینین

برای پرسش (تمرین درسی؟) شما به همین شکل مطرح شده (جایگزینی اعداد 0 تا 26 با حروف A تا Z) همین کد ساده کافی هست،
ولی اگر به جای حروف لیستی از کلمات رندوم باشه، باید راه حل رستم خان و جناب بهرامی رو استفاده کنین که هر دو حالت رو پوشش میده و جنرال هست.
سلام استاد
سپاسگزارم