منتخب بازارچه

برگزیده های پرشین تولز

پاسكال فوري فوري

amironline

Registered User
تاریخ عضویت
25 نوامبر 2003
نوشته‌ها
671
لایک‌ها
0
محل سکونت
Tabriz
اينجا كسي هست پاسكال بلد باشه يا لااقل يه سايت معرفي كنه كه
سورس پاسكال داشته باشه چون چند تا پروژه هست كه بايد هفته آينده
تحويل بدم. :( :(
خييييييييلي ممممممممممممممنون
;) ;) ;)

http://www.tabhoo.com[/url]
 

amironline

Registered User
تاریخ عضویت
25 نوامبر 2003
نوشته‌ها
671
لایک‌ها
0
محل سکونت
Tabriz
آقا تو رو جون هركسي كه دوستش دارين كمكم كنيد
پروژه هارو در زير نوشتم
1- برنامه اي كه ماتريس 5*5 را از ورودي دريافت كرده و به صورت سطري
و ستوني مرتب نمايد.
2- برنامه اي كه ضرب دو چند جمله اي حداكثر از درجه n كه (n>100) را
محاسبه و چاپ نمايد.
3- برنامه اي كه يك پاراگراف را از ورودي دريافت كرده اولا حروف كوچك
انرا به بزرگ تبديل نمايد ثانيا كلمات تكراري را حذف كند
4-برنامه اي كه عددي را در يك مبناي مشخص از ورودي دريافت كرده
و به مبناي خواسته شده ببرد
 

en2fa

Pocket PC کاربر فعال
کاربر فعال
تاریخ عضویت
15 مارس 2003
نوشته‌ها
1,642
لایک‌ها
8
سن
39
محل سکونت
tehran
والا قديما سايت بلد بودم اما هرچی فکر کردم اسمشون يادم نيومد..اما با چند تا search ميتونی پيدا کنی...
اينا چون همه پرژه های تيپ هستند و صدرصد همه هم online پيدا ميشن...
حالا اگه وقت کردم(الان آخه ساعت 1:3 شبه)ميگرم اسم اون سايت که خيلی خوب موضوع بندی شده رو پيدا ميکنم بهت ميگم...
 

Ghazmar

Registered User
تاریخ عضویت
27 دسامبر 2002
نوشته‌ها
766
لایک‌ها
3
به نقل از amironline :
آقا تو رو جون هركسي كه دوستش دارين كمكم كنيد
پروژه هارو در زير نوشتم
1- برنامه اي كه ماتريس 5*5 را از ورودي دريافت كرده و به صورت سطري
و ستوني مرتب نمايد.
2- برنامه اي كه ضرب دو چند جمله اي حداكثر از درجه n كه (n>100) را
محاسبه و چاپ نمايد.
3- برنامه اي كه يك پاراگراف را از ورودي دريافت كرده اولا حروف كوچك
انرا به بزرگ تبديل نمايد ثانيا كلمات تكراري را حذف كند
4-برنامه اي كه عددي را در يك مبناي مشخص از ورودي دريافت كرده
و به مبناي خواسته شده ببرد

فكر مي‌كنم هنوز يه چيزايي از پاسكال يادم باشه. اگه هنوز هم كمك مي‌خواي بگو تا يه كاريش بكنيم...
 

amironline

Registered User
تاریخ عضویت
25 نوامبر 2003
نوشته‌ها
671
لایک‌ها
0
محل سکونت
Tabriz
به نقل از Ghazmar :
فكر مي‌كنم هنوز يه چيزايي از پاسكال يادم باشه. اگه هنوز هم كمك مي‌خواي بگو تا يه كاريش بكنيم...

بله هنوز هم كمك مي‌خوام البته اگه بتونين
خيلي ممنون ميشم اگه سورس هاشو برام بفرستين ;) ;)
مخلصيم
 

johnsss

