PDA

View Full Version : سوال: کاراکتر های استفاده شده در یک متن(تکس باکس) به همراه تعداد تکرار ان



irangavedany
دوشنبه 26 مهر 1389, 23:08 عصر
چگونه کاراکتر های استفاده شده در یک متن را به همراه تعداد تکرار ان دریک لیست باکس چاپ کنم

group45
دوشنبه 26 مهر 1389, 23:24 عصر
سلام
یه راه ا 1000 راه:
یه لیست باکس دیگه تعریف کن بعد تکتک کاراکتر ها رو توش add کن. بعد هر کاراکتری رو که میخونه یکی به شمارنده اضافه کنه و اگه تکراری دید حذفش کنه تا تعداد مقایسه های بعدی کمتربشه.بعد آخر سر اون کاراکتر با تعداد تکراذشو به یه لیست باکس اولت add کن.

mehdi.mousavi
دوشنبه 26 مهر 1389, 23:53 عصر
سلام.
می تونید به این شکل عمل کنید:


string inputString = "aaaassseee2";

Dictionary<int, int> frequencies = new Dictionary<int, int>();
foreach (char ch in inputString)
{
if (frequencies.ContainsKey((int)ch))
frequencies[(int)ch]++;
else
frequencies.Add((int)ch, 1);
}

foreach (KeyValuePair<int, int> frequency in frequencies)
System.Diagnostics.Debug.WriteLine("The frequency of {0} is {1}.", (char)frequency.Key, frequency.Value);


بدین ترتیب هر حرف با بسامد تکرارش بدست میاد.
اضافه کردنش به لیست هم که بسادگی میسره.

موفق باشید.

irangavedany
سه شنبه 27 مهر 1389, 00:12 صبح
سلام ازشما بابت جوابتون ممنونم ولی میشه توضیح مختصری در موردکدی که نوشتید بدهید
:متفکر:

محسن شامحمدی
سه شنبه 27 مهر 1389, 10:18 صبح
سلام ازشما بابت جوابتون ممنونم ولی میشه توضیح مختصری در موردکدی که نوشتید بدهید
:متفکر:

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

ایشون یک دیکشنری ساخته(نام یک کلاس است) که دو ستون داره.
یکی ستون کاراکتر و یکی تعداد تکرارش

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



frequencies.Add((int)ch, 1);


کاراکتر رو به دیکشنری اضافه کن

و در آخر هم به ازای هر کاراکتری که توی دیکشنری هست یک بار حلقه اجرا می شه و کاراکتر و تعداد تکرارشو چاپ می کنه



foreach (KeyValuePair<int, int> frequency in frequencies)

System.Diagnostics.Debug.WriteLine("The frequency of {0} is {1}.", (char)frequency.Key, frequency.Value);