PDA

View Full Version : سوال: جست و جو در متن و دادن تعداد حروف استفاده شده



scholargabriel
چهارشنبه 20 فروردین 1393, 19:01 عصر
سلام دوستان من میخوام یه برنامه بنویسم و اون را به روشی خاص باینری کدش کنم فقط مشکلم اینه که چطور تعداد حروف استفاده شده در تکس باکس را بدست بیارم؟
مثلا a پنج بار ، b 10 بار و... در متن استفاده شده
ممنون راهنماییم کنید

Sir-Programmer
چهارشنبه 20 فروردین 1393, 19:12 عصر
چطور تعداد حروف استفاده شده در تکس باکس را بدست بیارم؟
اینجوری :

textBox1.Text.Length.ToString();

us1234
چهارشنبه 20 فروردین 1393, 22:43 عصر
سلام دوستان من میخوام یه برنامه بنویسم و اون را به روشی خاص باینری کدش کنم فقط مشکلم اینه که چطور تعداد حروف استفاده شده در تکس باکس را بدست بیارم؟
مثلا a پنج بار ، b 10 بار و... در متن استفاده شده
ممنون راهنماییم کنید
« روش خاصی که کد کنید » منظورتون چیه ؟
برای پیدا کردن تعداد تکرار حروف یک راه خیلی ساده هست . با یک حلقه فور از اندکس 0 رشته شروع به پیمایش میکنید . هر حرفی را که دیدید در یک آرایه 2 بعدی قرار میدید . سطر اول آرایه حرف را سطر دوم آرایه تعداد تکرار همان حرف میشود. مثلا اگه در شروع رشته حرف a را ببنید این کارکتر را در خانه 0,0,0 قرار میدهید و در خانه 0,0,1 هم عدد 1 را به معنی اولین تکرار . بعد یک کارکتر جلو میرید اگه حرفی که دیدید در آرایه بود عددش را زیاد میکنید . اگه نبود اضافه اش میکنید .
این ساده ترین راه است و بدترین پیچیدگی زمان را داره . روش های بازگشتی هم هست که به مراتب سرعت عملکردش بالاتره که اینجا مجال توضیحش نیست .

مهرداد صفا
پنج شنبه 21 فروردین 1393, 01:16 صبح
با سلام.


string x = "abacdbcecabdf";
var q = x
.Select(ch => new { Char = ch, Count = x.Count(ch2 => ch2 == ch) })
.Distinct().OrderByDescending(i => i.Count);
listBox1.DataSource = q.ToList();

scholargabriel
جمعه 22 فروردین 1393, 10:57 صبح
با درستور جست و جو نمیشه؟
index of?
که بگرده دنبال حرف a مثلا و تعدادش را بگه؟

scholargabriel
جمعه 22 فروردین 1393, 11:09 صبح
در واقع میخوام تعداد یک کاراکتر را در متن به دست بیارم

scholargabriel
جمعه 22 فروردین 1393, 12:47 عصر
یافتم :لبخند::لبخند::لبخند::لبخند:
string str = textBox1.Text;
char srcha = 'a';
int counta = 0;
foreach (char item in str)
{
if (item == srcha)
counta++;
}

scholargabriel
جمعه 22 فروردین 1393, 12:48 عصر
string str = textBox1.Text;
char srcha = 'a';
int counta = 0;
foreach (char item in str)
{
if (item == srcha)
counta++;
}

scholargabriel
جمعه 22 فروردین 1393, 12:54 عصر
خوب حالا میخوام حروف را بر اساس کمترین استفاده سورت کنم:p?

مهرداد صفا
جمعه 22 فروردین 1393, 13:40 عصر
سلام.
برای یک کاراکتر از:


count=MyString.Count(ch=>ch==MyCharacter);
استفاده کنید و برای مرتب کردن به ترتیب کمترین استفاده کد پست قبلیم را استفاده کنید، فقط OrderByDescending رو به OrderBy تغییر بدید.

scholargabriel
جمعه 22 فروردین 1393, 18:34 عصر
پیدا نکردم متاسفانه
الان من 26 تا متغیر دارم که میخوام هر دفعه اینا بر اساس کوچیک به بزرگ مرتب بشن . میتونم از الگریتم مقایسه تک به تک برم ولی خیلی طولانی میشه :/ میخواستم ببینم کدی برای سریع کردنش داریم؟
min 26 پر کاربرد ترین حرف میشه و min 1 کم کاربرد ترین

int min1, min2, min3, min4, min5, min6, min7, min8, min9, min10, min11, min12, min13, min14, min15, min16, min17, min18, min19, min20, min21, min22, min23, min24, min25, min26;

us1234
جمعه 22 فروردین 1393, 18:54 عصر
شما به دنبال کد هافمن هستید ؟
این سورس آماده به شما خیلی کمک میکنه
http://snipd.net/huffman-coding-in-c

scholargabriel
جمعه 22 فروردین 1393, 19:21 عصر
بله مچکر
ولی من نمیخوام کپی پیست تحویل استاد بدم
یه الگریتم برای خودم طراحی کردم
اگه لطف کنید نحوه سورت کردنش را بهم یاد بدید ممنون میشم :)

us1234
جمعه 22 فروردین 1393, 21:56 عصر
( از وقتی که طراحی الگوریتم پاس کردم حدود 5 سالی گذشته اگه اشکالی داشت دوستان کمک کنند )
در کد هافمن مهمترین چیز نحوه تشکیل درخت است .
نحوه تشکیل درخت هم یک قانون کلی داره که فکر میکنم این باشه :
1- مرتبه تكرار هر حرف در آن متن را مشخص كنيم.
2- حروف را براساس مراتب تكرارشان به صورت صعودي مرتب كنيم.
3- از بالا به پايين شروع كرده و حروف را دو به دو به طوري كه جمعشان از همه كمتر باشد به هم وصل مي كنيم وحاصل جمع را مي نويسيم.
4- آن قدر مرحله شماره 3 را انجام مي دهيم تا فقط دو شماره ديگر باقي بماند كه وصل كردن آنها به هم فرزندان ريشه را تشكيل مي دهد و درخت هافمن كامل مي شود.

به این تصویر توجه کنید :
http://upload.wikimedia.org/wikipedia/commons/a/ac/Huffman_huff_demo.gif

وقتی درخت تشکیل شد به هر فرزند سمت چپ ( نود سمت چپ ) 0 و به فرزند سمت راست 1 میدهیم و از ریشه و سمت چپ شروع درآوردن کد ها میکنیم .
بهترین روشش هم با لیست پیوندی پیاده سازی میشه ولی هرجور دیگه پیاده سازی کنی به جواب میرسی .