کاربر تازه وارد
تاریخ عضویت
8 آگوست 2003
نوشته‌ها
101
لایک‌ها
0
سن
39
به نقل از amironline :
بله هنوز هم كمك مي‌خوام البته اگه بتونين
خيلي ممنون ميشم اگه سورس هاشو برام بفرستين ;) ;)
مخلصيم
سلام دوست عزيز. قبل از همه چيز به شما بگم که من شرمندم که به عنوان اولين فردی هستم که فليم ميکنم. ولی بعضی وقتها لازمه.
اگه انگليسيت خوبه اینجا رو بخون:
http://www.neowin.net/forum/index.php?showtopic=118823
این بنده خدا هم مشکلی مثل تو داشت. تازه حداقل يک کم روش کار کرده بود. ولی بقيه بهش اشکال گرفتند که اینجا جای این نيست که مشق شما رو ما انجام بديم! اینجا جای رفع اشکاله.
شما ميای و صورت مساله رو ميزاری و ميگی برام حلش کنين در حاليکه خودتون هيچ پشتکاری از خودتون نشون نميدين. حالا حتی اگه این مشکلتون هم حل شد بعدا در سر کار و زندگی واقعی نميتونين اینکار رو بکنين.
به هر حال. من ميتونم کمکتون کنم ولی شما خودتون شروع بکنيد و من اگر اشکالی داشتيد کمک ميکنم. حتی اگر الگوريتم را هم نميدونستين ميتونم کمکتون کنم که چجوری این مشکل را حل کنيد (هر چند که اگه يک خورده فکر بکنيد روشون خيلی اسون هستند). به هر حال شرمنده از فليم . اميدوارم که ناراحت نشده باشيد. ولی ديگه
وقتشه که این مسله فليم در ایران جا بيفته و اگه سوال بيربطی پرسيده شد بقيه ازش جلوگيری کنند.
به درود

فليم = flame
انگليسی ننوشتم که نوشته به هم نخوره. :D
 

amir

مدیران قدیمی
تاریخ عضویت
15 دسامبر 2002
نوشته‌ها
894
لایک‌ها
1
سلام!
ببين يه خوردشو بنويس! بعدش گير كردي بيا اينجا يه كاريش مي كنيم با هم! ولي اگه بچه هاي اينجا برات انجامش بدن اصلاَ به دردنمي خوره! هيچي از پاسكال ياد نمي گيري ! حداكثرش اينه كه دو شب بيدار مي موني خودت مي نويسي! اما ارزششو داره!
 

Ghazmar

Registered User
تاریخ عضویت
27 دسامبر 2002
نوشته‌ها
766
لایک‌ها
3
خودمونيم، اين بچه‌ها پر بيراه هم نمي‌گن ها! راس مي‌گه آقا. اگه من برات بنويسم كه خودت هيچي ياد نمي‌گيري كه!
 

amironline

Registered User
تاریخ عضویت
25 نوامبر 2003
نوشته‌ها
671
لایک‌ها
0
محل سکونت
Tabriz
آقا خيييييييييييييلي ممنون من 1و3و4 رو نوشتم :d
ولي لااقل يكي درباره 2 يه راهنمايي كنيد
البته يه چيزايي بلدم مثلا اينكه بايد يه آرايه دو بعدي در نظر بگيريم
يكي براي ضرايب ويكي براي توان
ضرايب به هم ضرب ميشن وتوانها با هم جمع
اينجوري هم نيست كه ما هيچي بلد نباشيم

دوباره ممنون ;)
 

en2fa

Pocket PC کاربر فعال
کاربر فعال
تاریخ عضویت
15 مارس 2003
نوشته‌ها
1,642
لایک‌ها
8
سن
39
محل سکونت
tehran
همون راهت بايد از طريق 2 تا ارايه باشه....
نمايش دادن اعداد هم فقط با ضريب و بعد توان هست....يعنی بترتين براساسه توانها ميای پر ميکنی...ميتونی آرايه از يک Record که دارای 2 عنصر توان و ضريب هست هم بسازی
کار آسونی هست
 

johnsss

کاربر تازه وارد
تاریخ عضویت
8 آگوست 2003
نوشته‌ها
101
لایک‌ها
0
سن
39
به نقل از amironline :
آقا خيييييييييييييلي ممنون من 1و3و4 رو نوشتم :d
ولي لااقل يكي درباره 2 يه راهنمايي كنيد
البته يه چيزايي بلدم مثلا اينكه بايد يه آرايه دو بعدي در نظر بگيريم
يكي براي ضرايب ويكي براي توان
ضرايب به هم ضرب ميشن وتوانها با هم جمع
اينجوري هم نيست كه ما هيچي بلد نباشيم

