PDA

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



eftary
چهارشنبه 17 اردیبهشت 1393, 12:37 عصر
سلام
من میخوام یک برنامه بنویسم که مثلا یک جمله که مینویسم بهم بگه چند کلمه داره و هر کلمه چند حرف .118747

rahnema1
چهارشنبه 17 اردیبهشت 1393, 14:42 عصر
string jomle = "انجمن برنامه نویس";
string[] kalamat =jomle.Split(' ');
string matntextbox="تعداد کلمات" + "=" +kalamat.Length+"\n";
for (int i = 0; i < kalamat.Length; i++) {
matntextbox+=kalamat[i].Length+"="+(i+1)+ " کلمه"+"\n";
}
richTextBox1.Text=matntextbox;

eftary
چهارشنبه 17 اردیبهشت 1393, 19:00 عصر
تشکر

برنامه قبلو که برای نمایش در یک rich میریخت هر چی سعی کردم نمایش نداد.
ولی تویک lable ریختم نمایش داد.

الان من یکسری texbox و دکمه و ... گذاشتم ولی وقتی پنجره نرم افزار کوچیک بزرگ میکنم اونا سرجاشون هستن.
چی کنم که تا مثل برنامه های عادی دیگه برنامه منم ابزارم هم با کوچیک و بزرگ کردن پنجره تغییر کنن؟

rahnema1
پنج شنبه 18 اردیبهشت 1393, 09:30 صبح
کنترل ها یک property دارن به نام anchor که می تونید هر کنترل را به یک جای پنجره قفل کنید که با تغییر سایز پنجره، کنترل هم جابجا بشه

eftary
پنج شنبه 18 اردیبهشت 1393, 15:59 عصر
الان همشونو تو یک text ذخیره میکنم ولی نمیتونم بینشون اینتر بزنم که کنار هم تو text ذخیره نشود. چی کنم

بهشکل زیر ذخیره میشود

تعداد کلمات=13=1 کلمه

irartesh
پنج شنبه 18 اردیبهشت 1393, 17:36 عصر
خب بستگی داره کجا نمایش بدی
همون کدی که دوستمون دادن درسته ولی اگه میخوای توی ریچ تکست باکس نمایش بدی بجای "n\" از کد زیر استفاده کن
Environment.NewLine

تو تکست باکس هم که یه خط نشون میده در کل مگر اینکه خاصیت مولتی لاینو فعال کرده باشی که اونم همین روشی که گفتم استفاده کن

rahnema1
پنج شنبه 18 اردیبهشت 1393, 18:04 عصر
این یک نمونه ساده که ذخیره هم می کنه
http://uplod.ir/w2d5hsju307j/tedadkalame.zip.htm

eftary
پنج شنبه 18 اردیبهشت 1393, 19:30 عصر
الان من تو سیستمم فولدر میسازم ولی هر کاری میکنم تو فولدر برنامم فولدر درست نمیشه.


string folderName = @"c:\Program Files\myfol";
string pathString = System.IO.Path.Combine(folderName, "gm");
System.IO.Directory.CreateDirectory(pathString);

rahnema1
پنج شنبه 18 اردیبهشت 1393, 19:38 عصر
همون برنامه را اجرا کنید در فولدری که فایل exe قرار داره یک فایل به نام myfile.txt ذخیره میشه که اصلا مشکلی نداره.
من با notepad باز کردم هر کدوم در یک خط جداگانه قرار داشتند

eftary
پنج شنبه 18 اردیبهشت 1393, 20:11 عصر
الان من تو سیستمم فولدر میسازم ولی هر کاری میکنم تو فولدر برنامم فولدر درست نمیشه.


string folderName = @"c:\Program Files\myfol";
string pathString = System.IO.Path.Combine(folderName, "gm");
System.IO.Directory.CreateDirectory(pathString);

قبلی درست شده .تشکر
الان این مشکل دارم

rahnema1
پنج شنبه 18 اردیبهشت 1393, 20:38 عصر
اگه می خواهید توی اون فولدری که فایل exe هست ایجاد بشه کافیه بزنید:

System.IO.Directory.CreateDirectory("mg");

eftary
جمعه 19 اردیبهشت 1393, 12:01 عصر
الان میخوام تعداد کلمات و تعداد حرفاشون به int تبدیل کنم.


int[] myInt = Array.ConvertAll(kalamat, int.Parse);
ولی نشد