دوباره ممنون ;)
بهترين راه استفاده از structure هست. من مثالشو تو c مينويسم. فقط برا اینکه بفهمی چجوری. البته این 2 زبان
در این موارد خيلی شبيه هم هستند:
کد:
[LEFT]struct cFormula {
           bool power[n];
           float multiplier[n];
           }[/LEFT]
و بعدا این structure رو توی برنامت بخون. به این صورت که يک چند جمله ای يک structure هست.
مثلا:
کد:
[LEFT]cFormula myFormula1, myFormula2, Result;[/LEFT]

برای ضرب هم کافيه که 2 for loop تو در تو درست کنی و اینکار رو انجام بدی:
کد:
[LEFT]for(int i=0; i<Max; i++) {
     for(int j=0;j<Max;j++) {
          Result.power[i+j] = myFormula1. power[i] * myFormula2.power[j]; 
       Result.Multiplier[i+j] = myFormula1.Multiplier[i] * myFormula2.Multiplier[j];
    }
}[/LEFT]
i و j بيانگر توان هستند.
برای نشون دادن result هم که فقط يک for-loop ميخوای.
مثلا:
کد:
[LEFT]myFormula1.power[2] = 1;
myFormula2.power[5] = 1;
=> Result.power[7] = 1;[/LEFT]
که به این معنی است که توان هفت result برابر 1 است. (x^7).
ميدونم که سخته فهميدنش ولی اگه برنامه نويسی بدونی ميتونی بفهمی.
اميدوارم که به دردت خورده باشه.
 

johnsss

کاربر تازه وارد
تاریخ عضویت
8 آگوست 2003
نوشته‌ها
101
لایک‌ها
0
سن
39
برا اینکه بتونی کدها رو درست بخونی اونا رو تو notepad يا هر جا ديگه copy/paste کن.
 

Ghazmar

Registered User
تاریخ عضویت
27 دسامبر 2002
نوشته‌ها
766
لایک‌ها
3
در ابتدا بگم كه براي درست خوندن اين متن، انكودينگ صفحه‌ات رو راست به چپ كن. قابل توجه احسان كه آقا چرا اين Alignment و اينا انگليسيه. يا نكنه فقط من مشكل دارم؟

در مورد سؤال پيدا كردن كلمة تكراري، با توجه به سؤالت، فرض مي‌كنيم كه همة حروف رو به بزرگ تبديل كردي.
پيدا كردن كلمات تكراري، بستگي به اين داره كه ورودي رو چه جوري گرفته باشي. دو احتمال وجود داره، يا همه‌اش رو ريختي توي يه متغير از نوع String و يا اينكه از آرايه استفاده كردي، كه خود اين هم به دو نوع آرايه‌اي از حروف و يا آرايه‌اي از كلمات تقسيم مي‌شه.
در حالتي كه از آرايه‌اي از حروف استفاده كرده باشي، كار كمي سخت‌تر خواهد بود. ولي دو تاي ديگه آسونه.
اون جوري كه من ديدم، تمامي برنامه‌هايي كه بايد مي‌نوشتي براي تمرين كردن حلقه‌هاي تو در تو بودن به اضافة چيزاي ديگه‌اي مث آرايه‌ها.
اين هم عملاً دو تا حلقه‌اس كه داخل هم قرار گرفتن و مكانيسم كار هم خيلي آسونه.
معمولاً در حلقه‌هاي تو در تو، روال اينه كه حلقة بيروني، كل بازة عملياتي رو از اول تا آخر طي مي‌كنه و حلقة دروني، بر اساس نوع مسأله، يك بازة عملياتي ديگه و يا همون بازة عملياتي رو طي مي‌كنه. كه در حالت دوم، معمولاً حلقة دروني، بجاي اينكه از اول بازة عملياتي شروع بشه، از جايي شروع مي‌شه كه حلقة بيروني تا الان طي كرده.
به عنوان مثال، توي همين مثال خودت، بايد از اول تا آخر متن، يكي يكي كلمه‌ها رو مشخص كني، بعد از جايي كه هستي، تا انتهاي متن، بگردي و اگه كلمه‌اي مث اين پيدا كردي، حذفش كني.
خب، براي اينكه مسأله رو حل كنيم، برمي‌گرديم به نوع نگهداري رشتة اصلي. آرايه‌اي از حروف سخته و آرايه‌اي از كلمات خيلي آسون. واسه همين فرض مي‌كنم يه متغير رشته‌اي گرفتي و كل رشته رو توي اون ريختي. اين مي‌تونه برات الگو باشه تا اگه با يكي از دو روش ديگه هم مسأله رو حل كردي، توي همون قالب، خودت ادامه بدي.
اول بايد ببيني چه كارهايي بايد انجام داد. كارهايي كه من مي‌بينم، اين‌هاست: پيدا كردن يك كلمه، حذف يك كلمه.
منظورم از كار، يك يا چند تا دستوره كه يه كار مشخص رو انجام مي‌دن و تو چندين بار اون كار رو لازمه كه انجام بدي.
خب، اگه مي‌دوني كه function چيه، براي هر كدوم از دو تا كار فوق، يه function بنويس. چون كارت رو خيلي راحت خواهد كرد. اما باز من فرض رو بر اين مي‌ذارم كه function نمي‌دوني چيه.
خب، براي پيدا كردن كلمة بعدي، چيزايي كه بايد بدونيم، نام رشتة اصلي، و موقعيتيه كه اون‌جا هستيم و مي‌خوايم كلمة بعدي رو پيدا كنيم. اي كار رو با سه تا دستور مي‌شه انجام داد:
(توضيح ضروري: يه تابع داريم توي پاسكال كه يه رشته، يك رشتة ديگه و يه موقعيت شروع رو مي‌گيره و عددي رو كه برمي‌گردونه، اولين وقوع رشتة دوم، توي رشتة اول، بعد از موقعيت داده شده‌است. اگه درست يادم باشه، توي پاسكال، اسمش substr بود. يا يه همچين چيزي)
1. موقعيت اولين blank رو توي رشتة اصلي، بعد از موقعيت داده شده پيدا كن.
2. موقعيت اولين blank رو توي رشتة‌اصلي، بعد از موقعيتي كه توي 1 پيدا كردي، پيدا كن.
3. رشته‌اي كه توي رشتة اصلي و بين دو موقعيت فوق واقع شده، كلمة بعدي است. (باز يه تابع داريم كه يه رشته، يه موقعيت و يه طول رو مي‌گيره و از اون موقعيت به اون طول از رشتة اصلي، يه رشته در مي‌اره و تحويلت مي‌ده)
پس اين‌جوري كلمة بعدي رو پيدا كرديم. حالا بريم سر حذف كردن:
چيزايي كه بايد داشته باشيم، نام رشتة اصلي، موقعيت شروع كلمه‌اي كه بايد حذف شه و موقعيت انتها يا طول اونه.
توي قسمت قبل ديدي كه موقعيت ابتدا و انتهاي كلمه رو داريم. پس با يه دستور به راحتي مي‌تونيم كلمه رو حذف كنيم:
بايد بگي رشتة اصلي رو برابر قرار بده با رشتة اصلي، از ابتدا، تا موقعيت شروع كلمه به اضافة رشتة اصلي، از موقعيت انتهاي كلمه، تا انتهاي رشتة اصلي.
اينجوري خودبخود اون كلمه از اون وسط حذف مي‌شه.
خب، حالا ديگه كاري نمونده، بايد دو تا حلقة for يا while توي هم بنويسي. يكي يكي كلمه‌ها رو پيدا مي‌كني. بعد از موقعيت انتهاي كلمه تا انتهاي رشته رو باز هي كلمه پيدا مي‌كني و مقايسه مي‌كني با كلمه اوليه و اگه برابر بودن، كلمه دوميه رو حذف مي‌كني.
حلقة while راحت‌تره، چون اگه از for استفاده كني،‌قاعدتاً بايد از طول رشته براي شرط انتها استفاده كني و چون در طي كار هي طول رشته كم مي‌شه، احتمال بروز خطا هست.
يه psudo code برات مي‌نويسم:

کد:
i := 1;
j := 1;
while (i < len(MyString))
begin
	aWord := find_a_word(MyString, i);
	while ((j + len(aWord)) < len(MyString))
	begin
		next_word := find_a_word(MyString, j);
		if aWord = next_word then
			delete_next_word
		else
			j := j + len(next_word);
	end;
	i := i + len(aWord);