khokhan
جمعه 19 اردیبهشت 1393, 12:10 عصر
الان میخوام تعداد کلمات و تعداد حرفاشون به int تبدیل کنم.


int[] myInt = Array.ConvertAll(kalamat, int.Parse);
ولی نشد

.................................................. .........:لبخند:



string s = "My name is Uones";

int l = s.Length // تعداد کل حروف جمله
int w = s.Split(' ').Count(); // تعداد کلمات

eftary
دوشنبه 22 اردیبهشت 1393, 15:46 عصر
.................................................. .........:لبخند:



string s = "My name is Uones";

int l = s.Length // تعداد کل حروف جمله
int w = s.Split(' ').Count(); // تعداد کلمات

قبلا متغیر ها از نوع string بودن (چند آرایه داشتن) الان من میخوام اون string آرایه ای تبدیل کنم به INT

string[] kalamat = jomle.Split(' ');

rahnema1
دوشنبه 22 اردیبهشت 1393, 19:54 عصر
شما می تونستید یک آرایه int با ظرفیت kalamat.Length درست کنید و
توی همون حلقه for سایز هر کلمه را با kalamat[i].Length به دست بیارید و داخل[ myInt[i بریزید

این هم یک روش ساده تر:

using System.Linq;
//...
int[] myInt=kalamat.Select( k=>k.Length ).ToArray();

irartesh
دوشنبه 22 اردیبهشت 1393, 20:19 عصر
راهنما جان میشه بگی این خط کدت چیکار میکنه؟مشتاق شدم بدونم....یعنی الان تو ارایه ها چی میریزه؟مرسی

rahnema1
دوشنبه 22 اردیبهشت 1393, 21:32 عصر
اینجا ما داریم یک پرس و جوی linq را اجرا می کنیم
شما آرایه کلمات را به عنوان یک سری داده در نظر بگیرید و هدف ما اینه که از این سری داده یک چیزی را استخراج کنیم ( در اینجا طول هر کلمه)
پس سه قسمت داریم:
1. ورودی که همین آرایه کلمات هست
2. تابع تبدیل ( که ورودی را پردازش و تبدیل به خروجی می کند)
3. خروجی
با استفاده از select می گوییم ما داده های ورودی را جهت پردازش انتخاب می کنیم
اما داخل select در واقع یک تابع وجود داره اما این تابع یک تابع بدون نام هست
به این جور عبارات عبارات لاندا lambda expression می گن
a => b
که a عبارت است از پارامتر ورودی تابع
و b هم عبارتی هست که در داخل تابع اجرا بشه
حالا k=>k.Length یعنی ما یک متغیر دلخواه به نام K داریم ( که در اینجا از نوع string هست چون select داره روی یک آرایه string عمل می کنه) و قراره تابع مورد نظر طول اون رشته را به دست بیاره
بنابراین این عبارت روی تک تک رشته های موجود در آرایه این تابع را اعمال می کنه
یک نکته دیگه اینه که حتما باید از ToArray استفاده کنیم وگرنه این پرس و جو اجرا نمی شه . همچنین یک کار دیگه که ToArray انجام میده نتایج را به صورت آرایه در میاره

eftary
پنج شنبه 25 اردیبهشت 1393, 11:10 صبح
سلام . مجدد به دوستان. تشکر بابت جواب ها :تشویق:

من قبلا فایل ذخیره میکردم که با هاش مشکلی ندارم.
ولی الان میخوام یک گذینه اضافه کنم بنام Add که هر وقت اونو بزنی به فایل text ذخیره شدت نوشته های جدید اضافه بشود و قبلیا بمونه!
چطور این کارو انجام بدم؟

rahnema1
جمعه 26 اردیبهشت 1393, 05:28 صبح
System.IO.File.AppendAllText ("myfile.txt", richTextBox1.Text, System.Text.Encoding.Unicode );

eftary
جمعه 26 اردیبهشت 1393, 12:01 عصر
من با File.AppendAllText نوشتم . مشکلم حل شد.
تشکر

eftary
جمعه 26 اردیبهشت 1393, 20:03 عصر
هر کاری میکنم نمیتونم تعداد حروف هر کلمه به int تبدیل کنم!

rahnema1
جمعه 26 اردیبهشت 1393, 20:27 عصر
هر کاری میکنم نمیتونم تعداد حروف هر کلمه به int تبدیل کنم!

همون دستور select که نوشتم را استفاده کنید. چه طور نمیشه؟