end;
اين چيزي بود كه همين الان نوشتم. خيلي سريع و ساعت 5 صبح! الگوريتم كلي رو برات شرح دادم. يك سري ريزه‌كاري توي دقت به انتهاي برنامه و اينكه يه وقت توي لوپ نيفته، يا اينكه بعضي جاها بايد طول‌ها رو به اضافة يك كني تا blank اضافه رو هم حذف كني، يا اينكه آخرين كلمة متنت ديگه بعدش blank نيست و بايد حواست به اين باشه، وجود داره. نوشتن برنامه با خودت. اگه مشكلي داشتي، بنويس. البته ترجيحاً email هم بده تا بيام چك كنم. به اين آدرس: [email protected]
مخلصيم!
 

johnsss

کاربر تازه وارد
تاریخ عضویت
8 آگوست 2003
نوشته‌ها
101
لایک‌ها
0
سن
39
البته برای بيدا کردن و حذف کلمات تکراری این الگوريتم هم ميتونه خيلی کار ساز باشه:
شما يک بار متن رو از اول تا اخر بخون و تمام کلمات رو توی pointer بصورت sort شده زخيره کن.
بعد هر کلمه توی این pointer رو با کلمات قبل و بعدش چک کن. اگه يکی بود حذفش کن اگه که نه که هيچی.
اینکار رو تا انجا ادامه بده که ديگه هيچ کلمه ای مثل کلمه ديگه نباشه. برا اینکه جاش هم بدونی هر pointer بايد دو تا variable داشته باشه. اولی خوده کلمه و دومی مکانش. در اخر هم کلمات رو با جاشون نشون بده.
اینکار بسيار سريع تر از روش قبلی است ولی implementation اش تا حدودی سخت تره.
اگه از این روش استفاده کردی يادت باشه که بعد از اینکه اینا رو نشون دادی pointer رو از حافظه پاک کنی.
 

Ghazmar

Registered User
تاریخ عضویت
27 دسامبر 2002
نوشته‌ها
766
لایک‌ها
3
دوست عزيزمون John تفكرش اصطلاحاً C Based است!
توي C ساختارهاي بر اساس pointer يك اصل هستن. منتها دوستمون برنامه رو داره به پاسكال مي‌نويسه و از نوع سؤالات هم مشخصه كه تازه اول راهه. مي‌دونيم هم كه مبحث pointer توي پاسكال جزو مباحث پيشرفته به حساب مي‌آد. اينه كه بعيد مي‌دونم كه بتونه از اين شيوه استفاده كنه.
از طرف ديگه همين مطالب با استفاده از ساختارهاي ديگه مثلاً شبيه‌سازي pointer با آراية دو بعدي، عمليه. ولي راستش فكر نمي‌كنم چيز خوبي از آب در بياد.
به هر حال تفاوت اصلي در همون چيزيه كه قبلاً هم اشاره كرده بودم بهش و اون هم نحوة نگهداري اون پاراگراف است. طبيعيه كه اگه با اولين پيمايش، كلمات رو تشخيص بدي و اون‌ها رو در ساختار راحت‌تري مث آرايه (نسبت به رشته) نگهداري كني، ادامة كار هم راحت‌تر خواهد بود. پيشنهاد John اينه كه همون‌جا در حين تشخيص كلمات اون‌ها رو مرتب‌شده در آرايه بذاري و با خونة دوم آرايه (يعني آراية دو بعدي) ثبت كني كه اين كلمه كجاي متن قرار داشته، يعني كلمة اول بوده، يا دوم، يا ...
اينجوري هم از ثبت كلمات تكراري جلوگيري مي‌شه و هم اينكه بعد از اتمام كار، با پيمايش آرايه و تشخيص محل كلمات، دوباره جمله رو مي‌شه بدون تكرارهاش ساخت.
در مورد سريع‌تر بودن هم، توي برنامه‌نويسي از پارامتري استفاده مي‌شه به نام order كه نمي‌دونم باهاش آشنايي داري يا نه، اما اگه آشنايي داري، خيلي خوبه كه اين برنامه رو با هر دو روش بنويسي و order اون‌ها رو در بياري و با هم مقايسه كني. چون مثلاً خود امر درج كردن مرتب شدة يه كلمه در آرايه، order نسبتاً بالايي داره. به هر حال تمرين بسيار خوبيه.
از John عزيز هم بسيار ممنونم. راستي اين اديت وارتون كيه؟
 

johnsss

کاربر تازه وارد
تاریخ عضویت
8 آگوست 2003
نوشته‌ها
101
لایک‌ها
0
سن
39
به نقل از Ghazmar :
دوست عزيزمون John تفكرش اصطلاحاً C Based است!
توي C ساختارهاي بر اساس pointer يك اصل هستن. منتها دوستمون برنامه رو داره به پاسكال مي‌نويسه و از نوع سؤالات هم مشخصه كه تازه اول راهه. مي‌دونيم هم كه مبحث pointer توي پاسكال جزو مباحث پيشرفته به حساب مي‌آد. اينه كه بعيد مي‌دونم كه بتونه از اين شيوه استفاده كنه.
از طرف ديگه همين مطالب با استفاده از ساختارهاي ديگه مثلاً شبيه‌سازي pointer با آراية دو بعدي، عمليه. ولي راستش فكر نمي‌كنم چيز خوبي از آب در بياد.
به هر حال تفاوت اصلي در همون چيزيه كه قبلاً هم اشاره كرده بودم بهش و اون هم نحوة نگهداري اون پاراگراف است. طبيعيه كه اگه با اولين پيمايش، كلمات رو تشخيص بدي و اون‌ها رو در ساختار راحت‌تري مث آرايه (نسبت به رشته) نگهداري كني، ادامة كار هم راحت‌تر خواهد بود. پيشنهاد John اينه كه همون‌جا در حين تشخيص كلمات اون‌ها رو مرتب‌شده در آرايه بذاري و با خونة دوم آرايه (يعني آراية دو بعدي) ثبت كني كه اين كلمه كجاي متن قرار داشته، يعني كلمة اول بوده، يا دوم، يا ...
اينجوري هم از ثبت كلمات تكراري جلوگيري مي‌شه و هم اينكه بعد از اتمام كار، با پيمايش آرايه و تشخيص محل كلمات، دوباره جمله رو مي‌شه بدون تكرارهاش ساخت.
در مورد سريع‌تر بودن هم، توي برنامه‌نويسي از پارامتري استفاده مي‌شه به نام order كه نمي‌دونم باهاش آشنايي داري يا نه، اما اگه آشنايي داري، خيلي خوبه كه اين برنامه رو با هر دو روش بنويسي و order اون‌ها رو در بياري و با هم مقايسه كني. چون مثلاً خود امر درج كردن مرتب شدة يه كلمه در آرايه، order نسبتاً بالايي داره. به هر حال تمرين بسيار خوبيه.
از John عزيز هم بسيار ممنونم. راستي اين اديت وارتون كيه؟


اقا شرمنده اگه هی من اینا رو مينويسم ولی بحث برنامه نويسی برای من خيلی جالبه (geek به همين ميگن ديگه).
:D
ببين قزمر جان. شما از اونجايی که نميدونين سايز paragraph چقدر هست نميتونين مقدار معينی رو برای array زخيره کنين (يا کم ميارين يا الکی زيادی memory اشغال ميکنين).
برا همين گفتم که از pointer استفاده بشه بهتره. و این به c++ يا pascal زياد ربط نداره¡ در ضمن راه من از اونجايی (به نظر خودم) سريع تره که شما برای زخيره کردن اطلا عات کافيه که از يک hash function خوب استفاده کنين (خوب و با توجه به برنامه design شده باشه.) در این صورت در کلمه ميدونه دقيقا کجا بايد زخيره بشه. و اینکار فقط
يک cpu cycle ميگيره. در صورتی هم که کلمه تکراری باشه يک cycle ميشه برای مقايسه اینکه این کلمه قبل از اونيه که زخيره شده بود يا بعد که اگر قبل بود شماره جای این کمتره جايگزين ميشه در غير اینصورت هم که هيچی.
استفاده pointer و hash البته احتياج به يک table هم داره که جای این hash ها رو زخيره کنه (پس همون array اسون تره فقط اگه بدونی max چيه و چقدر از فضا بايد زخيره بشه).
ولی سرعت بسيار بيشتره. خودت دوباره مقايسه بکن و algorithmic order رو در بيار. (cpu cycle << mem read) و for-loop تو در تو رو با hash مقايسه کن ببين چقدر فرق داره. به هر حال من خيلی خوشحال ميشم که با هم در این موارد بحث علمی کنيم. چون برای من خيلی جالبه :)
:D
 

johnsss

کاربر تازه وارد
تاریخ عضویت
8 آگوست 2003
نوشته‌ها
101
لایک‌ها
0
سن
39
راستی Edith Wharton يک نويسنده است.
 
بالا