You are on page 1of 686

‫‪ 056‬برنامه ‪ C#‬با حل آنها‬

‫(حل مسائل ‪ -C#‬مرجع کامل)‬

‫تألیف‪:‬‬
‫دکتر رمضان عباس نژاد ورزی‬
‫مهندس محمد نادعلی زاده چاری‬

‫فنآوری نوین‬
‫‪ :‬عباسنژاد ورزی‪ ،‬رمضان‪- 0۴09 ،‬‬ ‫سرشناسه‬
‫‪650‬برنامه ‪ C#‬با حل آنهاا (حال مساایل ‪ C#-‬مرجا کامال) ت تاالیف‬ ‫عنوان و نام پدیدآور‬
‫رمضان عباسنژادورزی‪ ،‬محمد نادعلیزادهچاری‪.‬‬
‫‪ :‬بابل‪ :‬فناوری نوین‪.0۴79 ،‬‬ ‫مشخصات نشر‬
‫‪ 099 :‬ص‪ :.‬مصور‪ ،‬جدول‪.‬‬ ‫مشخصات ظاهری‬
‫‪ 001111 :‬ریال‪: 978-600-7272-12-1‬‬ ‫شابک‬
‫‪ :‬فیپا‬ ‫وضعیت فهرست نویسی‬
‫‪ :‬ششصد و پنجاه برنامه ‪ C#‬با حل آنها (حل مسایل ‪ C#-‬مرج کامل‪).‬‬ ‫عنوان گسترده‬
‫‪ :‬سی ‪( ++‬زبان برنامهنویسی کامپیوتر)‬ ‫موضوع‬
‫)‪C++ (Computer program language‬‬ ‫‪:‬‬ ‫موضوع‬
‫سی ‪( ++‬زبان برنامهنویسی کامپیوتر) ‪ --‬آزمونها و تمرینها (عالی)‬ ‫موضوع‬
‫‪C++ (Computer program language) -- Exercises,‬‬ ‫‪:‬‬ ‫موضوع‬
‫)‪questions, etc. (Higher‬‬
‫‪ :‬نادعلیزاده چاری‪ ،‬محمد‪- 0۴00 ،‬‬ ‫شناسه افزوده‬
‫‪90QA‬ت‪10 0۴79 9۴‬ع‪7۴‬س‪/‬‬ ‫رده بندی کنگره‬
‫‪110‬‬ ‫رده بندی دیویی‬
‫‪00۴1091‬‬ ‫شماره کتابشناسی ملی‬

‫‪www.fanavarienovin.net‬‬
‫تلفن‪011-48867778 :‬‬ ‫بابل‪ ،‬کدپستی ‪38178-84337‬‬ ‫فنآوری نوین‬

‫‪ 056‬برنامه ‪ C#‬با حل آنها (حل مسائل ‪ - C#‬مرجع کامل)‬


‫تألیف‪ :‬رمضان عباس نژاد ورزی‪ -‬محمد نادعلی زاده‬
‫نوبت چاپ‪ :‬چاپ اول‬
‫سال چاپ‪ :‬بهار ‪79‬‬
‫شمارگان‪0111:‬‬
‫قیمت‪ 00111 :‬تومان‬
‫نام چاپخانه و صحافی‪:‬‬
‫شابک‪799-011-9191-01-0 :‬‬
‫نشانی ناشر‪ :‬بابل‪ ،‬چهارراه نواب‪ ،‬کاظمبیگی‪ ،‬جنب مسجد منصور کاظمبیگی‪ ،‬طبقه اول‬
‫طراح جلد‪ :‬کانون آگهی و تبلیغات آبان (احمد فرجی)‬
‫تلفکس‪00011000-00011111 :‬‬ ‫تهران‪ ،‬خ اردیبهشت‪ ،‬نبش وحید نظری‪ ،‬پالک ‪001‬‬
‫فهرست مطالب‬

‫فصل اول‪ :‬آشنایی با ‪( C#‬دستورات ورودی و خروجی) ‪5 .............. ................................‬‬

‫فصل دوم‪ :‬ساختار تصمیم و حلقههای تکرار ‪63 ........................... ................................‬‬

‫فصل سوم‪ :‬متدها در ‪461 ............... ................................ ................................ C#‬‬

‫فصل چهارم‪ :‬آرایهها و رشتهها ‪565 ........................................ ................................‬‬

‫فصل پنجم‪ :‬کالسها و وراثت ‪686 ........................................ ................................‬‬

‫فصل ششم‪ :‬فایلهای ورودی و خروجی ‪164 .............................. ................................‬‬

‫منابع‪188......................................................................................... :‬‬
‫مقدمه‬
‫زبان ‪( c#‬سی شارپ) یکی از زبانهای شی گرا است که در ساالهاای اییار طرفاداران زیاادی پیاداکرده‬
‫است‪ .‬با زبان ‪ C#‬میتوان برنامههای سیستمی از قبیل کامپایلر‪ ،‬مدیریت شابکه‪ ،‬باناکهاای اطالعااتی و برناماه‬
‫اندرویدی نوشت‪ .‬به همین دلیل زبان ‪ C#‬بهعناوان یکای از زباانهاای مهام در درس برناماهساازی پیشارفته در‬
‫رشتههای کامپیوتر و فناوری اطالعات تدریس میشود‪.‬‬
‫این کتاب شامل ‪ 0‬فصل است که مفاهیم پایهای زبان برنامهسازی‪ C#‬را تحات کنساول آماوزی مایدهاد‪.‬‬
‫فصلهای این کتاب عبارتاند از‪:‬‬
‫فصل اول‪ ،‬مباحثی نظیر آشنایی با ‪ ،C#‬عملگرها و دستورت ورودی یروجی را با ‪ 90‬مثال برنامهنویسای و‬
‫حل آنها آموزی داده است‪.‬‬
‫فصال دوم‪ ،‬مبااحثی مانناد ساایتار تصامیم (دساتورات ‪ )if , switch‬و ساایتار تکارار (دساتورات ‪،for‬‬
‫‪ continue ،foreach ،do while ،while‬و ‪ )break‬را با حدود ‪ 1۴0‬مثال کاربردی برنامهنویسی آموزی‬
‫داده است‪.‬‬
‫فصل سوم‪ ،‬تعریف متدها‪ ،‬فرایوانی متدها و متدهای کتابخانهای را با ‪ 019‬مثال کاربردی شرح داده است‪.‬‬
‫فصل چهارم‪،‬آرایههای یک و دوبعدی‪ ،‬رشتهها را با ‪ 0۴0‬مثال کاربردی توضیح داده است‪.‬‬
‫فصل پنجم‪ ،‬کالسها‪ ،‬وراثت‪ ،‬چندریختی و تعریف مجدد عملگرها را با ‪ ۴7‬مثال آموزی داده است‪.‬‬
‫فصل ششم‪ ،‬فایلهای ورودی و یروجی متنی و باینری را با ‪ 07‬مثال بهصورت پایهای شرح داده است‪.‬‬
‫این کتاب برای دانشجویانی که مییواهند مباحث پایهای ‪ C#‬را یاد بگیرند‪ .‬مفیاد اسات و کتااب طراحای‬
‫سیستمهای شیگرا به زبان ‪ C#‬را کامل میکند (تمام مسائل آن کتاب را نیز حل کرده است)‪.‬‬
‫در ضمن جهت کاهش حجم کتاب بریی از مسائل و حل آنها به صورت الکترونیکی ارائه شده است‪.‬‬
‫از تمامی اساتید و دانشجویان عزیاز تقاضاا داریام‪ ،‬هرگوناه اشاکال‪ ،‬ابهاام در ماتن کتااب‪ ،‬پیشانهاد و‬
‫انتقادات را به آدرس پست الکترونیک ‪ fanavarienovin@gmail.com‬ارسال نمایند‪.‬‬
‫در پایان امیدوارم این اثر موردتوجه جامعه انفورماتیک کشور‪ ،‬اساتید و دانشجویان عزیز قرار گیرد‪.‬‬

‫مولفین‬
‫‪fanavarienovin@gmail.com‬‬
‫فصل آشنايی با ‪ C#‬و دستورات ورودی و‬
‫خروجی‬ ‫‪1‬‬
‫‪ .1‬دستوراتی که متغیرهای ‪ m‬و ‪ n‬را از نوع ‪ ch1 ،int‬و ‪ ch2‬را از نوع ‪ d1 ،char‬و ‪ d2‬را از نوع‬
‫‪ double‬و ثابت ‪ pl‬را از نوع ‪ float‬با مقدار ‪ 41.3‬تعریف میکند‪.‬‬
‫;‪int m, n‬‬
‫;‪char ch1, ch2‬‬
‫; ‪double d1, d2‬‬
‫;‪const float p = 3.14‬‬
‫‪ .2‬دستورات زیر چند بایت از حافظه را اشغال میکنند (در محیطهای ‪ .1‬بیتی)؟‬
‫;‪long double x, y‬‬
‫;‪char ch‬‬
‫;‪float f1, f2‬‬
‫‪long‬‬ ‫این دستورات‪ 92 ،‬بایت از حافظه را اشغال میکنند‪ .‬زیرا هر یک از متغیرهای ‪ x‬و ‪ 01 ،y‬بایت (نوو‬
‫‪ ch ،)double‬یک بایوت (نوو ‪ )char‬و ‪ f1‬و ‪ f2‬هور یوک ‪ 4‬بایوت (نوو ‪ )float‬را اشوغال مویکننود‪ .‬ذو ا‪ ،‬ایون‬
‫دستورات مجموعاً ‪ (20 + 1 + 8) 29‬بایت را اشغال میکنند‪.‬‬
‫‪ .3‬عبارت زیر را به ازای ‪ x = 5‬و ‪ y = 4‬ارزیابی کنید‪:‬‬
‫;‪m = x + (y * 2) / 6 + y / 8‬‬
‫مقادیر را در عبارت قرار میدهیم‪:‬‬
‫‪m = 5 + (4 * 2) 6 + 4 / 8‬‬
‫‪m=5+8/6+4/8‬‬
‫‪m=5+1+4/8‬‬
‫‪m=5+1+0=6‬‬
‫‪ .4‬عبارت زیر را به ازای ‪ x = 4‬و ‪ y = 3‬ارزیابی کنید‪:‬‬
‫;‪m = x > y ? x * 3 : y * 3‬‬
‫ابتدا مقادیر را در ‪ x‬و ‪ y‬قرار میدهیم‪:‬‬
‫;‪m = 4 > 3 ? 3 * 3 : 4 * 3‬‬
‫عبارت ‪ 4 > 3‬ارزیابی میشود‪ .‬چون این شرط ارزش درستی دارد‪ (9) 3 * 3 ،‬در ‪ m‬قرار میگیرد‪.‬‬

‫پس از اجرای دستورات زیر‪ ،‬چه مقداری در ‪ x‬قرار میگیرد؟‬ ‫‪.5‬‬


‫‪int‬‬ ‫;‪x‬‬
‫‪long double‬‬ ‫;‪y‬‬
‫;‪x = sizeof y‬‬
‫مویکنود‪ ،‬دسوتور دو ‪ ،‬متغیور ‪ y‬را از نوو ‪ long double‬تعریو‬ ‫دستور اول‪ ،‬متغیر ‪ x‬را از نوو ‪ int‬تعریو‬
‫میکند و دستور سو ‪ ،‬طول نو متغیر ‪ y‬را محاسبه کرده‪ ،‬در متغیر ‪ x‬قورار مویدهود‪ .‬بنوابراین‪ 01 ،‬در ‪ x‬قورار‬
‫میگیرد (نو ‪ 01 ،long double‬بایت را اشغال میکند)‪.‬‬
‫فصل اول‬ ‫‪6‬‬

‫‪ .6‬عبارت زیر را بدون استفاده از عملگر * انجام دهید‪:‬‬


‫;‪y = 255 * x – 18 * x + 15‬‬
‫ابتدا ‪ 255 * x‬را محاسبه میکنیم‪ .‬برای انجا این کار‪ x ،‬را ‪ 8‬بار به سمت چپ شیفت داده‪ ،‬از ‪ x‬کم‬
‫میکنیم‪ .‬زیرا‪ ،‬با هر بار شیفت‪ ،‬مقدار ‪ ،x‬در ‪ 9‬ضرب میشود‪ .‬پس مقدار ‪ x‬در ‪ )952( 98‬ضرب میگردد‪.‬‬
‫سپس‪ ،‬مقدار ‪ -08*x‬را محاسبه کرده‪ x( ،‬را ‪ 4‬بار به سمت چپ شیفت داده دو بار با ‪ x‬جمع کرده‪ ،‬عالمت آن‬
‫را به منفی تبدیل میکنیم) در پایان‪ ،‬این مقادیر را با ‪ 05‬جمع میکنیم‪ .‬یعنی‪ ،‬عبارت زیر را داریم‪:‬‬
‫;‪y = x << 8‬‬
‫;‪y1 = y – x‬‬
‫;‪y2 = x << 4‬‬
‫;)‪y2 += ( x + x‬‬
‫;‪y = y1 – y2 + 15‬‬
‫‪ .7‬پس از اجرای عبارت زیر مقدار متغیر ‪ m‬چه خواهد شد؟‬
‫;)‪m = (y = 0, x = ++y, m = y, y + 2‬‬
‫ابتدا ‪ y‬برابر با صفر میشود و در عبارت دو به ‪ y‬یک واحد اضافهشوده‪ ،‬در ‪ x‬قورار مویگیورد‪ .‬پوس اکنوون‬
‫مقدار ‪ x‬و ‪ y‬برابر یک است‪ .‬در عبارت بعدی‪ y ،‬در ‪ m‬قرار میگیرد و درنتیجه‪ m ،‬نیز برابر با یک میشوود‪.‬‬
‫حاصل عبارت ‪ y + 2‬که برابر با ‪ 3‬است در ‪ m‬قرار میگیرد‪.‬‬
‫‪ .8‬وزن یک مولکول آب ‪ 411×.1-34‬گرم و وزن یک لیتر آب در حدود ‪ 051‬گرم است‪ .‬برنامهای که‬
‫وزن آب را برحسب لیتر از ورودی خوانده‪ ،‬تعداد مولکولهای آن را محاسبه میکند‪.‬‬
‫;‪using System‬‬
‫‪namespace p8‬‬ ‫هدف‬ ‫متغیر‬
‫{‬
‫‪class Program‬‬ ‫وزن یک موذکول‬ ‫‪m‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫وزن یک ذیتر آب‬ ‫‪l‬‬
‫{‬ ‫وزن آب به ذیتر از رودی‬ ‫‪w‬‬
‫;‪double m=3.0e-23,l=950,tedad‬‬
‫;‪long w‬‬ ‫خوانده میشود‪.‬‬
‫;)"‪Console.Write("Enter w:‬‬
‫;))(‪w= long.Parse(Console.ReadLine‬‬
‫تعداد موذکولهای آب‬ ‫‪tedad‬‬
‫;‪tedad=(w*l)/m‬‬
‫;)‪Console.WriteLine("Tedad = {0}", tedad‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .9‬هرسال برابر با ‪ 4/.51×.17‬ثانیه است‪ .‬برنامهای که سن شما را دریافت کرده‪ ،‬به ثانیه تبدیل میکند‪.‬‬
7 ‫ و دستورات ورودی و خروجی‬C# ‫آشنایی با‬

‫هدف‬ ‫متغیر‬
‫ هرسال برحسب ثانیه‬ss
using System;
namespace p9 ‫ سن به سال‬age
{
class Program ‫ سن برحسب ثانیه‬second
{
static void Main(string[] args)
{
double ss = 3.156e7, second;
int age;
Console.Write( "Enter age:");
age = Convert.ToInt32(Console.ReadLine());
second = age * ss;
Console.WriteLine( "Second = {0}" , second);
Console.ReadKey();
}
}
}

‫ نمایش‬،‫ مالیات و دریافتی او را محاسبه کرده‬،‫ بیمه‬،‫برنامهای که حقوق کارمندی را خوانده‬ .11
.‫ درصد حقوق میباشند‬.1 ‫ و‬7 ‫ بیمه و مالیات به ترتیب‬.‫میدهد‬
using System;
namespace p10 ‫هدف‬ ‫متغیر‬
{
class Program ‫حقوق‬ s
{
static void Main(string[] args) ‫بیمه‬ b
{
long p,s,m,b; ‫ماذیات‬ m
Console.Write("Enter salary:"); p
s = long.Parse(Console.ReadLine()); ‫دریافتی‬
b=s*7 /100;
m=s/10;
p=s-b-m;
Console.WriteLine("s = {0} b = {1} m = {2} p = {3}
", s, b, m, p);
Console.ReadKey();
}
}
}
‫فصل اول‬ ‫‪8‬‬

‫‪ .11‬برنامه ای که قیمت کاالیی را در سال قبل و جاری خوانده‪ ،‬نرخ تورم و قیمت سال بعد آن را‬
‫چاپ میکند‪ .‬نرخ تورم باید بهصورت درصد (مثالً ‪ )%1/5‬حساب گردد‪) .‬توضیح‪ :‬برای محاسبه نرخ تورم‬
‫و قیمت سال بعد بهصورت زیر عمل کنید(‪:‬‬
‫قیمت سال قبل – قیمت سال جاری‬
‫= نرخ تور‬
‫قیمت سال قبل‬
‫نرخ تور × قیمت سال جاری ‪ +‬قیمت سال قبل = قیمت سال بعد‬
‫;‪using System‬‬ ‫هدف‬ ‫متغیر‬
‫‪namespace p11‬‬
‫{‬ ‫نرخ تور‬ ‫‪t‬‬
‫‪class Program‬‬
‫{‬ ‫قیمت کاال در سال قبل‬ ‫‪y1‬‬
‫)‪static void Main(string[] args‬‬
‫{‬ ‫قیمت کاال در سال‬ ‫‪y2‬‬
‫;‪double t, y1,y2,y3‬‬ ‫جاری‬
‫;)"‪Console.Write("Enter price for year1:‬‬
‫;))(‪y1 = double.Parse(Console.ReadLine‬‬ ‫‪y3‬‬
‫قیمت تخمینی کاال در‬
‫;)"‪Console.Write("Enter price for year2:‬‬ ‫سال بعد‬
‫;))(‪y2 = double.Parse(Console.ReadLine‬‬
‫;‪t = (float)(y2-y1)/y1‬‬
‫;‪y3 =y2 + y2 * t‬‬
‫;)‪Console.Write("Extera = {0}\t\t Price next year = {1}",t, y3‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .12‬مدیر شرکتی به هر متخصص خود ماهانه ‪ 751111‬تومان حقوق پرداخت میکند‪ .‬او میخواهد‬
‫بداند که اگر ‪ .4/5‬درصد به حقوق هر متخصص اضافه کند‪ ،‬ساالنه چقدر به هزینه شرکت اضافه میشود‪.‬‬
‫برنامهای که تعداد متخصصین شرکت را خوانده‪ ،‬این کار را انجام میدهد‪.‬‬
‫;‪using System‬‬
‫‪namespace p12‬‬ ‫هدف‬ ‫متغیر‬
‫{‬
‫‪( 051111‬حقوق هر متخصص)‬ ‫‪pay‬‬
‫‪class Program‬‬
‫{‬ ‫تعداد متخصصین شرکت‬ ‫‪tedad‬‬
‫)‪static void Main(string[] args‬‬
‫{‬ ‫هزینهای که اضافه میشود‬ ‫‪extera‬‬
‫;‪int pay=750000, tedad‬‬
‫‪double‬‬ ‫;‪extera‬‬
‫;)"‪Console.Write("Enter tedad:‬‬
‫;))(‪tedad = Convert.ToInt32(Console.ReadLine‬‬
‫;;‪extera=(double)pay*12*tedad*13.5/100‬‬
‫;)‪Console.WriteLine("Extera is {0}" , extera‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
9 ‫ و دستورات ورودی و خروجی‬C# ‫آشنایی با‬

.‫ مجموع ارقام و مغلوب آن را چاپ میکند‬،‫ برنامهای که عددی دورقمی را خوانده‬.13


using System; ‫هدف‬ ‫متغیر‬
namespace p13
{ ‫ عدد دریافتی‬num
class Program
{ ‫ رقم یکان‬n1
static void Main(string[] args)
{ ‫ رقم دهگان‬n2
int num, n1, n2;
Console.Write("Enter a number:");
num = int.Parse(Console.ReadLine());
n1 = num % 10;
n2 = num / 10;
Console.WriteLine( "Reverse is {0}{1}\tSum is {2}",
n1, n2, n1 + n2);
Console.ReadKey();
}
}
}

:‫ عبارت زیر را محاسبه میکند‬،‫ بدون استفاده از عملگر ضرب‬،‫ را خوانده‬x ‫ برنامهای که‬.14
y = 31 * x – 17 * x + 5;
.(‫ برای انجام ضرب از عملگر << (شیفت به چپ) استفاده میکنیم‬،‫ در این برنامه‬:‫)توضیح‬
using System;
namespace p14
‫هدف‬ ‫متغیر‬
{ 31 * x ‫مقدار‬ m
class Program
{ -17 * x ‫مقدار‬ n
static void Main(string[] args)
{ ‫عدد دریافتی‬ x
int x, y, m, n;
Console.Write("Enter x:"); ‫نتیجه عبارت‬ y
x = int.Parse(Console.ReadLine());
m = (x << 5) - x;
n = -((x << 4) + x);
y = m + n + 5;
Console.WriteLine("y = {0}", y);
Console.ReadKey();
}
}
}
‫فصل اول‬ 01

‫ عملگر ؟‬،‫ برای حل این مسئله‬.‫ بزرگترین عدد را نمایش میدهد‬،‫ عدد را خوانده‬4 ‫ برنامهای که‬.15
.‫مورداستفاده قرار گرفت‬
using System;
namespace p15
‫هدف‬ ‫متغیر‬
{ ‫اوذین عدد‬ a
class Program
{ ‫دومین عدد‬ b
static void Main(string[] args)
{ ‫سومین عدد‬ c
int a, b, c, max;
Console.Write("Enter a:"); ‫بزرگترین عدد‬ max
a = int.Parse(Console.ReadLine());
Console.Write("Enter b:");
b = int.Parse(Console.ReadLine());
Console.Write("Enter c:");
c = int.Parse(Console.ReadLine());
max = (a > b) ? a : b;
max = (max > c) ? max : c;
Console.WriteLine("Max is = {0}", max);
Console.ReadKey();
}
}
}

‫ برای‬.‫ را چاپ میکند‬Odd ‫ وگرنه عبارت‬Even ‫ عبارت‬،‫ اگر عدد زوج باشد‬،‫برنامهای که عددی را خوانده‬ .16
‫ قرار‬num ‫ عدد دریافتی در متغیر‬،‫ در این برنامه‬.‫ مورداستفاده قرار میگیرند‬% ‫ عملگرهای ? و‬،‫حل این مسئله‬
.‫میگیرد‬
using System;
namespace p16
{
class Program
{
static void Main(string[] args)
{
int num;
Console.Write("Enter a number::");
num= int.Parse(Console.ReadLine());
string s = (num % 2 == 0) ? num.ToString() +
" is Even" : num.ToString() + " is odd";
Console.WriteLine(s);
Console.ReadKey();

}
}
}
‫‪00‬‬ ‫آشنایی با ‪ C#‬و دستورات ورودی و خروجی‬

‫‪ .17‬برنامهای که قد‪ ،‬وزن و سن فردی را خوانده‪ ،‬اندازه لباسهای او را بهصورت زیر محاسبه میکند‪:‬‬
‫ضریب افزایش دور کمر برای سنهای بیش از ‪ 32‬سال‪ ،‬هر دو سال یک ضریب‪.‬‬
‫ضریب افزایش کت برای سنهای بیش از ‪ 41‬سال‪ ،‬هر دو سال یک ضریب‪.‬‬
‫اندازه دور کمر برابر با وزن تقسیمبر ‪ ،517‬بهعالوه ‪ 11.‬ضربدر افزایش کت‪.‬‬
‫اندازه دور کت برابر با وزن * قد‪ ،‬بهعالوه ‪ .‬تقسیمبر ‪ 2‬ضربدر افزایش کت‪.‬‬
‫اندازه کاله برابر با وزن * ‪ ،310‬تقسیمبر قد‪.‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغیر‬
‫‪namespace p17‬‬
‫{‬ ‫‪ s‬قد‬
‫‪class Program‬‬
‫{‬ ‫‪ w‬وزن‬
‫)‪static void Main(string[] args‬‬ ‫‪ e‬سن‬
‫{‬
‫;‪double size_c, size_d, size_k‬‬ ‫‪ size_c‬اندازه کت‬
‫;‪int s, w, e‬‬
‫;)"‪Console.Write("Enter s:‬‬
‫‪ size_d‬اندازه دور کمر‬
‫;))(‪s = int.Parse(Console.ReadLine‬‬ ‫‪ size_k‬اندازه کاله‬
‫;)"‪Console.Write("Enter w:‬‬
‫;))(‪w = int.Parse(Console.ReadLine‬‬ ‫‪ y1‬ضریب افزایش دور کمور‬
‫;)"‪Console.Write("Enter e:‬‬ ‫برای هر ‪ 9‬سال‬
‫;))(‪e = int.Parse(Console.ReadLine‬‬
‫;‪size_k = 2.9 * w / s‬‬ ‫‪ y2‬ضریب افزایش کت برای‬
‫;‪int y1=(e > 28)?(int)((e - 28)/2):0‬‬
‫;‪int y2=(e > 30)?(int)((e - 30)/10):0‬‬ ‫هر ‪ 01‬سال‬
‫;‪size_d = w / 5.7 + 1.0 / 10 * y1‬‬
‫;‪size_c = w * s + 1.0 / 8 * y2‬‬
‫‪Console.Write("Size_c = {0}\tSize_k = {1}\tSize_d = {2} ",‬‬
‫; ) ‪size_c ,size_k, size_d‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪1‬‬
‫=𝑦‬ ‫برنامهای که مقدار ‪ x‬را از ورودی خوانده‪ ،‬حاصل عبارت مقابل را محاسبه میکند‪:‬‬ ‫‪.18‬‬
‫‪𝑥 2 +𝑥+1‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغیر‬
‫‪namespace p18‬‬
‫{‬ ‫ورودی‬ ‫‪x‬‬
‫‪class Program‬‬
‫نتیجه عبارت‬ ‫‪y‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫فصل اول‬ ‫‪01‬‬

‫;‪double x, y‬‬
‫;)"‪Console.Write("Enter x:‬‬
‫;))(‪x = Convert.ToSingle (Console.ReadLine‬‬
‫;)‪y = 1.0 / (x * x + x + 1‬‬
‫;)‪Console.Write("y is {0}" , y‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .19‬برنامهای که دو عدد را از ورودی میخواند (عدد اول مقاومت یک مدار الکتریکی و عدد دوم‬
‫جریان آن را نمایش میدهد)‪ .‬با فرمول مقابل ولتاژ را محاسبه کرده‪ ،‬نمایش میدهد‪:‬‬
‫جریان * مقاومت = ولتاژ‬
‫;‪using System‬‬
‫‪namespace p18‬‬
‫هدف‬ ‫متغیر‬
‫{‬ ‫مقاومت‬ ‫‪r‬‬
‫‪class Program‬‬
‫{‬ ‫جریان‬ ‫‪a‬‬
‫)‪static void Main(string[] args‬‬
‫{‬ ‫وذتاژ‬ ‫‪v‬‬
‫;‪double x, y‬‬
‫;)"‪Console.Write("Enter x:‬‬
‫;))(‪x = Convert.ToSingle (Console.ReadLine‬‬
‫;)‪y = 1.0 / (x * x + x + 1‬‬
‫;)‪Console.Write("y is {0}" , y‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫کورده‪ ،‬بوا یوک پیوا مقاوموت )‪ (r‬و جریوان )‪ (a‬را‬ ‫این برنامه‪ ،‬ابتدا متغیرهای موردنیواز را از نوو ‪ int‬تعریو‬
‫دریافت مینماید‪ .‬در ادامه‪ ،‬وذتاژ را محاسبه نموده‪ ،‬نمایش میدهد‪.‬‬
‫‪ .21‬مجموع مقاومتهای ‪ R2 ،R1‬و ‪ R3‬که بهطور موازی به هم متصلاند‪ ،‬با فرمول زیر محاسبه‬
‫میشود‪:‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1 R2 ∗ R3 + R1 ∗ R3 + R1 ∗ R2‬‬
‫=‬ ‫‪+‬‬ ‫‪+‬‬ ‫= =‬
‫‪𝑅 R1 R2 R3 R‬‬ ‫‪R1 ∗ R2 ∗ R3‬‬
‫برنامهای که سه مقاومت را از ورودی خوانده‪ ،‬مقاومت کل را محاسبه میکند‪.‬‬
01 ‫ و دستورات ورودی و خروجی‬C# ‫آشنایی با‬

using System;
namespace p20
‫هدف‬ ‫متغیر‬
{ 0 ‫مقاومت‬ r1
class Program
{ 9 ‫مقاومت‬ r2
static void Main(string[] args) 3 ‫مقاومت‬ r3
{
float r, r1, r2, r3; ‫مقاومت کل‬ R
Console.Write("Enter r1:");
r1 = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter r2:");
r2 = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter r3:");
r3 = Convert.ToInt32(Console.ReadLine());
r = (r1 * r2 * r3) / (r1 * r2 + r2 * r3 + r1 * r3);
Console.Write("r is {0}", r);
Console.ReadKey();
}
}
}

‫ سپس‬.‫ با یک پیا آنها را میخواند‬،‫کرده‬ ‫ تعری‬float ‫ را بهصورت‬r3 ‫ و‬r2 ، r1،r ‫این برنامه متغیرهای‬
.‫ نمایش میدهد‬،‫ را با فرمول بیانشده محاسبه کرده‬r ‫مقاومت‬
.‫برنامهای که وزن کاالیی را برحسب کیلوگرم دریافت مینماید و وزن آن را برحسب گرم نمایش میدهد‬ .21
.‫ گرم است‬.111 ‫هر کیلوگرم برابر‬
using System;
namespace p21
‫هدف‬ ‫متغیر‬
{ )‫کیلوگر (وزن‬ kg
class Program
{ ‫وزن به گر‬ g
static void Main(string[] args)
{
long kg, g;
Console.Write("Enter weight(kg):");
kg = Convert.ToInt32(Console.ReadLine());
g = kg * 1000;
Console.Write("Weight(g) is {0} ", g);
Console.ReadKey();
}
}
}
‫فصل اول‬ 01

،‫ برنامهای که حقوق کارمند را خوانده‬،‫ درصد حقوق ماه گذشته خود پاداش بگیرد‬.5 ‫اگر کارمندی بهاندازه‬ .22
.‫ نمایش میدهد‬،‫پاداش او را محاسبه نموده‬
using System; ‫هدف‬ ‫متغیر‬
namespace p22
{ ‫حقوق‬ salary
class Program
{ ‫پاداش‬ reward
static void Main(string[] args)
{
int salary, reward;
Console.Write("Enter salary:");
salary = Convert.ToInt32(Console.ReadLine());
reward = salary * 15 / 100;
Console.Write("Reward is {0}", reward);
Console.ReadKey();
}
}
}

،‫ با یک پیا حقووق را خوانوده‬،‫کرده‬ ‫ تعری‬float ‫( را از نو‬reward) ‫( و پاداش‬salary) ‫ حقوق‬،‫این برنامه‬


.‫ نمایش میدهد‬،‫پاداش را محاسبه کرده‬
.‫ به خروجی میبرد‬،‫ مساحت آن را محاسبه کرده‬،‫ برنامهای که ارتفاع و قاعده مثلث را از ورودی خوانده‬.23
‫ = مساحت مثلث‬115 × ‫قاعده * ارتفاع‬
using System;
namespace p23
‫متغیر هدف‬
{ ‫ارتفا‬ x
class Program
{ ‫قاعده‬ y
static void Main(string[] args)
{ ‫مساحت‬ s
float x, y, s;
Console.Write("Enter x:");
x = Convert.ToSingle(Console.ReadLine());
Console.Write("Enter y:");
y = Convert.ToSingle(Console.ReadLine());
s = (float)1 / 2 * x * y;
Console.Write("Area is {0}", s);
Console.ReadKey();
}
}
}
‫‪01‬‬ ‫آشنایی با ‪ C#‬و دستورات ورودی و خروجی‬

‫‪ .24‬در شرکتی‪ ،‬ساالنه ‪ .51‬خودکار‪ 51 ،‬بسته کاغذ ‪ A4‬مصرف میشود‪ .‬در پایان سال این شرکت میخواهد‬
‫بداند در سال آینده چقدر برای این بخش از تجهیزات اداری‪ ،‬افزایش هزینه دارد‪ .‬برنامهای که قیمت این اقالم را‬
‫در امسال از ورودی دریافت مینماید‪ ،‬نرخ تورم در سال آینده را نیز میگیرد‪ ،‬هزینه اضافهشده شرکت را در این‬
‫بخش محاسبه میکند و به خروجی میبرد‪ .‬تورم بهصورت درصد وارد میگردد که برنامه باید آن را به مقدار اعشاری‬
‫تبدیل کند‪ .‬بهعنوانمثال‪ ،‬اگر تورم را ‪ 511‬وارد کنیم‪ ،‬برنامه باید از ‪ 1/151‬استفاده کند‪.‬‬
‫هدف‬ ‫متغیر‬
‫;‪using System‬‬ ‫قیمت یک بسته‪A4‬‬ ‫‪a4‬‬
‫‪namespace p24‬‬
‫{‬ ‫قیمت خودکار‬ ‫‪pen‬‬
‫‪class Program‬‬
‫{‬ ‫تور‬ ‫‪t‬‬
‫)‪static void Main(string[] args‬‬
‫{‬ ‫هزینه اضافهشده‬ ‫‪coste‬‬
‫;‪float a4, pen, t, coste‬‬
‫;)"‪Console.Write("Enter a4 price:‬‬
‫;))(‪a4 = Convert.ToSingle(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter pen price:‬‬
‫;))(‪pen = Convert.ToSingle(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter t:‬‬
‫;))(‪t = Convert.ToSingle(Console.ReadLine‬‬
‫;‪coste = 50 * pen * t / 100 + 150 * a4 * t / 100‬‬
‫;)‪Console.Write("Extra cost is {0}", coste‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .25‬یک دوچرخهسوار با سرعت ‪ x‬کیلومتر بر ساعت شروع به حرکت میکند و پس از ‪ n‬دقیقهه سهرعت آن بهه ‪k‬‬
‫کیلومتر در ساعت میرسد‪ .‬برنامهای که با استفاده از فرمول زیر شتاب او را محاسبه کرده‪ ،‬نمایش میدهد‪:‬‬
‫𝟎𝟔 ∗ )سرعت اوذیه( 𝒙 ‪) +‬سرعت نهایی( 𝒌‬
‫= شتاب‬
‫)زمان(𝒏‬
‫;‪using System‬‬ ‫هدف‬ ‫متغیر‬
‫‪namespace p25‬‬
‫{‬ ‫سرعت نهایی‬ ‫‪K‬‬
‫‪class Program‬‬ ‫سرعت اوذیه‬ ‫‪X‬‬
‫{‬
‫)‪static void Main(string[] args‬‬ ‫زمان‬ ‫‪N‬‬
‫{‬ ‫شتاب‬ ‫‪Acceleration‬‬
‫;‪float k, x, n, acceleration‬‬
‫;)"‪Console.Write("Enter k:‬‬
‫فصل اول‬ 06

k = Convert.ToSingle(Console.ReadLine());
Console.Write("Enter x:");
x = Convert.ToSingle(Console.ReadLine());
Console.Write("Enter n:");
n = Convert.ToSingle(Console.ReadLine());
acceleration = (k - x) * 60 / n;
Console.Write("acceleration is {0}", acceleration);
Console.ReadKey();
}
}
}

‫ شوتاب را‬،‫ سورعت اوذیوه و زموان را خوانوده‬،‫ با یک پیوا سورعت نهوایی‬،‫کرده‬ ‫ متغیرها را تعری‬،‫این برنامه‬
.‫محاسبه میکند و نمایش میدهد‬
‫برنامه ای که مصرف (کیلومتر به لیتر) و گنجایش باک بنزین (لیتر) اتومبیلی را از ورودی میخواند و تعیین‬ .26
.‫میکند که با یک باک بنزین اتومبیل چه مسافتی را میتواند بپیماید‬
using System; ‫هدف‬ ‫متغیر‬
namespace p26
{ ‫ظرفیت‬ capacity
class Program
‫فاصله‬ distance
{
static void Main(string[] args) ‫مصرف‬ consumption
{
float consumption, capacity, distance;
Console.Write("Enter Consumption:");
consumption = Convert.ToSingle(Console.ReadLine());
Console.Write("Enter Capacity:");
capacity = Convert.ToSingle(Console.ReadLine());
distance = capacity / consumption * 100;
Console.Write("Distance is {0}", distance);
Console.ReadKey();
}
}
}

‫ تفریق و باقیمانده تقسیم‬،‫ تقسیم‬،‫ ضرب‬،‫برنامهای که دو عدد را از کاربر دریافت میکند و حاصل جمع‬ .27
.‫صحیح آنها را چاپ میکند‬
07 ‫ و دستورات ورودی و خروجی‬C# ‫آشنایی با‬

using System;
namespace p27
‫هدف‬ ‫متغیر‬
{ ‫عدد اول‬ a
class Program
{ ‫عدد دو‬ b
static void Main(string[] args)
{
int a, b;
Console.Write("Enter a:");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter b:");
b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("{0} + {1} = {2}", a, b, a + b);
Console.WriteLine("{0} - {1} = {2}", a, b, a - b);
Console.WriteLine("{0} * {1} = {2}", a, b, a * b);
Console.WriteLine("{0} / {1} = {2}",a,b, (float) a / b);
Console.WriteLine("{0} % {1} = {2}", a, b, a % b);
Console.ReadKey();
}
}
}

is larger ‫ عدد بهزرگتهر و سهپس عبهارت‬،‫ برنامهای که دو عدد صحیح را از کاربر دریافت کرده‬.28
“These number are ‫ عبهارت‬،‫ اگر این دو عهدد برابهر باشهند‬.‫ و عدد کوچکتر را چاپ میکند‬than
.‫ را چاپ میکند‬equal”
using System;
namespace p28
‫هدف‬ ‫متغیر‬
{ ‫عدد اول‬ a
class Program
{ ‫عدد دو‬ b
static void Main(string[] args)
{
int a, b;
Console.Write("Enter a:");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter b:");
string s = "";
b = Convert.ToInt32(Console.ReadLine());
s = (a > b) ? a.ToString() + " is larger than "
+ b.ToString() : s;
s = (a < b) ? a.ToString() + " is less than "
+ b.ToString() : s;
s = (a == b) ? "These number are equal. " : s;
Console.WriteLine(s);
Console.ReadKey();
‫فصل اول‬ 08

}
}
}

‫ بزرگترین و‬،‫ حاصلضرب‬،‫ میانگین‬،‫ برنامهای که سه عدد را از صفحهکلید میگیرد و حاصل جمع‬.29
.‫کوچکترین عدد را چاپ میکند‬
‫هدف‬ ‫متغیر‬
‫عدد اول‬ a

‫عدد دو‬ b

‫عدد سو‬ C
using System;
namespace p29 ‫مجمو سه عدد‬ sum
{
class Program ‫میانگین سه عدد‬ average
{ product
static void Main(string[] args) ‫حاصلضرب سه عدد‬
{ min
int a, b, c, max;
‫کوچکترین عدد‬
int min, sum, product; ‫بزرگترین عدد‬ max
float average;
Console.Write("Enter a:");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter b:");
b = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter c:");
c = Convert.ToInt32(Console.ReadLine());
min = max = a;
max = (max < b) ? b : max;
max = (max < c) ? c : max;
min = (min > b) ? b : min;
min = (min > c) ? c : min;
sum = a + b + c;
average = (float)(a + b + c) / 3;
product = a * b * c;
Console.WriteLine("sum is {0} ", sum);
Console.WriteLine("Average is {0} ", average);
Console.WriteLine("Product is {0}", product);
Console.WriteLine("Smallest is {0} ", min);
Console.WriteLine("Largest is {0}", max);
Console.ReadKey();
}
}
}
‫‪09‬‬ ‫آشنایی با ‪ C#‬و دستورات ورودی و خروجی‬

‫برنامهای که دو عدد را از صفحهکلید میگیرد و تعیین میکند که آیا عدد اول بر عدد دوم بخشپذیر است یا‬ ‫‪.31‬‬
‫نه؟‬
‫‪ .31‬برنامهای که دو عدد را خوانده‪ ،‬تعیین میکند آیا عدد اول مضربی از عدد دوم است یا‬
‫خیر‪.‬‬
‫;‪using System‬‬
‫‪namespace p30‬‬
‫هدف‬ ‫متغیر‬
‫{‬ ‫عدد اول‬ ‫‪a‬‬
‫‪class Program‬‬
‫{‬ ‫عدد دو‬ ‫‪b‬‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int a, b‬‬
‫;)"‪Console.Write("Enter a:‬‬
‫;))(‪a = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter b:‬‬
‫;))(‪b = Convert.ToInt32(Console.ReadLine‬‬
‫" ‪string s = (a % b == 0) ? a.ToString() + " mod‬‬
‫)(‪+ b.ToString() + " is zero." : a.ToString‬‬
‫;"‪+ "mod " + b.ToString() + " is not zero.‬‬
‫;)‪Console.WriteLine(s‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫برنامهای که پنج عدد صحیح را خوانده‪ ،‬بزرگترین و کوچکترین عدد را نمایش میدهد‪.‬‬ ‫‪.31‬‬
‫هدف‬ ‫متغیر‬
‫اوذین عدد‬ ‫‪a‬‬
‫دومین عدد‬ ‫‪b‬‬
‫سومین عدد‬ ‫‪c‬‬
‫چهارمین عدد‬ ‫‪d‬‬
‫پنجمین عدد‬ ‫‪e‬‬
‫بزرگترین عدد‬ ‫‪max‬‬
‫فصل اول‬ 11

using System; ‫کوچکترین عدد‬ min


namespace p31
{
class Program
{
static void Main(string[] args)
{
int a, b, c, d, e, max, min;
Console.Write("Enter a:");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter b:");
b = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter c:");
c = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter d:");
d = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter e:");
e = Convert.ToInt32(Console.ReadLine());
min = max = a;
max = (max < b) ? b : max;
max = (max < c) ? c : max;
max = (max < d) ? d : max;
max = (max < e) ? e : max;
min = (min > b) ? b : min;
min = (min > c) ? c : min;
min = (min > d) ? d : min;
min = (min > e) ? e : min;
Console.WriteLine("Smallest is {0}", min);
Console.Write("Largest is {0}" , max);
Console.ReadKey();
}
}
}

‫ را بههصهورت زیهر‬.1 ‫ تها‬1 ‫ و عهدد‬،4 ‫ توان‬،3‫با استفاده از امکاناتی که در این فصل دیدید برنامهای که توان‬ .32
‫ تعداد خطوط این برنامه زیاد شده است کهه بها بیهان‬،‫ همانطور که مشاهده نمودید‬:‫جدولبندی مینماید؟ (توضیح‬
.)‫ تعداد دستورات این قبیل برنامهها کاهش خواهد یافت‬،‫حلقههای تکرار در فصل بعد‬
using System;
namespace p32
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine ( "Number\tSquare\tCube");
10 ‫ و دستورات ورودی و خروجی‬C# ‫آشنایی با‬

Console.WriteLine("{0}\t{1}\t{2}", 0, 0 * 0, 0 * 0 * 0);
Console.WriteLine("{0}\t{1}\t{2}", 1, 1 * 1, 1 * 1 * 1);
Console.WriteLine("{0}\t{1}\t{2}", 2, 2 * 2, 2 * 2 * 2);
Console.WriteLine("{0}\t{1}\t{2}", 3, 3 * 3, 3 * 3 * 3);
Console.WriteLine("{0}\t{1}\t{2}", 4, 4 * 4, 4 * 4 * 4);
Console.WriteLine("{0}\t{1}\t{2}", 5, 5 * 5, 5 * 5 * 5);
Console.WriteLine("{0}\t{1}\t{2}", 6, 6 * 6, 6 * 6 * 6);
Console.WriteLine("{0}\t{1}\t{2}", 7, 7 * 7, 7 * 7 * 7);
Console.WriteLine("{0}\t{1}\t{2}", 8, 8 * 8, 8 * 8 * 8);
Console.WriteLine("{0}\t{1}\t{2}", 9, 9 * 9, 9 * 9 * 9);
Console.WriteLine("{0}\t{1}\t{2}",10,10*10,10 * 10 * 10);
Console.ReadKey();
}
}
}

‫ ارقام آن را جدا میکند و هر یک از ارقام را با سه فاصله‬،‫ برنامهای که یک عدد صحیح پنجرقمی را خوانده‬.33
:‫ خروجی بهصورت زیر باشد‬،‫ را وارد کند‬33440 ‫ اگر کاربر عدد‬،‫ بهعنوانمثال‬.‫بین آنها چاپ میکند‬
Result is 4 2 3 3 9
‫هدف‬ ‫متغیر‬
‫عدد پنجرقمی‬ n
‫متغیر کمکی‬ temp
‫رقم اول‬ r1
using System;
namespace p33 ‫رقم دو‬ r2
{ r3
class Program
‫رقم سو‬
{ ‫رقم چهار‬ r4
static void Main(string[] args)
{ ‫رقم پنجم‬ r5
int n, temp, r1, r2, r3, r4, r5;
Console.Write("Enter a number between 10000 to 99999:");
n = int.Parse(Console.ReadLine());
temp = n;
r5 = temp % 10;
temp = temp / 10;
r4 = temp % 10;
temp = temp / 10;
r3 = temp % 10;
temp = temp / 10;
r2 = temp % 10;
temp = temp / 10;
r1 = temp % 10;
‫فصل اول‬ 11

temp = temp / 10;


Console.WriteLine("Result is{0}{1}{2}{3}{4}",r1,r2,r3,r4,r5);
Console.ReadKey();
}
}
}

‫ برنامه‬.‫ به تن تبدیل میکند‬،‫ برنامهای که وزن یک محموله را به اونس گرفته‬.‫ اونس است‬45374103 ‫ هر تن‬.34
.‫به کاربر اجازه میدهد تا هر زمان میخواهد این محاسبه را تکرار کند‬
using System; ‫هدف‬ ‫متغیر‬
namespace _34
{ ‫تبدیلشده به تن‬ ton
class Program
{ ‫وزن به اونس‬ ons
static void Main(string[] args) ‫واحد تبدیل تن به اونس‬ rate
{
const float rate = 35273.92f;
float ton, ons;
while (true)
{
Console.Write( "Enter ons [-1 to end]:");
ons = float.Parse (Console.ReadLine());
if (ons == -1) break;
ton = ons / rate;
Console.WriteLine( "Ton is {0}", ton ) ;
}
Console.ReadKey();
}
}
}

‫ برنامهای که میزان بنزین مصرفی اتومبیل کاربر را برحسب لیتر و مسافت‬.‫ گالن است‬11313.70 ‫ هر لیتر معادل‬.35
.‫ سپس مصرف به ازای هر مایل به گالن را نمایش میدهد‬،‫طی شده آن را به مایل گرفته‬
using System; ‫هدف‬ ‫متغیر‬
namespace p35
{ ‫مصرف به ذیتر‬ Liter
class Program
{ ‫ مسافت به مایل‬mile
static void Main(string[] args) ‫ مصرف به گاذن‬gallon
{
float liter, gallon, mile; ‫ نسبتمصرف مایل به گاذن‬result
double result;
Console.Write("Enter liter:");
liter = float.Parse(Console.ReadLine());
Console.Write("Enter mile:");
mile = float.Parse(Console.ReadLine());
11 ‫ و دستورات ورودی و خروجی‬C# ‫آشنایی با‬

result = (double) (mile / liter) * 0.264179;;


Console.WriteLine("miles / gallons is {0}",result );
Console.ReadKey();
}
}
}

.‫ مربع و مکعب آن را نمایش میدهد‬،‫ برنامهای که عددی را خوانده‬.36


using System; ‫هدف‬ ‫متغیر‬
namespace p36
{ ‫عدد خواندهشده‬ x
class Program
{
static void Main(string[] args)
{
float x;
Console.Write("Enter x:");
x = float.Parse(Console.ReadLine());
Console.WriteLine( "{0} ^ 2 = {1}\n{0} ^ 3 = {2}",x,x*x,x*x * x);
Console.ReadKey();
}
}
}

‫ مساحت آن را با فرمول‬،‫) ذوزنقه را دریافت کرده‬h ‫ و‬b ،a( ‫ برنامهای که دو ضلع موازی و ارتفاع‬.37
:‫زیر محاسبه میکند‬
s=h*(a+b) /2
using System; ‫هدف‬ ‫متغیر‬
namespace p37
{ ‫ضلع اول‬ a
class Program
{ ‫ضلع دو‬ b
static void Main(string[] args) ‫ارتفا‬ h
{
float a, b, h, s; ‫مساحت‬ s
Console.Write("Enter a:");
a = float.Parse(Console.ReadLine());
Console.Write("Enter b:");
b = float.Parse(Console.ReadLine());
Console.Write("Enter h:");
h = float.Parse(Console.ReadLine());
s = h * (a + b) / 2;
Console.WriteLine("S is {0}", s);
Console.ReadKey();
}
}
}
‫فصل اول‬ ‫‪11‬‬

‫;‪using System‬‬ ‫هدف‬ ‫متغیر‬


‫‪namespace p38‬‬
‫{‬ ‫مقدار 𝜋 یعنی ‪ 3504052‬را نگهداری میکند‪.‬‬ ‫ثابت ‪pi‬‬
‫‪class Program‬‬ ‫‪r‬‬
‫{‬ ‫شعا خواندهشده را نگهداری میکند‬
‫][‪static void Main(string‬‬ ‫مساحت دایره را نگهداری میکند‪.‬‬ ‫‪a‬‬
‫)‪args‬‬
‫{‬ ‫محیط دایره را نگهداری میکند‪.‬‬ ‫‪p‬‬
‫;‪const double PI = Math.PI‬‬ ‫‪n‬‬
‫;‪double r, a, p, n‬‬
‫قطر دایره را نگهداری میکند‪.‬‬
‫;)"‪Console.Write("Enter r:‬‬
‫;))(‪r = double.Parse(Console.ReadLine‬‬
‫;‪n = 2 * r‬‬
‫;‪p = n * PI‬‬
‫;‪a = PI * r * r‬‬
‫;)‪Console.WriteLine("n={0}\n p={1}\n a = {2}",n,p,a‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .38‬برنامه ای که شعاع دایره را خوانده‪ ،‬محیط‪ ،‬مساحت و قطر آن را نمایش میدهد (محیط‪ ،‬مسهاحت و‬
‫قطر دایره بهصورت زیر حساب میشوند)‪:‬‬
‫𝝅 * شعاع * ‪ = 2‬محیط دایره‬
‫‪)2‬شعاع( * 𝝅 = مساحت دایره‬
‫شعاع * ‪ = 2‬قطر دایره‬

‫‪ .39‬برنامهای که عددی را به سال خوانده‪ ،‬تعیین میکند چند ماه‪ ،‬چند روز و چند ثانیه است‪.‬‬
‫سال * ‪ = 415135‬روز‬
‫‪ / 41‬روز = ماه‬ ‫‪ * 33 * 11 * 11‬روز = ثانیه‬
‫هدف‬ ‫متغیر‬
‫عدد ورودی به سال‬ ‫‪Year‬‬
‫عدددددد تبددددد شددددد‬ ‫‪day‬‬
‫بهروز‬
‫;‪using System‬‬ ‫عدددد تبددد شددد بدده‬ ‫‪month‬‬
‫‪namespace p39‬‬ ‫ما‬
‫{‬
‫عدددد تبددد شددد بدده‬ ‫‪second‬‬
‫‪class Program‬‬
‫{‬ ‫ثانیه‬
11 ‫ و دستورات ورودی و خروجی‬C# ‫آشنایی با‬

static void Main(string[] args)


{
int year;
float day, second, month;
Console.Write("Enter year:");
year = int.Parse(Console.ReadLine());
day = 365.25f * year;
Console.WriteLine("Day is {0}", day);
month = day / 30;
Console.WriteLine("Month is {0}", month);
second = day * 24 * 60 * 60;
Console.WriteLine("Second is {0}", second);
Console.ReadKey();
}
}
}

:‫ حاصل عبارات زیر را محاسبه کند‬،‫ را خوانده‬n ‫ و‬m ‫ برنامهای که‬.41


a = m2 – n2 b = 2 * m *n c = m 2 + n2
using System;
namespace p40
{
class Program
{
static void Main(string[] args)
{
float m, n, a, b, c;
Console.Write("Enter m:");
m = float.Parse(Console.ReadLine());
Console.Write("Enter n:");
n = float.Parse(Console.ReadLine());
a = m * m - n * n;
b = 2 * m * n;
c = m * m + n * n;
Console.WriteLine("a is {0}", a);
Console.WriteLine("b is {0}", b);
Console.WriteLine("c is {0}", c);
Console.ReadKey();
}
}
}
‫فصل اول‬ 16

،‫ تقسهیم‬،‫ ضهرب‬،‫ تفریهق‬،‫ سپس حاصل جمع‬،‫ قرار میدهد‬b ‫ و‬a ‫ در متغیرهای‬،‫برنامهای که دو عدد را خوانده‬ .41
.‫ را نمایش میدهد‬a3+b3 ‫ و‬a2+b2
using System;
namespace p41
{
class Program
{
static void Main(string[] args)
{
float a, b;
Console.Write("Enter a:");
a = float.Parse(Console.ReadLine());
Console.Write("Enter b:");
b = float.Parse(Console.ReadLine());
Console.WriteLine(" a + b = {0}", a + b);
Console.WriteLine(" a - b = {0}", a - b);
Console.WriteLine(" a * b = {0}", a * b);
Console.WriteLine(" a / b = {0}", (float)a / b);
Console.WriteLine(" a ^ 2 + b ^ 2 = {0}",a *a + b * b);
Console.WriteLine(" a ^ 3 + b ^ 3 = {0}",
a * a * a + b * b * b);
Console.ReadKey();
}
}
}

،“Yes” ،‫ اگر مجموع رقمههای اول و سهوم برابهر رقهم دوم باشهد‬،‫ برنامهای که یک عدد سهرقمی را خوانده‬.42
.‫“ را چاپ میکند‬No” ‫وگرنه‬
‫هدف‬ ‫متغیر‬
‫عدد خواندهشده‬ a
‫رقم یکان‬ r1
‫رقم دهگان‬ r2
17 ‫ و دستورات ورودی و خروجی‬C# ‫آشنایی با‬

using System; ‫رقم صدگان‬ r3


namespace p42
{
class Program
{
static void Main(string[] args)
{
int a, r1, r2, r3;
Console.Write("Enter a number[100 to 999]:");
a = int.Parse(Console.ReadLine());
r1 = a % 10;
r3 = a / 100;
r2 = a / 10 % 10;
string s =(r1 + r3 == r2 ) ? "Yes " : "No";
Console.WriteLine(s);
Console.ReadKey();
}
}

‫ برنامهای کهه تعهداد‬.‫ بایت حافظه اشغال میکند‬21 ‫ سطر (خط) است و هر خط‬41 ‫فرض کنید هر صفحه کتاب‬ .43
‫ تعیین میکند که این فلش چند تا از این کتهابهها را‬،‫صفحات یک کتاب و ظرفیت یک فلش را به گیگابایت خوانده‬
.)‫) بایت است‬.133(4 ‫میتواند در خودش ذخیره کند (گیگابایت برابر با‬

‫هدف‬ ‫متغیر‬
.‫تعداد صفحات کتاب که از ورودی خوانده میشود‬ pages
.‫ظرفیت فلش به گیگابایت که از ورودی خوانده میشود‬ Gb
using System; .‫ تعداد کتابهایی که این فلش میتواند ذخیره کند‬number
namespace p43
{ .‫ تعداد بایتهایی که این کتاب نیاز دارد‬bookBytes
class Program
{
static void Main (string[] args)
{
int pages, Gb;
float number;
long bookBytes;
Console.Write("Enter pages:");
pages = int.Parse(Console.ReadLine());
Console.Write("Enter size of memory:");
Gb = int.Parse(Console.ReadLine());
bookBytes = 80 * 30* pages;
number = (float) 1024 * 1024 * 1024 * Gb / bookBytes;
Console.WriteLine("Number of book is {0}", number);
Console.ReadKey();
}
}
‫فصل اول‬ 18

‫ برابر حاصل جمع ارقهام‬،‫ اگر حاصلضرب رقمهای اول و چهارم‬،‫ برنامهای که یک عدد چهاررقمی را خوانده‬.44
.‫“ را نمایش میدهد‬No” ،‫ وگرنه‬،“Yes” ،‫دوم و سوم باشد‬
‫هدف‬ ‫متغیر‬
using System;
namespace p44 ‫عدد چهاررقمی خواندهشده‬ num
{ n1
)‫رقم اول (یکان‬
class Program
{ )‫رقم دو (دهگان‬ n2
static void Main(string[] args)
{ )‫رقم سو (صدگان‬ n3
)‫رقم چهار (هزارگان‬ n4
int num, n1, n2, n3, n4;
Console.Write("Enter a number[1000 to 9999] :");
num = int.Parse(Console.ReadLine());
n1 = num % 10;
n2 = num % 100 / 10;
n3 = num / 100 % 10;
n4 = num / 1000;
string s = ((n2 + n3) == (n1 * n4)) ? "Yes" : "NO";
Console.WriteLine(s);
Console.ReadKey();
}
}
}

‫ مبلغ فروش را نمایش میدهد (مبلغ فروش برابهر بها تعهداد‬،‫ برنامهای که تعداد کاال و قیمت هر کاال را خوانده‬.45
.)‫کاال * قیمت کاال است‬
using System; ‫هدف‬ ‫متغیر‬
namespace p45
{ ‫تعداد کاال‬ count
class Program
{ ‫قیمت کاال‬ price
static void Main(string[] args) ‫مبلغ کاال‬ sell
{
int count, price;
long sell;
Console.Write("Enter count:");
count = int.Parse(Console.ReadLine());
Console.Write("Enter price:");
price = int.Parse(Console.ReadLine());
sell = count * price;
‫‪19‬‬ ‫آشنایی با ‪ C#‬و دستورات ورودی و خروجی‬

‫‪Console.WriteLine("Sells is‬‬ ‫;)‪{0}", sell‬‬


‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .46‬برنامهای که سنتان را به سال خوانده‪ ،‬مشخص کند چند دقیقه زندگی کردهاید (هرسال ‪ 415135‬روز اسهت و‬
‫هرروز ‪ 33 × )11(3‬دقیقه میباشد)‪.‬‬

‫;‪using System‬‬
‫هدف‬ ‫متغیر‬
‫‪namespace p46‬‬ ‫سنتان به سال که از ورودی خوانده میشود‪.‬‬ ‫‪year‬‬
‫{‬
‫‪class Program‬‬ ‫سنتان که به دقیقه تبدیلشده است‪.‬‬ ‫‪minute‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪double year, minute‬‬
‫;)"‪Console.Write("Enter year:‬‬
‫;))(‪year = double.Parse(Console.ReadLine‬‬
‫;‪minute = year * 365.25 * 24 * 60 * 60‬‬
‫;)‪Console.Write("Minute is {0}", minute‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .47‬برنامهای که مقداری را به مایل و فوت دریافت کرده‪ ،‬به متر و کیلومتر تبدیل میکنهد و نمهایش مهیدههد(هر‬
‫فوت ‪ 1141321‬متر و هر مایل ‪ .110145‬متر است)‪.‬‬
‫هدف‬ ‫متغیر‬
‫ثابت نرخ تبدیل مایل به متر‬ ‫ثابت ‪M-PER-MILE‬‬
‫ثابت نرخ تبدیل فوت به متر‬ ‫ثابت ‪M-PER-FOOT‬‬
‫مایل که از ورودی خوانده میشود‪.‬‬ ‫‪miles‬‬
‫فوت که از ورودی خوانده میشود‪.‬‬ ‫‪feet‬‬
‫مقدار فوت و مایل که به متر تبدیلشده را نگهداری میکند‪.‬‬ ‫‪meters‬‬
‫مقادیر فوت و مایل که به کیلومتر تبدیلشده را نگهداری میکند‪.‬‬ ‫‪kilometers‬‬
‫فصل اول‬ 11

using System;
namespace p47
{
class Program
{
static void Main(string[] args)
{
const double M_PER_MILE = 1609.35;
const double M_PER_FOOT = 0.30480;
float miles, feet, kilometers, meters;
double total_meters, total_kilometers;
Console.Write ("Enter the number of miles: ");
miles = float.Parse(Console.ReadLine());
Console.Write("Enter the number of feet:: ");
feet = float.Parse(Console.ReadLine());
// Convert everything to meters
total_meters = miles * M_PER_MILE + feet * M_PER_FOOT;
// Calculate the number of kilometers
total_kilometers = total_meters / 1000;
kilometers = (int) total_kilometers; // truncates to integer
// Convert decimal part of total_kilometers to meters
meters =(float)(total_kilometers - kilometers) * 1000;
// Display results
Console.WriteLine("The distance is {0} kilometers,
{1} meters.", kilometers, meters);
Console.ReadKey();
}
}
}

:‫ حاصل عبارت مقابل را نمایش میدهد‬،‫ را از ورودی خوانده‬y ‫ و‬x ‫ برنامهای که‬.48
Z = x++ * y / x++;
using System;
namespace p48
{
class Program
{
static void Main(string[] args)
{
int x, y, z;
Console.Write("Enter x: ");
x = int.Parse(Console.ReadLine());
Console.Write("Enter y: ");
y = int.Parse(Console.ReadLine());
z = x++ * y / x++;
Console.WriteLine("z is {0}", z);
Console.ReadKey();
10 ‫ و دستورات ورودی و خروجی‬C# ‫آشنایی با‬

}
}
}

‫ به حرف بزرگ تبدیل کرده و نمایش میدهد (فاصله بهین‬،‫ برنامه ای که یک حرف انگلیسی کوچک را خوانده‬.49
‫ تا کم کنیم به حرف بهزرگ تبهدیل‬43 ‫ چنانچه از یک حرف کوچک‬،‫ یعنی‬.‫ کاراکتر است‬43 ‫حرف بزرگ و کوچک‬
.)‫میشود‬
using System;
namespace p49
{
class Program
{
static void Main(string[] args)
{
char ch;
Console.Write("Enter a char:");
ch = char.Parse(Console.ReadLine());
ch=(ch >= 'a' && ch <= 'z') ? (char)((int)ch- 32) : ch;
Console.Write("char is {0}", ch);
Console.ReadKey();
}
}
}

‫ است یا خیر؟‬0 ‫ تا‬0 ‫برنامهای که یک کاراکتر را خوانده و تعیین میکند که بین‬ .51
using System;
namespace p50
{
class Program
{
static void Main(string[] args)
{
char ch;
Console.Write("Enter a char:");
ch = char.Parse(Console.ReadLine());
string s = (ch >= '0' && ch <= '9') ? "Yes" : "No";
Console.Write(s);
Console.ReadKey();
}
}
}
‫فصل اول‬ 11

z = x3 + 2x2 + 3y - 5 :‫ حاصل عبارت مقابل را نمایش میدهد‬،‫ را خوانده‬y ‫ و‬x ‫ برنامهای که‬.51
using System;
namespace p51
{
class Program
{
static void Main(string[] args)
{
int x, y, z;
Console.Write("Enter x:");
x = int.Parse(Console.ReadLine());
Console.Write("Enter y:");
y = int.Parse(Console.ReadLine());
z = x * x * x + 3 * x * x * +3 * y - 5;
Console.Write("z = {0}", z);
Console.ReadKey();
}
}
}

‫ وگرنهه کلمهه‬،“Failed” ‫ کلمهه‬،‫ بهود‬.1 ‫ اگر نمره کمتهر از‬،‫ برنامهای که نمرهای دانشجویی را دریافت کرده‬.52
.)‫ نمره دانشجو است‬،grade ‫“ را نمایش میدهد (در این برنامه متغیر‬Passed”
using System;
namespace p52
{
class Program
{
static void Main(string[] args)
{
float grade;
Console.Write("Enter a grade:");
grade = float.Parse(Console.ReadLine());
string s = (grade >= 10) ? "Passed" : "Failed";
Console.Write(s);
Console.ReadKey();
}
}
}
11 ‫ و دستورات ورودی و خروجی‬C# ‫آشنایی با‬

.‫ بدون استفاده از متغیر کمکی محتوی آنها را تعویض میکند‬،‫برنامهای که دو عدد را خوانده‬ .53
using System;
namespace p53
{
class Program
{
static void Main(string[] args)
{
float x, y;
Console.Write("Enter x:");
x = float.Parse(Console.ReadLine());
Console.Write("Enter y:");
y = float.Parse(Console.ReadLine());
x = x + y;
y = x - y;
x = x - y;
Console.Write("X = {0}\tY ={1} ", x, y);
Console.ReadKey();
}
}
}

‫ با استفاده از عملگر بیتی آن را به حرف بزرگ تبدیل میکند (کهد‬،‫ برنامهای که یک حرف کوچک را خوانده‬.54
،‫ اگر کاراکتر حهرف کوچهک باشهد‬،‫ برای این منظور‬.)‫ واحد از حروف بزرگ بیشتر است‬43 ‫اسکی حروف کوچک‬
.‫ ) بیت به بیت و (&) بیتی مینماییم تا تبدیل به حرف بزرگ شود‬355 – 43 (‫آن را با مقدار‬
using System;
namespace p54
{
class Program
{
static void Main(string[] args)
{
char ch;
Console.Write("Enter a char:");
ch = char.Parse(Console.ReadLine());
ch = (ch >= 'a' && ch <= 'z') ?
(char)((int)ch & (255 - 32)) : ch;
Console.Write("Upper is {0}", ch);
Console.ReadKey();
}
}
}
‫فصل اول‬ 11

‫ مساحت مثلث را محاسبه میکند (مساحت مثلث برابهر بها ارتفهاع‬،‫ برنامهای که قاعده و ارتفاع مثلث را خوانده‬.55
.)‫ضربدر نصف قاعده است‬
using System; ‫هدف‬ ‫متغیر‬
namespace p55
{ ‫ ارتفا‬h
class Program
{ ‫ قاعده‬p
static void Main(string[] args) ‫ مساحت‬s
{
int p, h;
float s;
Console.Write("Enter p:");
p = int.Parse(Console.ReadLine());
Console.Write("Enter h:");
h = int.Parse(Console.ReadLine());
s = (float)(p * h) / 2;
Console.Write("S is {0}", s);
Console.ReadKey();
}
}
}

.‫ بزرگترین و کوچکترین عدد را نمایش میدهد‬،‫ عدد را خوانده‬5 ‫ برنامهای که‬:1 ‫پروژه برنامهنويسی‬
using System; ‫هدف‬ ‫متغیر‬
namespace Project1
{ ‫ اوذین عدد‬a
class Program
{ ‫ دومین عدد‬b
static void Main(string[] args) ‫ سومین عدد‬c
{
int a, b, c, d, e, max, min; ‫ چهارمین عدد‬d
Console.Write("Enter a:");
a = int.Parse(Console.ReadLine()); ‫ پنجمین عدد‬e
Console.Write("Enter b:");
b = int.Parse(Console.ReadLine()); ‫ کوچکترین عدد‬min
Console.Write("Enter c:"); ‫ بزرگترین عدد‬max
c = int.Parse(Console.ReadLine());
Console.Write("Enter d:");
d = int.Parse(Console.ReadLine());
Console.Write("Enter e:");
e = int.Parse(Console.ReadLine());
max = min = a;
11 ‫ و دستورات ورودی و خروجی‬C# ‫آشنایی با‬

max = (b > max) ? b : max;


max = (c > max) ? c : max;
max = (d > max) ? d : max;
max = (e > max) ? e : max;
min = (b < min) ? b : min;
min = (c < min) ? c : min;
min = (d < min) ? d : min;
min = (e < min) ? e : min;
Console.WriteLine("Max is {0}", max);
Console.WriteLine("Min is {0}", min);
Console.ReadKey();
}
}
}

.‫ ارقام عدد را بافاصله نمایش میدهد‬،‫ رقمی را خوانده‬5 ‫ برنامهای که یک عدد‬:2 ‫پروژه برنامهنويسی‬
using System;
namespace project2
{
class Program
{
static void Main(string[] args)
{
int a1, a2, a3, a4, a5, num, temp;
Console.Write("Enter a number:"); ‫هدف‬ ‫متغیر‬
num = int.Parse(Console.ReadLine());
‫شده‬‫نده‬ ‫خوا‬ ‫رقمی‬ ‫پنج‬ ‫عدد‬ num
a1 = num % 10;
temp = num / 10; ‫ متغیر کمکی که پوس از حو ف‬Temp
a2 = temp % 10; -‫ را نگهداری موی‬num ‫هر رقم‬
temp /= 10;
a3 = temp % 10; .‫کند‬
temp /= 10; ‫ رقم یکان‬a1
a4 = temp % 10;
temp /= 10; ‫ رقم دهگان‬a2
a5 = temp % 10; ‫ رقم صدگان‬a3
temp /= 10;
Console.WriteLine("{0}{1}{2}{3}{4}", ‫ رقم هزارگان‬a4
a5,a4,a3,a2,a1); ‫رقم ده هزارگان‬ a5
Console.ReadKey();
}
}
}
‫فصل‬
‫ساختار تصمیم و حلقه تکرار‬
2
‫ دانشججویی کجه دومجمع معجدل را‬،‫ دانشجو را از ورودی خوانده‬N ‫ برنامهای که شماره دانشجویی و معدل تعداد‬.1
‫ چون همچیک از دانشجویان معدلشان کوچکتجر از‬:‫ )توضمح‬.‫ پمدا میکند و به خروجی میبرد‬،‫ازنظر بزرگی دارد‬
(.‫ صفر در نظر گرفتمم‬،‫ لذا اولمع بار معدل دو دانشجویی که باالتریع معدل را دارند‬،‫صفر نمیباشد‬
‫هدف‬ ‫متغمر‬
‫تعداد دانشجویان‬ n
‫اولین معدل‬ max1
using System; ‫دومین معدل‬ max2
namespace p1
{ ‫شمارنده‬ i
class Program .‫شماره دانشجویی که اولین معدل را دارد‬ id1
{
static void Main(string[] args) .‫دارد‬ ‫شماره دانشجویی که دومین معدل را‬ id2
{ ‫معدل دانشجو‬ aver
int id1=-1,id2=0,i,n,id;
float aver,max1=-1,max2=0; ‫دانشجو‬ ‫شماره‬ id
Console.Write("Enter n:");
n = Convert.ToInt32(Console. ReadLine());;
if (n < 2)
{
Console.WriteLine("Please enter a number greater then 1");
Console.ReadKey();
return ;
}
for (i=1; i<= n; i++)
{
Console.Write( "Enter a id:");
id = int.Parse(Console.ReadLine());
Console.Write( "Enter a average:");
aver = float.Parse(Console.ReadLine());
if (aver>max1)
{
id2=id1;
max2 = max1;
max1 = aver;
id1 = id;
}
else if(aver > max2)
{
max2=aver;
id2=id;
}
}
Console.WriteLine("Max2 = {0}\tId2 = {1}", max2, id2);
Console.ReadKey();
}
}
}
‫‪73‬‬ ‫ساختار تصمیم و حلقه تکرار‬

‫‪ .2‬برنامهای که اعدادی را از ورودی خوانده تشخمص میدهد که آیا اعداد موردنظر کامل هستند یا خمر‪ .‬عددی‬
‫کامل است که مجموع مقسومعلمههای آن (بهجز خودش) برابر با آن عدد باشد‪ ،‬پس از بررسی هر عدد از کاربر‬
‫سؤال کند که میخواهد به کارش ادامه دهد یا خمر‪.‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬
‫‪namespace p2‬‬
‫{‬ ‫‪ num‬اعداد موردنظر‬
‫‪class Program‬‬
‫{‬ ‫‪ i‬شمارنده از ‪ 1‬تا ‪num‬‬
‫)‪static void Main(string[] args‬‬ ‫‪ sum‬مجموع مقسومعلیهها‬
‫{‬
‫;‪int sum, num, i‬‬ ‫‪ yes‬تعیین ادامه کار‬
‫;‪char yes‬‬
‫‪do‬‬
‫{‬
‫;)"‪Console.Write ("Enter a number:‬‬
‫;))(‪num = Convert.ToInt32(Console.ReadLine‬‬
‫;‪sum = 0‬‬
‫)‪for (i = 1; i < num; i++‬‬
‫;‪if (num % i == 0) sum += i‬‬
‫)‪if (sum == num‬‬
‫;)"‪Console.WriteLine( "Perfected‬‬
‫‪else‬‬
‫;)"‪Console.WriteLine("Not Perfected‬‬
‫;)"? ‪Console.Write("Continue ...‬‬
‫;))(‪yes =char.Parse(Console.ReadLine‬‬
‫;)‪yes = char.ToLower(yes‬‬
‫}‬
‫;)'‪while (yes == 'y‬‬
‫}‬
‫}‬
‫}‬

‫برنامهای که تعداد ‪ n‬جمله از سری فمبوناچی را تولمد میکند‪.‬‬ ‫‪.3‬‬


‫‪ = 3‬سری فمبوناچی‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪5‬‬ ‫‪8‬‬ ‫‪31‬‬ ‫‪...‬‬
‫فصل دوم‬ ‫‪73‬‬

‫هدف‬ ‫متغمر‬
‫شمارنده‬ ‫‪i‬‬
‫;‪using System‬‬
‫‪namespace p3‬‬ ‫‪ f1‬جمالت سری‬
‫{‬ ‫‪ f2‬جمالت سری‬
‫‪class Program‬‬
‫{‬ ‫‪ f3‬جمالت سری‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫‪ N‬تعداد جمالت‬
‫;‪int n, f1 = 1, f2 = 1, f3, i‬‬
‫;)"‪Console.Write("Enter a number:‬‬
‫;))(‪n = Convert.ToInt32(Console.ReadLine‬‬
‫)‪if (n == 1‬‬
‫{‬
‫;)‪Console.Write(f1‬‬
‫; ‪return‬‬
‫}‬
‫)‪else if (n == 2‬‬
‫{‬
‫}‪Console.Write("{0‬‬ ‫}‪{1‬‬ ‫;) ‪" , f1, f2‬‬
‫;‪return‬‬
‫}‬
‫}‪Console.Write("{0‬‬ ‫}‪{1‬‬ ‫;)‪", f1, f2‬‬
‫)‪for (i = 3; i <= n; i++‬‬
‫{‬
‫;‪f3 = f1 + f2‬‬
‫}‪Console.Write("{0‬‬ ‫;)‪", f3‬‬
‫;‪f1 = f2‬‬
‫;‪f2 = f3‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .4‬برنامهای که شماره کارمندی و حقوق تعدادی از کارکنان موسسه را دریافت کرده‪ ،‬بر اساس تعریف زیر‪ ،‬مالمات‬
‫حقوق را محاسبه میکند و به خروجی میبرد‪ .‬سپس مشخص میکند بمشتریع دریافتی مربوط به کدام کارمند است‪.‬‬
‫مالمات از معاف ‪ < = 400000‬حقوق‬
‫‪ 31‬درصد به مازاد بر‪ < = 500000 011111‬حقوق = < ‪400000‬‬
‫‪ 35‬درصد مازاد ‪ < = 700000 511111‬حقوق = < ‪500000‬‬
‫‪ > = 700000‬حقوق‬ ‫‪111111‬‬ ‫‪31‬درصد مازاد‬
‫هدف‬ ‫متغمر‬
‫شماره کارمندی‬ ‫‪id‬‬
‫حقوق‬ ‫‪salary‬‬
‫مالیات‬ ‫‪tax‬‬
‫دریافتی‬ ‫‪pay‬‬
‫شمارنده‬ ‫‪i‬‬
‫شماره کارمندی که بیشترین دریافتی را دارد‬ ‫‪id1‬‬
73 ‫ساختار تصمیم و حلقه تکرار‬

using System; ‫ بیشترین دریافتی‬max


namespace p4
{ ‫ تعداد کارمندان‬n
class Program
{
static void Main(string[] args)
{
long i,salary,tax=0,pay,max=0, id1=0, id=-1, n;
Console.Write("Enter a number:");
n = Convert.ToInt32 (Console.ReadLine());
for (i = 1; i <= n; i++)
{
Console.Write("Enter a id:");
id = long.Parse(Console.ReadLine());
Console.Write("Enter a salary:");
salary = long.Parse(Console.ReadLine());
if (salary <= 400000)
tax=0;
else if (salary>=400001 && salary<=500000)
tax=(salary-400000)* 10 / 100;
else if(salary>=500001 && salary<=700000)
tax=(500000-400001)*10/100+(salary-500001)*15/100;
else if(salary>=700001)
tax=(500000-400001)*10/100+
(salary-500001)*15/100+(salary-700001)*17/100;
pay=salary-tax;
if (pay > max)
{
max=pay;
id1=id;
}
Console.WriteLine("Salary={0}Tax={1}Pay=
{2}", salary, tax, pay);
}
Console.WriteLine("Max={0} Id = {1}", max, id1);
Console.ReadKey();
}
}
}

،‫ چند روز‬،‫ چند ماه‬،‫ مشخص میکند چند سال‬،‫ برنامه ای که سال تولد کاربر و سال فعلی را از ورودی خوانده‬.5
.‫ چند دقمقه و چند ثانمه عمر کرده است‬،‫چند ساعت‬
‫هدف‬ ‫متغمر‬
‫سال تولد‬ byy
‫فصل دوم‬ 04

‫ماه تولد‬ bmm


‫روز تولد‬ bdd
‫سال جاری‬ cyy
‫ماه جاری‬ cmm
‫روز جاری‬ cdd
‫سالهایی که زندگی کرده‬ year
‫ماههایی که زندگی کرده‬ month
‫روزهایی که زندگی کرده‬ day
‫تعداد سااعاتی کاه زنادگی‬ hh
‫کرده‬
‫تعااداد دیااایقی کااه زناادگی‬ mm
‫کرده‬
using System; ‫تعداد ثانیههاایی کاه زنادگی‬ ss
namespace p5
{ ‫کرده‬
class Program ‫تعااداد کااز روزهااایی کااه‬ days
{
static void Main(string[] args) ‫زندگی کرده‬
{
long byy,bdd,bmm,cyy,cdd,cmm, year,month,day;
double hh,ss,mm,days;
Console.Write ("Enter birth date(year):");
byy = long.Parse(Console.ReadLine());
Console.Write ("Enter birth date(month):");
bmm = long.Parse(Console.ReadLine());
Console.Write ("Enter birth date(day):");
bdd = long.Parse(Console.ReadLine());
Console.Write ("Enter current date(year):");
cyy = long.Parse(Console.ReadLine());
Console.Write ("Enter current date(month):");
cmm = long.Parse(Console.ReadLine());
Console.Write ("Enter current date(day):");
cdd = long.Parse(Console.ReadLine());
if (cdd<bdd)
{
cmm--;
cdd+=30;
}
day=cdd-bdd;
if (cmm<bmm)
{
cyy--;
cmm+=12;
}
month=cmm - bmm;
year=cyy - byy;
days=day+month*30+year*365;
hh=days*24;
mm=hh * 60;
‫‪04‬‬ ‫ساختار تصمیم و حلقه تکرار‬

‫;‪ss=mm * 60‬‬
‫‪Console.WriteLine("Old is: {0}/{1}/{2}",year,‬‬
‫;)‪month, day‬‬
‫‪Console.WriteLine("Hour is(hh:mm:ss):‬‬
‫;)‪{0}:{1}:{2}", (long) hh, (long) mm, (long) ss‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .6‬فرض کنمد بخواهمد از بانک ‪ 31111111‬ریال وام با بهره ‪ %35‬با مدت بازپرداخت ‪ 38‬ماهه دریافت کنمد‪ ،‬بهره‬
‫وام بهصورت زیر محاسبه میشود‪:‬‬
‫نرخ بهره × تعداد ایساط ‪ +‬مبلغ پرداختی وام‬ ‫𝟓𝟏 ‪𝟏𝟎𝟎𝟎𝟎𝟎𝟎𝟎 × 𝟏𝟖 × 𝟎.‬‬
‫= بهره وام‬ ‫=‬ ‫𝟎𝟎𝟎𝟎𝟓𝟐𝟐 =‬
‫𝟐𝟏‬ ‫𝟐𝟏‬
‫مبلغ بهره (‪)32251111‬ریال به متقاضی پرداخت میگردد‪ .‬حال چنانچه متقاضی ‪311111111‬ریال نماز داشته‬
‫باشد‪ ،‬چقدر وام باید به او پرداخت شود‪ .‬برنامهای که مبلغ موردنماز متقاضی‪ ،‬تعداد اقساط و مبلغ بهره را دریافت‬
‫میکند‪ ،‬سپس وامی که باید به متقاضی پرداخت شود و قسط هر ماه را چاپ میکند‪) .‬توضمح‪ :‬مبلغ وام پرداختنی‬
‫بهصورت زیر محاسبه میگردد(‪.‬‬
‫بهره نرخ درصد×تعداد ایساط× مبلغ وام پرداختی‬
‫‪ −‬مبلغ وام پرداختی = مبلغ متقاضی = مبلغ‬ ‫‪ −‬مبلغ وام پرداختی =‬
‫𝟐𝟏‬
‫مبلغ متقاضی وام‬
‫مبلغ کز وام = مبلغ متقاضی × 𝟐𝟏 = درصد نرخ بهره × ایساط تعداد × مبلغ وام ‪ −‬مبلغ وام × 𝟐𝟏‬
‫مبلغ متقاضی × 𝟐𝟏‬
‫=‬
‫)نرخ بهره × تعداد ایساط × 𝟐𝟏(‬
‫تذکر‪ :‬برنامه تا هر زمان که کاربر بخواهد ادامه مییابد‪.‬‬
‫هدف‬ ‫متغمر‬
‫;‪using System‬‬
‫‪namespace p6‬‬ ‫مبلغ موردنیاز متقاضی‬ ‫‪m‬‬
‫{‬
‫‪class Program‬‬ ‫نرخ بهره‬ ‫‪s‬‬
‫{‬ ‫کز وام پرداختی‬ ‫‪k‬‬
‫)‪static void Main(string[] args‬‬
‫{‬ ‫تعداد ایساط‬ ‫‪tedad‬‬
‫;‪long m, s, k, tedad, p‬‬ ‫‪p‬‬
‫;‪char ansi‬‬
‫پرداختی هر یسط‬
‫) ; ;( ‪for‬‬ ‫‪ansi‬‬
‫{‬ ‫شرط ادامه‬
‫;)"‪Console.Write("Enter m:‬‬
‫;))(‪m = long.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter tedad:‬‬
‫;))(‪tedad = long.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter s:‬‬
‫فصل دوم‬ 04

s = long.Parse(Console.ReadLine());
k = 12 * m / (12 - tedad * s / 100);
p = k / tedad;
Console.WriteLine("k = {0}\tp = {1}", k, p);
Console.Write("Do you want to continue(y/n):");
ansi = Convert.ToChar(Console.ReadLine());
ansi = char.ToLower(ansi);
if (ansi == 'n') break;
}
}
}
}

‫ هر یک از قسمتهای صحمح و اعشاری آن را بهصورت یک‬،‫ برنامهای که عدد اعشاری را از ورودی خوانده‬.7
.‫ به خروجی برود‬02 ‫ و‬31 ‫ بهصورت دو عدد صحمح‬31/02 ،‫ بهعنوانمثال‬.‫عدد صحمح به خروجی میبرد‬
‫هدف‬ ‫متغمر‬
using System; ‫عدد خواندهشده‬ num
namespace p7
{ ‫یسمت صحیح‬ num1
class Program ‫یسمت اعشاری‬ num2
{
static void Main(string[] args) ‫متغیر کمکی‬ temp
{ ‫شمارنده‬ i
double num, num2=0,num1,temp;
long i,k,j=0; ‫شمارنده‬ j
Console.Write("Enter a number:");
num=double.Parse(Console.ReadLine()); ‫شمارنده‬ k
num1= Math.Floor (num);
Console.WriteLine("Number one is {0} ", num1);
temp = num;
i=0;
while(temp!=j)
{
temp=temp*10;
num2 +=(((long ) Math.Floor (temp)%10)* Math.Pow (10,i));
j=(long ) temp;
++i;
}
num2=Math.Pow (10,i)* (num - num1);
Console.WriteLine ("Number two is {0} ",(long) num2);
Console.ReadKey();
}
}
}
‫‪07‬‬ ‫ساختار تصمیم و حلقه تکرار‬

‫‪ .8‬برنامهای که سه مقدار را از ورودی خوانده‪ ،‬آنها را به ترتمب صعودی در خروجی چاپ میکند‪.‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬
‫‪namespace p8‬‬
‫{‬ ‫‪ a, b, c‬اعداد خواندهشده‬
‫‪class Program‬‬
‫{‬ ‫‪ Temp‬متغیر کمکی‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int a, b, c, temp‬‬
‫;)"‪Console.Write("Enter a:‬‬
‫;))(‪a = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter b:‬‬
‫;))(‪b = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter c:‬‬
‫;))(‪c = int.Parse(Console.ReadLine‬‬
‫)‪if (a > b‬‬
‫{‬
‫;‪temp = a‬‬
‫;‪a = b‬‬
‫;‪b = temp‬‬
‫}‬
‫)‪if (a > c‬‬
‫{‬
‫;‪temp = a‬‬
‫;‪a = c‬‬
‫;‪c = temp‬‬
‫}‬
‫)‪if (b > c‬‬
‫{‬
‫;‪temp = b‬‬
‫;‪b = c‬‬
‫;‪c = temp‬‬
‫}‬
‫}‪Console.WriteLine("Sorted is {0} {1‬‬ ‫;)‪{2} ",a, b, c‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .9‬برنامهای که شماره کارمندی‪ ،‬ساعت کارکرد و دستمزد ساعتی کارکنان موسسهای را خوانده‪ ،‬حقوق آنها را‬
‫محاسبه میکند‪ .‬اگر کارمندی بمش از ‪ 01‬ساعت کارکرده باشد‪ ،‬اضافهکار به او تعلق میگمرد‪ .‬به ازای هر ساعت‬
‫کاری‪ 3 ،‬دستمزد ساعتی بهعنوان اضافهکاری پرداخت میشود‪.‬‬
‫‪2‬‬
‫هدف‬ ‫متغمر‬
‫فصل دوم‬ 00

‫تعداد کارکنان‬ n
using System;
namespace p9 ‫شماره کارمندی‬ id
{ h
class Program
‫ساعت کارکرد‬
{ ‫دستمزد ساعتی‬ hp
static void Main(string[] args)
{ ‫اضافهکاری‬ ov
int n,id,h; ‫شمارنده‬ i
long i,hp;
float ov, p; ‫حقوق‬ p
Console.Write("Enter n:");
n = Convert.ToInt32(Console.ReadLine());
for (i = 1; i <= n; i++)
{
Console.Write("Enter id:");
id = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter h:");
h = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter hp:");
hp = Convert.ToInt32(Console.ReadLine());
ov = 0;
if (h > 40) ov= (3.0f / 2.0f - 1) * (h - 40) * hp;
p = ov + hp * h;
Console.WriteLine("id = {0} ov = {1} p = {2}",
id, ov, p);
}
Console.ReadKey();
}
}
}

‫ برنامهای که قممت کاال (ارزش‬.‫ یکی از مسائل مهم شرکتها و ادارات پمشبمنی بودجه چند سال بعد است‬.11
‫ قممت کاال را برای چند سال بعد پمشبمنی مینماید (برنامه تعداد سالهایی که‬،‫پروژه) و نرخ تورم کاال را گرفته‬
.)‫ از کاربر دریافت مینماید‬،‫قممت کاال باید پمشبمنی شود‬
‫هدف‬ ‫متغمر‬
using System;
namespace p10 ‫تعداد سال پیشبینی بودجه‬ n
{
class Program ‫ارزش کاال در سال جاری و‬ p
{ ‫مهرومومهای بعد‬
static void Main(string[] args)
{ ‫شمارنده‬ I
long n,p,i; )‫نرخ تورم (به درصد‬ inc
float inc;
Console.Write("Enter p:");
04 ‫ساختار تصمیم و حلقه تکرار‬

p = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter n:");
n = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter inc:");
inc = Convert.ToSingle(Console.ReadLine());
Console.WriteLine("Year Price");
for (i=1; i <= n; i++)
{
p += (long) (p * inc / 100);
Console.WriteLine( " {0}\t{1}", i, p);
}
Console.ReadKey();
}
}
}

.‫برنامهای که مجموع ده جمله اول سری زیر را محاسبه و چاپ میکند‬ .11
𝟏 𝟏 𝟏 𝟏
𝒔= − 𝟐
+ 𝟐 𝟑
− +⋯
𝒙 𝒙 + 𝟐𝒙 𝒙 + 𝟐𝒙 + 𝟑𝒙 𝒙 + 𝟐𝒙 + 𝟑𝒙𝟑 + 𝟒𝒙𝟒
𝟐
‫هدف‬ ‫متغمر‬
using System; ‫عدد خواندهشده‬ x
namespace p11
{ ‫شمارنده‬ i
class Program pow
{
x ‫توانهای‬
static void Main(string[] args) ‫مجموع‬ sum
{
int x, i, s = 1; ‫مجموع مخرج‬ sum1
double pow = 1.0; ‫عالمت یکدرمیان منفی‬ s
double sum = 0.0, sum1 = 0.0;
Console.Write ("Enter x:");
x=Convert.ToInt32(Console.ReadLine());
for (i = 1; i <= 10; i++)
{
pow *= x;
sum1 += i * pow;
sum += s * 1.0 / sum1;
s = -s;
}
Console.WriteLine("Sum is {0}", sum);
Console.ReadKey();
}
}
}
‫فصل دوم‬ ‫‪04‬‬

‫‪ .12‬برنامهای که مجموعهای از اعداد دوتایی صحمح را خوانده‪ ،‬حاصلضرب آنها را بدون استفاده از عملگر ضرب‬
‫نمایش میدهد‪ .‬چنانچه کاربر بهجای دو عدد‪ ،‬صفر وارد کند‪ ،‬برنامه خاتمه یابد‪.‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬
‫‪namespace p12‬‬
‫{‬ ‫اول‬ ‫مقدار‬ ‫‪x‬‬
‫‪class Program‬‬ ‫مقدار دوم‬ ‫‪y‬‬
‫{‬
‫)‪static void Main(string[] args‬‬ ‫شمارنده‬ ‫‪i‬‬
‫{‬ ‫مجموع (حاصزضرب)‬ ‫‪sum‬‬
‫;‪int x, y, i, temp‬‬
‫;‪long sum=0‬‬ ‫کمکی‬ ‫‪temp‬‬
‫); ;( ‪for‬‬
‫{‬
‫;‪sum = 0‬‬
‫;)"‪Console.Write("Enter x:‬‬
‫;))(‪x = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter y:‬‬
‫;))(‪y = Convert.ToInt32(Console.ReadLine‬‬
‫;‪if (x == 0 && y == 0) break‬‬
‫;‪temp = y‬‬
‫;‪if (y < 0) temp = -y‬‬
‫)‪for (i = 1; i <= temp; i++‬‬
‫;‪sum += x‬‬
‫;‪if (y < 0) sum = -sum‬‬
‫;)‪Console.WriteLine("{0} x {1} = {2}", x, y, sum‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .13‬برنامهای که عددی را خوانده‪ ،‬مشخص میکند آیا عدد متقارن است یا خمر‪ .‬نمونههای از اعداد متقارن‬
‫عبارتاند از‪ 32023 :‬و ‪( .12021‬توضمح‪ :‬چنانچه عددی برابر با مغلوبش باشد‪ ،‬متقارن است‪ .‬پس‪ ،‬ابتدا مغلوب عدد را‬
‫محاسبه کرده‪ ،‬با خودش مقایسه میکنمم‪).‬‬
‫هدف‬ ‫متغمر‬
‫عدد واردشده‬ ‫‪num‬‬
03 ‫ساختار تصمیم و حلقه تکرار‬

using System; 11 ‫ثابت‬ pow


namespace p13
‫مغلوب‬ ‫محاسبه‬ ‫برای‬ ‫کمکی‬ temp
{
class Program )‫مجموع (مغلوب عدد‬ sum
{
static void Main(string[] args)
{
long num, pow = 10, temp;
long sum = 0;
Console.Write("Enter a number:");
num = long.Parse(Console.ReadLine());
temp = num;
while (temp > 0)
{
sum = (pow * sum) + temp % 10;
temp /= 10;
}
if (sum == num)
Console.WriteLine("Yes");
else
Console.WriteLine("No");
Console.ReadKey();
}
}
}

‫ را محاسبه و چاپ‬mn ،+ ‫ با استفاده از عملگر‬،‫ دو عدد صحمح و مثبت را خوانده‬n ‫ و‬m ‫برنامهای که‬ .14
.‫مینماید‬
‫هدف‬ ‫متغمر‬
using System; ‫پایه‬ m
using System.Collections.Generic; ‫توان‬ n
namespace p14
{ n-1 ‫ تا‬1 ‫شماره‬ i
class Program
{ m‫ تا‬1 ‫شمارنده‬ j
static void Main(string[] args)
{ )‫مجموع (در پایان مقدار توان یرار میگیرد‬ sum
long n,m,i,j,sum,temp; ‫متغیر کمکی برای نگهداری مجموع هر دوره‬ temp
sum = 0;
Console.Write("Enter m:");
m = long.Parse(Console.ReadLine());
Console.Write("Enter n:");
n = long.Parse(Console.ReadLine());
temp = m;
for (i=1; i < n;i++)
{
sum = 0;
for (j = 1;j <= m; j++)
sum+=temp;
temp=sum;
}
Console.WriteLine ("{0} ^ {1} = {2}",m, n, sum);
‫فصل دوم‬ ‫‪03‬‬

‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .15‬برنامهای که تعدادی عدد را خوانده‪ ،‬هر یک از اعداد را که بر ‪ 9‬بخشپذیر باشد‪ ،‬در خروجی چاپ‬
‫میکند (از روش مجموع ارقام استفاده کنمد)‪.‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬
‫‪namespace p15‬‬
‫{‬ ‫تعداد اعداد‬ ‫‪n‬‬
‫‪class Program‬‬ ‫شمارنده‬ ‫‪i‬‬
‫{‬ ‫مجموع اریام‬ ‫‪sum‬‬
‫)‪static void Main(string[] args‬‬
‫{‬ ‫کمکی‬ ‫‪temp‬‬
‫;‪int sum, n, num, i, temp‬‬
‫;)"‪Console.Write("Enter n:‬‬ ‫اعداد دریافتی‬ ‫‪num‬‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬
‫)‪for (i = 1; i <= n; i++‬‬
‫{‬
‫;)"‪Console.Write("Enter num:‬‬
‫;))(‪num = int.Parse(Console.ReadLine‬‬
‫;‪temp = num‬‬
‫;‪sum = 0‬‬
‫)‪while (temp > 0‬‬
‫{‬
‫;‪sum += temp % 10‬‬
‫;‪temp /= 10‬‬
‫}‬
‫;)‪if (sum % 9 == 0) Console.WriteLine(num‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .16‬برنامهای که اطالعات تعدادی کارمند از قبمل شماره کارمندی‪ ،‬سال استخدام‪ ،‬کد جنسجمت‪ : 1( ،‬زن‪،‬‬
‫‪ :3‬مرد) پایه استخدام (‪ )3-9‬و حقوق را خوانده‪ ،‬موارد زیر را در خروجی چاپ میکند‪.‬‬
‫ج‪ .‬ممانگمع حقوق به تفکمک زن و مرد‬ ‫ب‪ .‬تعداد کارکنان زن‬ ‫الف‪ .‬تعداد کارمندان مرد‬
‫هدف‬ ‫متغمر‬
‫شماره کارمندی‬ ‫‪id‬‬
‫سال استخدام‬ ‫‪date‬‬
‫کد جنسیت‬ ‫‪m_w‬‬
03 ‫ساختار تصمیم و حلقه تکرار‬

‫پایه استخدام‬ base


‫حقوق کارمند‬ pay
6 ‫تعداد کارمندان پایه‬ base6
‫تعداد کارمندان زن‬ t_w
using System;
namespace p16 ‫تعداد کارمندان مرد‬ t_m
{ ‫تعداد کارمندان‬ n
class Program
{ ‫حقوق کارمندان‬ pay
static void Main(string[] args)
{ ‫ مجموع حقوق کارمندان زن‬sumpay_w
int i,date,n,id, base1, m_w; ‫ مجموع حقوق کارمندان مرد‬sumpay_m
int base6 =0,t_w =0,t_m =0;
long pay, sumpay_m=0; ‫شمارنده‬ i
long sumpay_w =0;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
for (i = 1; i <= n; i++)
{
Console.Write("Enter a id:");
id = int.Parse(Console.ReadLine());
Console.Write("Enter a date:");
date = int.Parse(Console.ReadLine());
Console.Write("Enter a m_w(0|1):");
m_w = int.Parse(Console.ReadLine());
Console.Write("Enter base:");
base1 = int.Parse(Console.ReadLine());
Console.Write("Enter pay:");
pay = int.Parse(Console.ReadLine());
if (base1==6) base6++;
if (m_w == 0)
{
sumpay_w+=pay;
t_w++;
}
if (m_w==1)
{
sumpay_m+=pay;
t_m++;
}
}
Console.WriteLine("\t\t\t ****** result ******** \n Number of
base six is {0}" , base6);
Console.WriteLine("Number of woman is {0}",t_w);
if ( t_w>0 )
Console.WriteLine("Average(woman) pay is {0}",
1.0*sumpay_w/t_w);
if ( t_m>0 )
Console.WriteLine("Average(man) pay is {0}" ,
1.0*sumpay_m/t_m);
Console.ReadKey();
}
}
}
‫فصل دوم‬ ‫‪44‬‬

‫‪ .17‬فروشگاهی را در نظر بگمرید که درصدی از فروش به فروشنده اختصاص میدهد‪ .‬ممزان درصد بهصورت زیر‬
‫محاسبه میگردد‪:‬‬
‫کاالی درجه ‪ :3‬اگر میزان فروش کمتر یا مساوی ‪ 1111111‬باشد‪ 6 ،‬درصد به فروشنده تخصیص مییابد‪ .‬اگر میزان‬
‫فروش ‪ 1111111‬تا ‪ 0111111‬باشد ‪ %7‬وگرنه ‪ %11‬به فروشنده اختصاص مییابد‪.‬‬
‫کاالی درجه ‪ :2‬اگر میزان فروش کمتر از ‪ 111111‬باشد‪ %4 ،‬وگرنه ‪ %6‬به فروشنده اختصاص مییابد‪.‬‬
‫کاالی درجه ‪ :1‬در این نوع کاال‪ %41/0 ،‬میزان فروش به فروشنده تخصیص مییابد‪.‬‬
‫کاالی درجه ‪ :0‬در این نوع کاال‪ %5 ،‬میزان فروش به فروشنده اختصاص مییابد‪.‬‬
‫برنامهای که تعداد اقالم فروش را دریافت میکند‪ .‬سپس به تعداد خواندهشده درجه کاال‪ ،‬قممت واحد کاال‪ ،‬تعداد‬
‫فروش را میخواند و مجموع فروش و مبلغی را چاپ مینماید که باید به فروشنده تخصمص یابد‪.‬‬
‫هدف‬ ‫متغمر‬
‫تعداد ایالم فروش رفته‬ ‫‪n‬‬
‫درجه کاال‬ ‫‪c_of_i_s‬‬
‫ییمت هر واحد‬ ‫‪u_p_of_i‬‬
‫مقدار فروش‬ ‫‪a_s‬‬
‫مجموع فروش کاال درجه ‪1‬‬ ‫‪sum1‬‬
‫مجموع فروش کاال درجه‪0‬‬ ‫‪sum2‬‬
‫مجموع فروش کاال درجه‪3‬‬ ‫‪sum3‬‬
‫مجموع فروش کاال درجه‪4‬‬ ‫‪sum4‬‬
‫مبلغی که از فروش کاالی درجه ‪ 1‬به‬ ‫‪m_s1‬‬
‫فروشنده تخصیص مییابد‬
‫مبلغی که از فروش کاالی درجه ‪ 0‬به‬ ‫‪m_s2‬‬
‫فروشنده تخصیص مییابد‬
‫مبلغی که از فروش کاالی درجه ‪ 3‬به‬ ‫‪m_s3‬‬
‫فروشنده تخصیص مییابد‬
‫مبلغی که از فروش کاالی درجه ‪4‬‬ ‫‪m_s4‬‬
‫به فروشنده تخصیص مییابد‬
44 ‫ساختار تصمیم و حلقه تکرار‬

using System; ‫ شمارنده‬i


namespace p17
{
class Program
{
static void Main(string[] args)
{
int i,c_of_i_s,n;
long _p_of_i,a_s,sum1=0,sum2=0;
long sum3=0,sum4=0,m_s1,m_s2,m_s3,m_s4;
Console.Write("Enter n:");
n=int.Parse( Console.ReadLine());
for(i=1;i<=n;i++)
{
Console.Write("Enter a c_of_i_s:");
c_of_i_s=int.Parse( Console.ReadLine());
Console.Write("Enter a u_p_of_i:");
u_p_of_i=int.Parse( Console.ReadLine());
Console.Write("Enter a a_s:");
a_s=int.Parse( Console.ReadLine());
switch ( c_of_i_s)
{
case 1: sum1+=u_p_of_i* a_s ; break;
case 2: sum2+=u_p_of_i* a_s ; break;
case 3: sum3+=u_p_of_i* a_s ; break;
case 4: sum4+=u_p_of_i* a_s ; break;
}
}
if (sum1<=100000)
m_s1=(long )(sum1*0.06+0.5);
else if (sum1>100000 && sum1 <= 200000)
m_s1=(long )(100000*0.06+(sum1-100000)*0.07+0.5);
else
m_s1=(long)(100000*0.06+(200000-100000)*0.07+
(sum1- 200000)*0.1+0.5);
if (sum2<=100000)
m_s2=(long )(sum2*0.04+0.5);
else
m_s2=(long )(100000*0.04+(sum2-100000)*0.06+0.5);
m_s3=(long)(sum3*.412+0.5);
m_s4=(long)(sum4*0.05+0.5);
Console.WriteLine("\t\t\t ****** result ********");
Console.WriteLine("Sum1= {0}\t m_s1={1}", sum1, m_s1);
Console.WriteLine("Sum2= {0}\t m_s2={1}", sum2, m_s2);
Console.WriteLine("Sum3= {0}\t m_s3={1}", sum3, m_s3);
Console.WriteLine("Sum4= {0}\t m_s4={1}", sum4, m_s4);
Console.WriteLine("Total sum={0}",sum1+sum2+sum3+sum4);
Console.WriteLine( "Total sale={0}",m_s1+m_s2+m_s3+m_s4);
Console.ReadKey();
}
}
}
‫فصل دوم‬ ‫‪44‬‬

‫برنامهای که خروجی زیر را ایجاد میکند‪.‬‬ ‫‪.18‬‬

‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬


‫‪namespace p18‬‬
‫{‬ ‫)‬ ‫‪7‬‬‫‪..‬‬ ‫‪1‬‬‫(‬ ‫خارجی‬ ‫حلقه‬ ‫شمارنده‬ ‫‪i‬‬
‫‪class Program‬‬ ‫شمارنده حلقه داخلی (‪)i...1‬‬ ‫‪j‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int i, j‬‬
‫)‪for (i = 7; i >= 1; i--‬‬
‫{‬
‫;)(‪Console.WriteLine‬‬
‫)‪for (j = i; j >= 1; j--‬‬
‫"(‪Console.Write‬‬ ‫;)‪{0}",j‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫‪ .19‬بازی سنگ‪ ،‬کاغذ و قمچی دو بازیکع دارد‪ .‬بازیکع اول میتواند قمچی (مقدار ‪ ،)3‬سنگ (مقدار ‪ )2‬و یا کاغذ‬
‫(مقدار ‪ )1‬را انتخاب کند و بازیکع دوم هممعطور‪ .‬اگر انتخاب دو بازیکع یکسان باشد‪ ،‬مساویاند‪ .‬اگر متفاوت باشد‪،‬‬
‫یک نفر برنده است و برنده یک امتماز را کسب میکند‪ .‬برای مثال‪:‬‬
‫اگر بازیکن اول ییچی و بازیکن دوم کاغذ را انتخاب کند‪ ،‬بازیکن اول برنده است‪ .‬چون ییچی کاغذ را میبرد‪.‬‬
‫اگر بازیکن اول ییچی و بازیکن دوم سنگ را انتخاب کند‪ ،‬بازیکن دوم برنده است‪ .‬زیرا سنگ ییچی را میشکند‪.‬‬
‫اگر بازیکن اول سنگ و بازیکن دوم کاغذ را انتخاب کند‪ ،‬بازیکن دوم برنده است‪ .‬زیرا کاغذ دور سنگ میپیچد‪.‬‬
‫‪47‬‬ ‫ساختار تصمیم و حلقه تکرار‬

‫برنامهای که ایع مسابقه را ‪ 5‬دور بمع دو بازیکع انجام میدهد و برنده را نمایش میدهد (بازیکعها از انتخاب هم‬
‫دیگر خبر ندارند)‪.‬‬
‫;‪using System‬‬
‫‪namespace p19‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int i, player1, player2, score1 = 0, score2 = 0‬‬
‫)‪for (i = 1; i <= 5; i++‬‬
‫{‬
‫‪Console.Write("Player 1 Please Eneter 1:(scissors),‬‬
‫;)"‪2:(stone) , 3:(paper):‬‬
‫;))(‪player1 = Convert.ToInt32(Console.ReadLine‬‬
‫‪Console.Write("Player 2 Please Eneter 1:(scissors),‬‬
‫;)"‪2:(stone) , 3:(paper):‬‬
‫; ;))(‪player2 = Convert.ToInt32(Console.ReadLine‬‬
‫‪if ((player1 == 1 && player2 == 3) || (player1 == 3‬‬
‫))‪&& player2 == 2) || (player1 == 2 && player2 == 1‬‬
‫;‪score1++‬‬
‫|| )‪else if ((player2 == 1 && player1 == 3‬‬
‫‪(player2 == 3 && player1 == 2) || (player2 == 2‬‬
‫))‪&& player1 == 1‬‬
‫;‪score2++‬‬
‫}‬
‫;)‪Console.WriteLine("\nScore for player1 is:{0}", score1‬‬
‫;)‪Console.Write("Score for player2 is:{0}", score2‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .21‬برنامهای که تمام اعداد بمع ‪ 3111‬تا ‪ 3311‬که بر ‪ 9‬بخشپذیرند را نمایش میدهد (عددی بر ‪ 9‬بخشپذیر‬
‫است که مجموع ارقام آن بر ‪ 9‬قابل قسمت باشد)‪.‬‬
‫این برنامه ابتدا متغیرهای موردنیاز را تعریف کرده‪ ،‬سپس پیام ‪ Result is‬را چاپ میکند‪ .‬در ادامه با اساتفاده یاک حلقاه‬
‫‪ for‬از ‪ 1111‬تا ‪ 1111‬شمارش میکند و در داخز این حلقه‪ ،‬مقدار ‪ i‬را در ‪ n‬یرار میدهاد ( مقادار ‪ i‬از دسات نارود)‪ .‬ساپس‬
‫اریام ‪ n‬را جدا کرده‪ ،‬با یک دیگر جمع مینماید (حلقه ‪ .)while‬در پایاان حلقاه ‪ ،while‬اگار مقادار ‪ sum‬بار ‪ 9‬بخاشپاذیر‬
‫باشد‪( i ،‬شمارنده عدد) را نمایش میدهد‪.‬‬
‫هدف‬ ‫متغمر‬
‫شمارنده از ‪ 1111‬تا ‪1111‬‬ ‫‪i‬‬
‫عدد مربوط‬ ‫‪n‬‬
‫فصل دوم‬ 40

using System; ‫مجموع اریام‬ sum


namespace p20
{
class Program
{
static void Main(string[] args)
{
int i, n, sum;
Console.WriteLine("Result is:");
for (i = 1000; i <= 1100; i++)
{
sum = 0;
n = i;
while (n > 0)
{
sum += (n % 10);
n /= 10;
}
if (sum % 9 == 0)
Console.Write("{0} ", i);
}
Console.ReadKey();
}
}
}

‫ میگوید چه رنگی را انتخاب‬،‫ از ورودی خوانده‬،‫ برنامهای که کاراکتری را که نشاندهنده رنگی میباشد‬.21
.‫( را انتخاب کنمد‬Red) ‫ برنامه به شما میگوید دوست دارید رنگ قرمز‬،‫ را وارد کردید‬R ‫‘ یا‬r’ ‫ مثالً اگر‬.‫کردید‬
.‫ را وارد کنمد‬E ‫ یا‬e ‫برای خروج کاربر باید‬
using System; ‫هدف‬ ‫متغمر‬
namespace p21
{ ‫ورودی‬ ‫کاراکتر‬ ch
class Program ‫ شرط تکرار حلقه‬loop
{
static void Main(string[] args)
{
char ch;
int loop = 1;
while (loop == 1)
{
Console.Write("Enter a char:");
ch = char.Parse(Console.ReadLine());
switch (ch)
{
case 'w':
case 'W':
Console.WriteLine("You love White color");
break;
case 'r':
case 'R':
Console.WriteLine("You love Red color");
break;
case 'y':
44 ‫ساختار تصمیم و حلقه تکرار‬

case 'Y':
Console.WriteLine("You love Yellow color");
break;
case 'b':
case 'B':
Console.WriteLine("You love Blue color");
break;
case 'g':
case 'G':
Console.WriteLine("You love green color");
break;
case 'e':
case 'E':
loop = 0;
break;
default:
Console.WriteLine("No color choosen");
break;
}
}
}
}
}

‫ آنگاه عدد بزرگتر را به روش تفریق بر عدد کوچکتر تقسمم‬،‫ برنامهای که دو عدد مثبت را از ورودی خوانده‬.22
.‫میکند‬
‫هدف‬ ‫متغمر‬
using System;
namespace p22 )‫تقسیم‬ ‫(حاصز‬ ‫تعداد تفریقها‬ i
{ x
class Program
‫عدد اول‬
{ ‫عدد دوم‬ y
static void Main(string[] args)
{ ‫عدد بزرگتر‬ temp
int i = 0, x, y, temp, r; ‫عدد کوچکتر‬ r
Console.Write("Enter x:");
x = int.Parse(Console.ReadLine());
Console.Write("Enter y:");
y = int.Parse(Console.ReadLine());
if (x > y)
{
temp = x;
r = y;
}
else
{
temp = y;
r = x;
‫فصل دوم‬ 44

}
while (temp >= r)
{
temp -= r;
i++;
}
if (x > y)
Console.WriteLine("{0} / {1} = {2} ", x, y, i);
else
Console.WriteLine("{0} / {1} = {2} ", y, x, i);
Console.ReadKey();
}
}
}

𝟏 𝟏 𝟏 𝟏
+ + +⋯+ :‫ را میخواند و حاصل عبارت زیر را محاسبه میکند‬n ‫ برنامهای که‬.23
𝟏! 𝟐! 𝟑! 𝒏!
using System; ‫هدف‬ ‫متغمر‬
namespace p23
{ i ‫فاکتوریز‬ fact
class Program ‫ عدد خواندهشده‬n
{
static void Main(string[] args) n ‫ تا‬1 ‫ شماره‬i
{
long fact = 1; ‫ نتیجه مجموع‬sum
int n, i = 1 ;
float sum = 0;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
while(i <= n)
{
sum += (float) 1 / fact;
fact *= ++i;
}
Console.WriteLine ("Sum is {0}", sum);
Console.ReadKey();
}
}
}

:‫ برنامهای که با استفاده از حلقه تودرتو خروجی زیر را ایجاد میکند‬.24


using System; ‫هدف‬ ‫متغمر‬
namespace p24
{ 4‫تا‬1‫شمارنده حلقه خارجی از‬ i
class Program 6 ‫تا‬1‫شمارنده حلقه داخلی از‬ j
{
static void Main(string[] args)
{
int i, j;
for (i = 1; i <= 4; i++)
{
43 ‫ساختار تصمیم و حلقه تکرار‬

for (j = 1; j <= 6; j++)


Console.Write("$");
Console.WriteLine();
}
Console.ReadKey();
}
}
}

:‫ برنامهای که با استفاده از حلقه تودرتو خروجی زیر را چاپ میکند‬.25


using System; ‫هدف‬ ‫متغمر‬
namespace p25
{ 8 ‫تا‬ 1‫از‬ ‫ی‬ ‫خارج‬ ‫حلقه‬ ‫ه‬‫رند‬ ‫شما‬ i
class Program 9- i ‫ تا‬1 ‫ شمارنده حلقه داخلی‬j
{
static void Main(string[] args)
{
int i, j;
for (i = 1; i <= 8; i++)
{
for (j = 9 - i; j >= 1; j--)
Console.Write("{0} ", i);
Console.WriteLine();
}
Console.ReadKey();
}
}
}

:‫برنامهای که با استفاده از حلقه تودرتو خروجی زیر را چاپ میکند‬ .26


using System; ‫هدف‬ ‫متغمر‬
namespace p26
{ 8 ‫ تا‬1 ‫شمارنده حلقه خارجی از‬ i
class Program
{ 8 ‫ تا‬1 ‫شمارنده حلقه داخلی از‬ j
static void Main(string[] args)
{
int i, j;
for (i = 1; i <= 8; i++)
{
for (j = 1; j <= 8; j++)
Console.Write("{0} ", i);
Console.Write("\n");
}
‫فصل دوم‬ ‫‪43‬‬

‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫برنامهای که با استفاده از حلقه تودرتو خروجی زیر را نمایش میدهد‪:‬‬ ‫‪.27‬‬


‫;‪using System‬‬
‫‪namespace p27‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int i, j‬‬
‫)‪for (i = 1; i <= 8; i++‬‬
‫{‬
‫)‪for (j = 1; j <= i; j++‬‬
‫}‪Console.Write("{0‬‬ ‫;)‪", i‬‬
‫;)"‪Console.Write("\n‬‬
‫}‬

‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .28‬برنامهای که القاب افراد را از ورودی بهصورت یک کاراکتر خوانده‪ ،‬سپس لقب آن را بهصورت کامل در‬
‫خروجی چاپ میکند ( بر اساس جدول زیر)‪:‬‬
‫عالمت ورودی‬ ‫لقب‬ ‫لقب التمع‬
‫‪b، b‬‬ ‫بانو‬ ‫‪lady‬‬
‫‪d، d‬‬ ‫دوشیزه‬ ‫‪miss‬‬
‫‪p، p‬‬ ‫پروفسور‬ ‫‪professor‬‬
‫‪a، a‬‬ ‫آیا‬ ‫‪mr‬‬
43 ‫ساختار تصمیم و حلقه تکرار‬

using System; j، j ‫جناب‬ excellency


namespace p28
{ m، m ‫خانم‬ wife
class Program
{
static void Main(string[] args)
{
char ch;
int loop = 1;
while (loop==1)
{
Console.Write("Enter Input character:");
ch= char.Parse(Console.ReadLine());
switch (ch)
{
case 'b':
case 'B':
Console.WriteLine("You selected Lady");
break;
case 'd':
case 'D':
Console.WriteLine("You selected Miss");
break;
case 'p':
case 'P':
Console.WriteLine("You selected Professor");
break;
case 'a':
case 'A':
Console.WriteLine("You selected Mr");
break;
case 'j':
case 'J':
Console.WriteLine("You selected Excellency");
break;
case 'm':
case 'M':
Console.WriteLine("You selected Wife");
break;
default:
Console.WriteLine("End of program");
loop = 0;
break;
}
}
Console.ReadKey();
}
}
}

‫ پیغام مربوطه (لقب) را‬switch ‫ کاراکتر مربوط را از کاربر دریافت میکند و با استفاده از دستور‬،‫این برنامه‬
‫ هیچیک از کاراکترهای جدول برنامه را‬،‫ دریافت اطالعات در یک حلقه یرار دارد و اگر کاربر‬.‫نمایش میدهد‬
.‫ برنامه خاتمه مییابد‬،‫وارد نکند‬
‫فصل دوم‬ ‫‪44‬‬

‫‪ .29‬قممت اتومبمل در انتهای هرسال ‪ %21‬کاهش مییابد (استهالک اتومبمل ‪ %21‬است)‪ .‬برنامهای که قممت یک‬
‫اتومبمل را از ورودی خوانده‪ ،‬تا ده سال آینده قممت آن را در پایان هرسال نمایش میدهد‪.‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬
‫‪namespace p29‬‬
‫{‬ ‫ییمت اتومبیز‬ ‫‪cost‬‬
‫‪class Program‬‬
‫{‬ ‫‪ i‬شمارنده از ‪ 1‬تا ‪11‬‬
‫)‪static void Main(string[] args‬‬
‫{‬

‫;‪long cost‬‬
‫;‪int i‬‬
‫;)"‪Console.Write("Enter cost:‬‬
‫;))(‪cost = long.Parse(Console.ReadLine‬‬
‫)‪for(i = 1; i<= 10; i++‬‬
‫{‬
‫;;‪cost -= cost * 20 /100‬‬
‫}‪Console.WriteLine("Cost for year {0‬‬ ‫;)‪{1}",i, cost‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫این برنامه‪ ،‬متغیرها را تعریف میکند و با یک پیام ییمت فعلی اتومبیز را دریافت مینماید‪ .‬در ادامه با حلقه‬
‫‪ ،for‬ییمت اتومبیز را برای سالهای بعد محاسبه کرده‪ ،‬نمایش میدهد‪.‬‬

‫‪ .31‬برنامهای که عددی را از ورودی خوانده‪ ،‬تشخمص میدهد که ایع عدد جزء سری فمبوناچی است یا خمر؟‬
‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬
‫‪namespace p30‬‬
‫{‬ ‫عدد‬ ‫‪n‬‬
‫‪class Program‬‬
‫{‬ ‫اولین عدد سری فیبوناچی‬ ‫‪f1‬‬
‫)‪static void Main(string[] args‬‬ ‫‪ f2‬دومین عدد سری فیبوناچی‬
‫{‬
‫;‪int n, f1 = 0, f2 = 1, f3 = 1‬‬ ‫‪ f3‬اعداد بعدی سری فیبوناچی‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬
‫)‪while (f3 < n‬‬
‫{‬
‫;‪f3 = f1 + f2‬‬
‫;‪f1 = f2‬‬
‫;‪f2 = f3‬‬
‫}‬
‫)‪if (f3 == n‬‬
‫;)" ‪Console.WriteLine("Yes‬‬
‫‪44‬‬ ‫ساختار تصمیم و حلقه تکرار‬

‫‪else‬‬
‫;)" ‪Console.WriteLine("No‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .31‬برنامهای که تمام حالتهایی که یک اسکناس ‪ 3111‬ریالی را با ‪ 311 ،211 ،511‬و ‪ 51‬ریالی میتوان خرد نمود‬
‫مینویسد‪.‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬
‫‪namespace p31‬‬
‫{‬ ‫شمارنده حلقه خارجی (تعداد ‪ 511‬ریالی)‬ ‫‪i‬‬
‫‪class Program‬‬
‫{‬ ‫‪ j‬شمارنده تعداد ‪ 011‬ریالی‬
‫][‪static void Main(string‬‬ ‫‪ k‬شمارنده تعداد ‪111‬ریالی‬
‫)‪args‬‬
‫{‬ ‫‪ m‬شمارنده تعداد ‪ 51‬ریالی‬
‫;‪int i, j, k, m, sum‬‬
‫‪Console.WriteLine("Result‬‬ ‫‪ sum‬پولهای تولیدشده با تعداد اسکناسها در هر تکرار‬
‫;)"‪is:‬‬
‫)‪for (i = 0; i <= 2; i++‬‬
‫)‪for (j = 0; j <= 5; j++‬‬
‫)‪for (k = 0; k <= 10; k++‬‬
‫)‪for (m = 0; m <= 20; m++‬‬
‫{‬
‫;‪sum = m * 50+k * 100 + j * 200 + i * 500‬‬
‫)‪if (sum == 1000‬‬
‫‪Console.Write("({0}, {1}, {2},‬‬
‫;) ‪{3})\t",i , j , k , m‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .32‬برای رانندگان ممزان مصرف سوخت خودرویشان از اهممت ویژهای برخوردار است‪ .‬رانندهای چند بار مقدار‬
‫بنزیع باک خودروی خود را به همراه مقدار مسافتی که رانندگی کرده‪ ،‬ثبت نموده است‪ .‬برنامهای که مسافت را به‬
‫مایل و مصرف بنزیع را به گالع از کاربر میگمرد و نسبت مایل به گالع را برای هر بار محاسبه میکند و نمایش‬
‫میدهد‪ .‬برنامه پس از پردازش همه اطالعات نسبت مایل به گالع کل را محاسبه نموده‪ ،‬چاپ میکند‪ .‬برای خروج از‬
‫برنامه بهجای گالع مقدار ‪ 1‬را وارد کنمد‪.‬‬
‫فصل دوم‬ 44

‫هدف‬ ‫متغمر‬
‫مسافت به مایز‬ mile
‫مصرف به گالن‬ gallon
‫میانگین مصرف کز‬ average
‫کز مسافت طی شده‬ summiles
using System;
namespace p32 )‫ نسبت مصرف (مایز به گالن‬rate
{ ‫ کز مصرف بنزین به گالن‬sumgallons
class Program
{
static void Main(string[] args)
{
float gallon, mile;
float rate, average;
float sumGallons, sumMiles;
sumMiles = 0;
sumGallons = 0;
while (1==1)
{
Console.Write("Enter the gallons used (-1 to end):");
gallon = int.Parse(Console.ReadLine());
if (gallon == -1) break;
Console.Write("Enter the miles driven:");
mile = int.Parse(Console.ReadLine());;
rate = mile / gallon;
Console.WriteLine("The miles / gallons for this tank
was {0}",rate);
sumGallons += gallon;
sumMiles += mile;
}
average = sumMiles / sumGallons;
Console.WriteLine("The overall average miles / gallons
was {0}", average);
Console.ReadKey();
}
}
}

:‫ خروجی زیر را چاپ میکند‬،‫ را از ورودی خوانده‬N ‫برنامهای که عدد‬ .33


47 ‫ساختار تصمیم و حلقه تکرار‬

using System;
namespace p33
{
class Program
{
static void Main(string[] args)
{
int i, n;
Console.Write("Enter n:");
n = Convert.ToInt32(Console.ReadLine());
Console.Write("\nI\t10*I\t100*I\t1000*I");
for (i = 1; i <= n; i++)
Console.Write("\n{0}\t{1}\t{2}\t{3}",i,i*10,i*100,i* 1000);
Console.ReadKey();
}
}
}
‫ فرض کنمد که اولمع عدد صحمحی که خوانده‬.‫ برنامهای که دنبالهای از اعداد صحمح را باهم جمع میکند‬.34
:‫ ورودی بهصورت زیر میباشد‬،‫ بهعنوانمثال‬.‫ مشخص میکند‬،‫ تعداد اعدادی را که باید وارد شوند‬،‫میشود‬
6 100 150 170 200 270 800
.‫ را نمایش میدهد‬811 ‫ و‬211 ،211 ،311 ،351 ،311 ‫برنامه ممانگمع و مجموع اعداد‬
using System; ‫هدف‬ ‫متغمر‬
namespace p34
{ ‫تعداد اعداد‬ n
class Program
{ ‫عددی که هر بار خوانده میشود‬ a
static void Main(string[] args) ‫مجموع اعداد‬ sum
{
int i, n, a; ‫شمارنده‬ i
float sum = 0;
Console.Write("Enter several number:");
n = int.Parse(Console.ReadLine());
for (i = 1; i <= n; i++)
{
a = int.Parse(Console.ReadLine());
sum += a;
}
Console.WriteLine("Sum is{0} ",sum);
Console.Write("\nAverage is {0} ", sum / n);
Console.ReadKey();
}
}
}
‫فصل دوم‬ 40

‫ را از ورودی‬n( ‫ جمله محاسبه میکند و نمایش میدهد‬n ‫ (سری زیر) را حداکثر تا‬ ‫برنامهای که مقدار سری‬ .35
𝟒 𝟒 𝟒 𝟒
𝝅= 𝟒−𝟑+𝟓−𝟕+𝟗− :)‫میخواند‬
𝟒
𝟏𝟏
+⋯
‫ جمله نمایش‬n ،... ،‫ سه جمله‬،‫ دو جمله‬،‫ را با تقریب یک جمله‬ ‫برنامه جدولی چاپ میکند که حاصل مقدار‬
.‫میدهد‬
using System;
using System.Collections.Generic;
namespace p35
{
class Program
{
static void Main(string[] args)
{
int i, n, k, sign = -1;
float p = 0;
Console.Write("Enter n:");
n= Convert.ToInt32(Console.ReadLine());;
p = 4;
k = 3;
Console.Write(" i\tPI");
Console.Write("\n===\t========");
for (i = 1; i < n; i++)
{
p += sign * (float)4 / k;
k += 2;
sign = -sign;
Console.Write("\n{0}\t{1}", i, p);
}
Console.ReadKey();
}
}
}
44 ‫ساختار تصمیم و حلقه تکرار‬

‫ برنامهای که سه ضلع (عدد صحمح غمر صفر) را میخواند و تشخمص میدهد آیا سه ضلع اضالع یک مثلث‬.36
( .‫ سه ضلع زمانی تشکمل مثلث را میدهند که مجموع هر دو ضلع بمشتر از ضلع سوم باشد‬:‫ )توضمح‬.‫هستند یا خمر‬
using System; ‫هدف‬ ‫متغمر‬
namespace p36
{ ‫اول‬ ‫ضلع‬ a
class Program ‫ ضلع دوم‬b
{
static void Main(string[] args) ‫ ضلع سوم‬c
{
int a, b, c;
Console.Write("Enter a:");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter b:");
b = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter c:");
c = Convert.ToInt32(Console.ReadLine());
if (a <= (b + c) && c <= (b + a) && b <= (a + c))
Console.Write("Yes");
else
Console.Write("No");
Console.ReadKey();
}
}
}

‫ تشخمص دهد ایع سه عدد تشکمل مثلث قائمالزاویه را میدهند یا‬،‫ برنامهای که سه عدد صحمح غمر صفر را گرفته‬.37
.‫ اضالع دیگر باشد مثلث قائمالزاویه است‬2 ‫ یکی از اضالع برابر مجموع توان‬2 ‫خمر؟ زمانی که توان‬
(.‫ هدف از ایع برنامه کاربرد عملگر || (یا منطقی) میباشد‬:‫) توضمح‬
using System; ‫هدف‬ ‫متغمر‬
namespace p37
{ ‫ضلع اول‬ a
class Program
{ ‫دوم‬ ‫ ضلع‬b
static void Main(string[] args) ‫ ضلع سوم‬c
{
int a, b, c;
Console.Write("Enter a:");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter b:");
b = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter c:");
c = Convert.ToInt32(Console.ReadLine());
if (a * a == (b * b + c * c) || c * c ==
(b * b + a * a) || b * b == (a * a + c * c))
Console.Write("Yes");
else
Console.Write("No");
Console.ReadKey();
}
}
}
‫فصل دوم‬ ‫‪44‬‬

‫‪ .38‬نمره دانشجویان یک کالس بهصورت زیر محاسبه میشود‪:‬‬


‫در طولترم دو کوئمز برگزار میگردد که هرکدام ‪ 31‬نمره دارند‪.‬‬
‫امتحان پایانترم ‪ 51‬درصد نمره کل‪ ،‬امتحان ممانترم ‪ 25‬درصد نمره کل و ‪ 25‬درصد دیگر مربوط به کوئمزها‬
‫است‪.‬‬
‫برنامهای که نمرات کوئمز ممانترم و پایانترم یک دانشجو را گرفته‪ ،‬نمره کل او را محاسبه میکند و بجهصجورت‬
‫حروفی نمایش میدهد (برای نمرات بزرگتر یا مساوی ‪ ،91‬حروف ‪ ،A‬نمرات بزرگتر یا مسجاوی ‪ 81‬و کجمتجر از ‪91‬‬
‫حرف ‪ ،B‬نمرات بزرگتر یا مساوی ‪ 11‬و کمتر از ‪ 81‬حرف ‪ ،C‬نمرات بزرگتر یا مساوی ‪ 01‬و کمتر از ‪ ،01‬حجرف ‪D‬‬
‫و نمرات زیر ‪ 01‬حرف ‪ E‬را نمایش دهد)‪ ).‬توضمح‪ :‬در ایع برنامه‪ ،‬ابتدا نمرات کوئمز را به ‪ 311‬تبدیل میکنمم‪ .‬یعنجی‪،‬‬
‫نمره کوئمز اول ‪ +‬نمره کوئمز دوم را در ‪ 5‬ضرب میکنمم‪ .‬سپس برای محاسبه نمره کل‪ ،‬نمره بهدستآمده از کوئمز را‬
‫در ‪ 1225‬ضرب کرده‪ ،‬با ‪ 1225‬نمره ممانترم جمع نمود‪ .‬حاصل را با ‪ 125‬پایانترم جمع مینمایمم تا نمره کل به ‪ 311‬به‬
‫دست آید‪(.‬‬
‫هدف‬ ‫متغمر‬
‫;‪using System‬‬ ‫نمره کوئیز اول‬ ‫‪quiz1‬‬
‫‪namespace p38‬‬
‫{‬ ‫نمره کوئیز دوم‬ ‫‪quiz2‬‬
‫‪class Program‬‬
‫{‬ ‫نمره میانترم‬ ‫‪midterm‬‬
‫)‪static void Main(string[] args‬‬ ‫نمره پایانترم‬ ‫‪final‬‬
‫{‬
‫;‪float quiz1‬‬ ‫نمره کز به عدد‬ ‫‪grade‬‬
‫;‪float quiz2,midTerm,final, grade‬‬
‫;)"‪Console.Write("Enter grade for quiz one:‬‬
‫;))(‪quiz1 = Convert.ToSingle(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter grade for quiz two:‬‬
‫;;))(‪quiz2= Convert.ToSingle(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter grade for mid term:‬‬
‫;))(‪midTerm = Convert.ToSingle(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter grade for final:‬‬
‫;))(‪final = Convert.ToSingle(Console.ReadLine‬‬
‫* ‪grade = (quiz1 + quiz2) * 5 * 0.25f + midTerm‬‬
‫;‪0.25f + final * 0.5f‬‬
‫)‪if (grade >= 90‬‬
‫;)"‪Console.Write(" Grade is A‬‬
‫)‪else if (grade >= 80‬‬
‫;)"‪Console.Write(" Grade is B‬‬
‫)‪else if (grade >= 70‬‬
‫;)"‪Console.Write(" Grade is C‬‬
‫)‪else if (grade >= 60‬‬
‫;)"‪Console.Write(" Grade is D‬‬
‫‪else‬‬
‫;)"‪Console.Write(" Grade is E‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
43 ‫ساختار تصمیم و حلقه تکرار‬

‫ برنامهای که تعممع میکند در یک فروشگاه آیا ممزان خرید مشتری از سقف اعتبار حسابش بمشتر شده است یا‬.39
:‫ برای هر مشتری اطالعات زیر موجود میباشد‬.‫خمر‬
‫ تراز اول ماه‬.2 )‫ شمارهحساب (عدد صحمح‬.3
.‫ مجموع همه اقالمی که در یک ماه توسط ایع مشتری خریداریشده است‬.1
.‫ مجموع همه اعتباراتی که در یک ماه بهحساب مشتری واردشده است‬.0
‫ سقف اعتبار مجاز‬.5
‫ تراز اولمه) را محاسبه و تعممع‬+ ‫ را بگمرد و تراز جدید (= اعتبارات – هزینهها‬5 ‫ تا‬3 ‫ایع برنامه باید هر یک از اطالعات‬
‫ سقف اعتبارات و تراز مشتری را‬،‫ برنامه باید شمارهحساب‬.‫کند که آیا تراز جدید از سقف اعتباراتشان بمشتر شده است‬
.‫' (از سقف اعتبارات تجاوز کرده است) چاپ کند‬Credit Limited Exceeded’ ‫به همراه پمغام‬
‫هدف‬ ‫متغمر‬
‫شمارهحساب مشتری‬ Account
‫تراز اول ماه‬ beginningBalance
‫اعتبارت مصرفشده در ماه‬ totalCharge
using System;
namespace p39 ‫ مجموع اعتبارات یک ماه‬totalCredits
{
class Program ‫ سقف اعتبار مجاز‬creditLimit
{
static void Main(string[] args)
{
int account;
float totalCharge;
float beginingBalance;
float totalCredits;
float creditLimit;
while (1==1)
{
Console.Write("Enter account number(-1 to end):");
account = int.Parse (Console.ReadLine());
if (account == -1) break;
Console.Write("Enter biginning balance:");
beginingBalance = float.Parse (Console.ReadLine());
Console.Write("Enter total charges:");
totalCharge= float.Parse (Console.ReadLine());
Console.Write("Enter total credits:");
totalCredits= float.Parse (Console.ReadLine());
Console.Write("Enter credit limited:");
creditLimit= float.Parse (Console.ReadLine());
if ((beginingBalance + totalCredits - totalCharge)
> creditLimit)
{
Console.Write("\nACoount: {0}", account);
Console.Write("\nCredit limit: {0}",
creditLimit);
Console.Write("\nBalance:{0}",(beginingBalance
+ totalCredits - totalCharge));
‫فصل دوم‬ 43

Console.Write("\n Credit Limited Exceesded.");


}
Console.WriteLine();
}
Console.ReadKey();
}
}
}

:‫ مجموع عبارت را نمز نمایش میدهد‬،‫ عالوه بر نمایش عبارت زیر‬،‫ را خوانده‬n ‫برنامهای که‬ .41
1 + 2 + 3 + … + n = ‫مجموع‬
using System;
namespace p40
{
class Program
{
static void Main(string[] args)
{
int n;
int i = 1, sum = 0;
Console.Write("Enter n:");
n=int.Parse(Console.ReadLine());
for (i = 1; i <= n; i++)
{
if (i < n) Console.Write("{0} + ", i);
else Console.Write("{0} = ", i);
sum += i;
}
Console.Write(sum);
Console.ReadKey();
}
}
}
43 ‫ساختار تصمیم و حلقه تکرار‬

:‫ حاصل عبارت را نمز نمایش میدهد‬،‫ عالوه بر نمایش عبارت زیر‬،‫ را خوانده‬n ‫برنامهای که‬ .41
1 - 2 + 3 – 4 + … ± n = ‫حاصل عبارت‬
‫هدف‬ ‫متغمر‬
‫عدد ورودی‬ n
using System; n ‫ تا‬1 ‫ شمارنده از‬i
namespace p41 ‫ حاصز مجموع سری‬sum
{
class Program ‫ عالمت عدد یکدرمیان مثبت و منفی میشود‬sign
{
static void Main(string[] args)
{
int n;
int i = 1, sum = 0, sign =1;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
for (i = 1; i <= n; i++)
{
if (sign == 1 && i != n)
Console.Write("{0} + ", i);
else if (i != n) Console.Write("{0} - ", i);
else Console.Write("{0} = ", i);
sum += i * sign ;
sign = -sign;
}
Console.Write(sum);
Console.ReadKey();
}
}
}
:‫ حاصل عبارت را نمز نمایش میدهد‬،‫ عالوه بر نمایش عبارت زیر‬،‫ را خوانده‬n ‫ برنامهای که‬.42
-1 + 2 - 3 + 4 + … ± n = ‫حاصل عبارت‬
using System; ‫هدف‬ ‫متغمر‬
namespace p42
{ ‫ عدد خواندهشده‬n
class Program n ‫ تا‬1 ‫ شمارنده از‬i
{
static void Main(string[] args) )‫ مجموع سری (حاصز عبارت‬sum
{
int n; ‫ عالمت که یکدرمیاان منفای و مثبات‬sign
int i = 1, sum = 0,sign = -1; ‫میشود که ابتدا منفی است‬
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
for (i = 1; i <= n; i++)
{
if (sign == 1 ) Console.Write(" + {0} ", i);
else if(sign == -1 ) Console.Write(" - {0}", i);
else Console.Write("{0} ", i);
sum += i * sign;
sign = -sign;
}
Console.Write(" = {0}", sum);
Console.ReadKey();
}
}
}
‫فصل دوم‬ ‫‪34‬‬

‫برنامهای که ‪ n‬را خوانده‪ ،‬عالوه بر نمایش عبارت زیر‪ ،‬حاصل عبارت را نمز نمایش میدهد‪:‬‬ ‫‪.43‬‬
‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫𝑛‬
‫‪1−‬‬ ‫‪+‬‬ ‫‪−‬‬ ‫‪+ …±‬‬ ‫حاصز عبارت =‬
‫!‪2‬‬ ‫!‪3‬‬ ‫!‪4‬‬ ‫!𝑛‬
‫هدف‬ ‫متغمر‬
‫;‪using System‬‬ ‫عدد خواندهشده‬ ‫‪n‬‬
‫‪namespace p43‬‬ ‫شمارنده از ‪ 1‬تا ‪ n‬تغییر میکند‬ ‫‪i‬‬
‫{‬
‫‪class Program‬‬ ‫مجموع سری‬ ‫‪sum‬‬
‫{‬
‫)‪static void Main(string[] args‬‬ ‫عالمت یکدرمیان منفی و مثبت‬ ‫‪sign‬‬
‫{‬ ‫‪fact‬‬
‫;‪int n, i = 1, sign = 1‬‬
‫فاکتوریااز ‪( i‬باارای محاساابه مخاارج‬
‫;‪float sum = 0‬‬ ‫سری محاسبه به کار میرود)‪.‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬
‫;‪long fact = 1‬‬
‫)‪for (i = 1; i <= n; i++‬‬
‫{‬
‫;‪fact = fact * i‬‬
‫;)‪if (sign == 1) Console.Write(" + {0} / {0}!", i‬‬
‫;) ‪else Console.Write(" - {0} / {0}!", i‬‬
‫;‪sum += (float) i * sign / fact‬‬
‫;‪sign = -sign‬‬
‫}‬
‫;)‪Console.Write(" = {0}", sum‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫برنامهای که ‪ x‬و‪ n‬را خوانده‪ ،‬عالوه بر نمایش عبارت زیر‪ ،‬حاصل عبارت را نمز نمایش میدهد‪:‬‬ ‫‪.44‬‬
‫𝟐𝒙‬ ‫𝟑𝒙‬ ‫𝟒𝒙‬ ‫𝒏𝒙‬
‫‪𝒙−‬‬ ‫‪+‬‬ ‫‪−‬‬ ‫‪+ …±‬‬ ‫حاصل عبارت =‬
‫!𝟐‬ ‫!𝟑‬ ‫!𝟒‬ ‫!𝒏‬
‫هدف‬ ‫متغمر‬
‫عدد ورودی (تعداد جمالت سری)‬ ‫‪n‬‬
‫شمارنده بین ‪ 1‬تا ‪n‬‬ ‫‪i‬‬
‫مجموع سری‬ ‫‪sum‬‬
‫عالمت عدد یکدرمیان منفی و مثبت میشود‬ ‫‪sign‬‬
‫عدد ورودی‬ ‫‪x‬‬
‫;‪using System‬‬
‫‪namespace p44‬‬ ‫‪i‬‬
‫در هر بار اجرای حلقه )‪ (x‬میباشد‪.‬‬ ‫‪pow‬‬
‫{‬
‫‪class Program‬‬ ‫در هر بار اجرای حلقه فاکتوریز ‪ i‬را نگهداری میکند‪.‬‬ ‫‪fact‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
34 ‫ساختار تصمیم و حلقه تکرار‬

{
int n, i = 1, sign = 1, x;
float sum = 0;
Console.Write("Enter x:");
x = int.Parse(Console.ReadLine());
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
long fact = 1, pow = 1;
for (i = 1; i <= n; i++)
{
fact = fact * i;
pow *= x;
if (sign == 1)
Console.Write(" + {0} ^ {1} / {1}!", x, i);
else
Console.Write(" - {0} ^ {1} / {1}!", x, i);
sum += (float)i * sign*pow / fact;
sign = -sign;
}
Console.Write(" = {0}", sum);
Console.ReadKey();
}
}
}

:‫ حاصل عبارت را نمز نمایش میدهد‬،‫ عالوه بر نمایش عبارت زیر‬،‫ را خوانده‬n ‫ و‬x ‫برنامهای که‬ .45
𝒙𝟐 𝒙𝟒 𝒙𝟔 𝒙𝒏
− + − …± = ‫حاصل عبارت‬
𝟐! 𝟒! 𝟔! 𝒏!
‫هدف‬ ‫متغمر‬
‫عدد ورودی‬ n
‫عدد ورودی‬ x
using System;
namespace p45 0 ‫ با گام افزایشی‬n ‫ تا‬0 ‫شمارنده از‬ i
{
class Program ‫مجموع سری‬ sum
{ sign
static void Main(string[] args)
‫عالمت یکی در میان منفی و مثبت‬
{ ‫ را نگهداری میکند‬i ‫ به توان‬x pow
int n, i = 1, sign = 1, x;
float sum = 0; ‫ را نگهداری میکند‬i ‫فاکتوریز‬ fact
Console.Write("Enter x:");
x = int.Parse(Console.ReadLine());
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
long fact = 1, pow = 1;
for (i = 2; i <= n; i+=2)
{
fact = fact * i;
pow *= x;
if (sign == 1)
Console.Write(" + {0} ^ {1} / {1}!", x, i);
else
Console.Write(" - {0} ^ {1} / {1}!", x, i);
‫فصل دوم‬ 34

sum += (float)i * sign * pow / fact;


sign = -sign;
}
Console.Write(" = {0}", sum);
Console.ReadKey();
}
}
}

:‫ اعمال زیر را انجام دهد‬،‫ یک کاراکتر و سپس عدد دیگری را خوانده‬،‫ برنامهای که یک عدد‬.46
.‫ حاصل جمع دو عدد را نمایش دهد‬،‫“ باشد‬+” ‫“ یا‬a” ،“A” ‫اگر کاراکتر ورودی‬
.‫ حاصل تفریق دو عدد را نمایش دهد‬،‫“ باشد‬-” ‫“ یا‬s” ،“S” ‫اگر کاراکتر ورودی‬
.‫ حاصلضرب دو عدد را نمایش دهد‬،‫“ یا ”*“ باشد‬x” ،“X” ‫اگر کاراکتر ورودی‬
.‫ حاصل تقسمم دو عدد را نمایش دهد‬،‫“ باشد‬/” ‫“ یا‬d” ،“D” ‫اگر کاراکتر ورودی‬
.‫ باقیمانده تقسمم صحمح عدد اول بر عدد دوم را نمایش دهد‬،‫“ باشد‬%” ‫“ یا‬m” ،“M” ‫اگر کاراکتر ورودی‬
.‫“ را نمایش دهد‬Invalid operator” ‫ پمغام‬،‫در غمر ایع صورت‬
using System; ‫هدف‬ ‫متغمر‬
namespace p46
{ ‫اول‬ ‫عدد‬ a
class Program ‫عدد دوم‬ b
{
static void Main(string[] args) ‫عملگر یا کاراکتر واردشده‬ ch
{
int a, b; ‫ حاصز عبارت‬result
float result = 0;
char ch;
Console.Write("Enter a:");
a= int.Parse(Console.ReadLine());
Console.Write("Enter op:");
ch= char.Parse(Console.ReadLine());
Console.Write("Enter b:");
b= int.Parse(Console.ReadLine());
if (ch == '+' || ch == 'A' || ch == 'a')
{
ch = '+';
result = a + b;
}
else if (ch == '-' || ch == 'S' || ch == 's')
{
ch = '-';
result = a - b;
}
else if (ch == '*' || ch == 'X' || ch == 'x')
{
ch = '*';
result = a * b;
}
else if (ch == '/' || ch == 'D' || ch == 'd')
{
ch = '/';
result = (float)a / b;
37 ‫ساختار تصمیم و حلقه تکرار‬

}
else if (ch == '%' || ch == 'M' || ch == 'm')
{
ch = '%';
result = a % b;
}
else
{
Console.Write("\n Invalid operator");
Console.ReadKey();
return ;
}
Console.WriteLine("{0} {1} {2} = {3}",
a, ch, b,result);
Console.ReadKey();
}
}
}

.‫ پمادهسازی میکند‬switch ‫ را با دستور‬00 ‫ برنامه شماره‬.47


using System; ‫هدف‬ ‫متغمر‬
namespace p47
{ ‫عدد اول‬ a
class Program ‫عدد دوم‬ b
{
static void Main(string[] args) ‫عملگر یا کاراکتر واردشده‬ ch
{
int a, b; ‫ حاصز عبارت‬result
float result = 0;
char ch;
Console.Write("Enter a:");
a = int.Parse(Console.ReadLine());
Console.Write("Enter op:");
ch = char.Parse(Console.ReadLine());
Console.Write("Enter b:");
b = int.Parse(Console.ReadLine());
switch (ch)
{
case '+':
case 'A':
case 'a':
ch = '+';
result = a + b;
break;
case '-':
case 'S':
case 's':
ch = '-';
result = a - b;
break;
case '*':
case 'x':
case 'X':
‫فصل دوم‬ 30

ch = '*';
result = a * b;
break;
case '/':
case 'd':
case 'D':
ch = '/';
result = (float)a / b;
break;
case '%':
case 'm':
case 'M':
ch = '%';
result = a % b;
break;
default:
Console.WriteLine("Invalid operator");
Console.ReadKey();
return ;
break;
}
Console.WriteLine("{0} {1} {2} = {3}", a, ch,
b, result);
Console.ReadKey();
}
}
}

“No” ، ‫ وگرنجه‬،“Yes” ،‫ اگر باقیمانده تقسمم هر عدد بر عدد دیگر صفر شود‬،‫ برنامهای که دو عدد را خوانده‬.48
.‫را نمایش دهد‬
using System;
namespace p48
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter a:");
int a = int.Parse(Console.ReadLine());
Console.Write("Enter b:");
int b = int.Parse(Console.ReadLine());
if (a % b == 0 || b % a == 0)
Console.Write("Yes");
else
Console.Write("No");
Console.ReadKey();
}
}
}
34 ‫ساختار تصمیم و حلقه تکرار‬

‫ خروججی بجه شجکل زیجر‬،‫ وارد شجود‬5 ‫ خروجی زیر را نمایش میدهد (اگر‬،‫ را خوانده‬n ‫ برنامهای که عدد فرد‬.49
:)‫است‬
using System;
namespace p49
{
class Program
{
static void Main(string[] args)
{
int y, i, j, k, n, m, c, h, po, pow;
Console.Write("Enter a even number:");
n = int.Parse(Console.ReadLine());
y = n / 3;
k = n + 3;
for (i = 1; i <= y + 1; i++) Console.Write(" ");
for (i = 1; i <= y; i++) Console.Write("*");
Console.WriteLine();
for (i = 1; i <= y; i++)
{
for (j = 1; j <= y - i; j++)
{
Console.Write(" ");
}
Console.Write("*");
for (c = n + 2; c <= y + k; c++)
{
Console.Write(" "); *
} * *
if (i == n) Console.Write(" "); * *
else Console.Write("*");
Console.WriteLine(); * *
k = k + 2; * *
} *
for (po = 1; po <= n / 2 + 1; po++)
{
Console.Write("*");
for (pow = 1; pow <= n - 1; pow++)
Console.Write(" ");
Console.WriteLine("*");
}
m = 1;
for (i = 1; i <= y; i++)
{
for (c = y + 2; c <= y + m; c++)
{
Console.Write(" ");
}
Console.Write(" ");
if (i == y)
{
Console.Write(" ");
for (h = 1; h <= y; h++)
Console.Write("*");
‫فصل دوم‬ 34

}
else
Console.Write("*");
for (j = 1; j <= 2 * y - 2 * i + y; j++)
{
Console.Write(" ");
}
if (i == y) Console.Write("");
else Console.Write("*");
Console.WriteLine();
m = m + 1;
}
Console.ReadKey();
}
}
}

‫ شجمارندهای کجه‬i ‫ برنامهای که کاراکتر به همراه کد اسکی تمام کاراکترهای رایانه را نمایش میدهجد (متغمجر‬.51
.(‫ میباشد‬255 ‫ کد اسکی کاراکترهای رایانه از صفرتا‬.‫ را میشمارد‬255 ‫صفرتا‬
using System;
namespace p50
{
class Program
{
static void Main(string[] args)
{
for (int i = 0; i <= 255; i++)
Console.Write ("({0})={1}\t", (char) i, i);
Console.ReadKey();
}
}
}
‫‪33‬‬ ‫ساختار تصمیم و حلقه تکرار‬

‫برنامهای که خروجی زیر را تولمد کرده‪ ،‬نمایش میدهد‪.‬‬ ‫‪.51‬‬


‫هدف‬ ‫متغمر‬
‫شمارنده حلقه خارجی از ‪ 1‬تا ‪ 11‬میشمارد‪.‬‬ ‫‪i‬‬
‫شمارنده حلقه داخلی که از ‪ 1‬تا ‪ i‬میشمارد‪.‬‬ ‫‪j‬‬

‫;‪using System‬‬ ‫‪1‬‬


‫‪namespace p51‬‬ ‫‪2‬‬ ‫‪4‬‬
‫{‬ ‫‪6‬‬ ‫‪9‬‬
‫‪class Program‬‬
‫‪3‬‬
‫{‬ ‫‪4‬‬ ‫‪8‬‬ ‫‪12‬‬ ‫‪16‬‬
‫)‪static void Main(string[] args‬‬ ‫‪5‬‬ ‫‪10‬‬ ‫‪15‬‬ ‫‪20‬‬ ‫‪25‬‬
‫{‬ ‫…‬
‫)‪for (int i = 1; i <= 10; i++‬‬ ‫…‬ ‫…‬ ‫…‬ ‫…‬
‫{‬ ‫‪20‬‬ ‫‪30‬‬ ‫‪40‬‬ ‫‪50‬‬ ‫‪... 100‬‬
‫‪10‬‬
‫)‪for (int j = 1; j <= i; j++‬‬
‫‪Console.Write( "{0}\t",‬‬ ‫;)‪i * j‬‬
‫;)(‪Console.WriteLine‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .52‬برنامهای که تعدادی عددی را دریافت کرده‪ ،‬معادل ماه آنها را نمایش میدهد(اگر عدد واردشجده خجارج از‬
‫بازه ‪ 3‬تا ‪ 32‬باشد‪ ،‬برنامه خاتمه مییابد)‪ .‬در ایع برنامه ‪ month‬عددی است که ماه معادل آن باید تعممع شود‪.‬‬
‫فصل دوم‬ 33

using System;
namespace p52
{
class Program
{
static void Main(string[] args)
{
int month;
while (true)
{
Console.Write("Enter month:");
month= int.Parse(Console.ReadLine());
switch (month)
{
case 1: Console.Write("Farvardin "); break;
case 2: Console.Write("Ordibehesht "); break;
case 3: Console.Write("Khordad "); break;
case 4: Console.Write("Tir "); break;
case 5: Console.Write("Mordad "); break;
case 6: Console.Write("Shahrivar "); break;
case 7: Console.Write("Mehr "); break;
case 8: Console.Write("Aban "); break;
case 9: Console.Write("Azar "); break;
case 10: Console.Write("Dey "); break;
case 11: Console.Write("Bahman "); break;
case 12: Console.Write("Esfnad "); break;
default:
return;
}
Console.WriteLine();
}
}
}
}

.)‫ ختم میشود‬Enter ‫ تعداد کاراکترهای رشته را میشمارد (رشته به‬،‫ برنامهای که رشتهای را دریافت کرده‬.53
using System; ‫هدف‬ ‫متغمر‬
namespace p53
{ ‫شده‬ ‫خوانده‬ ‫کاراکتر‬ ch
class Program
{ ‫ تعداد کاراکترهای خواندهشده‬num-chars
static void Main(string[] args)
{
sbyte ch; // Used to store the input character
int num_chars = 0; // Counts the number of characters
Console.Write("Enter any number of characters terminated
by return.");
Console.WriteLine();
ch = (sbyte) Console.Read(); // Obtain the first character
while (ch != (sbyte)'\n')
‫‪33‬‬ ‫ساختار تصمیم و حلقه تکرار‬

‫{‬
‫;‪++num_chars‬‬
‫;)(‪ch = (sbyte) Console.Read‬‬
‫}‬
‫;)‪Console.Write("You entered {0} characters.", num_chars‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .54‬برنامه ای که حقوق تعدادی کارمند را خوانده‪ ،‬اگر کارمند بمش از ‪ 01‬ساعت کارکرده باشد‪ ،‬بهاندازه ‪ 325‬برابجر‬
‫هر ساعت به او اضافهکاری داده میشود‪ .‬در پایان‪ ،‬کل حقوق دریافتی را نمایش میدهجد(برای خجروج از برنامجه از‬
‫کاربر سؤال میکند که آیا ادامه میدهد یا خمر؟ اگر کاربر صفر را وارد کند‪ ،‬برنامه خاتمه مییابد)‪.‬‬

‫هدف‬ ‫متغمر‬
‫نرخ محاسبه مبلغ اضافهکار‬ ‫‪ot-pay-factor‬‬
‫تعداد ساعت موظفی کارکرد بهصورت هفتگی‬ ‫‪normal-hours‬‬
‫تعداد کارمندان‬ ‫‪employee-count‬‬
‫کارمند دیگری است یا خیر اگر صفر باشد‪ ،‬برنامه خاتمه مییابد‪.‬‬ ‫‪another-employee‬‬
‫تعداد ساعت کارکرد کارمند‬ ‫‪hours‬‬
‫نرخ پرداخت حقوق به ازای هر ساعت کارکرد‬ ‫‪rate‬‬
‫حقوق نرمال‬ ‫‪regular-pay‬‬
‫مبلغ اضافهکار‬ ‫‪ot-pay‬‬
‫‪gross-pay‬‬
‫کز حقوق پرداختی‬ ‫‪total-payroll‬‬
‫فصل دوم‬ 34

using System;
namespace p54
{
class Program
{
static void Main(string[] args)
{
const double OT_PAY_FACTOR = 1.5;
const double NORMAL_HOURS = 40.0;
int employee_count; // 1 if another employee; 0 if not
int another_employee;
double hours, rate, regular_pay, ot_pay, gross_pay,
total_payroll;
total_payroll = 0.00;
employee_count = 0;
do
{
// Prompt the user
Console.Write("Enter number of hours worked: ");
hours = double.Parse(Console.ReadLine());
Console.Write("\tEnter pay rate: ");
rate = double.Parse(Console.ReadLine());
// Calculate the pay
if (hours > NORMAL_HOURS)
{
regular_pay = NORMAL_HOURS * rate;
ot_pay=(hours- NORMAL_HOURS) * OT_PAY_FACTOR * rate;
}
else
{
regular_pay = hours * rate;
ot_pay = 0.00;
}
gross_pay = regular_pay + ot_pay;
total_payroll += gross_pay;
++employee_count;
// Display the pay
Console.WriteLine("REGULAR PAY OVERTIME PAY GROSS
PAY");
Console.WriteLine("{0} {1} {2} ",
regular_pay, ot_pay, gross_pay);
Console.WriteLine("--------------------------------");
Console.WriteLine("Do you want to process another
employee?");
Console.Write("Enter 1 for Yes or 0 for No: ");
another_employee = int.Parse(Console.ReadLine());
} while (another_employee != 0);
// Print the total
Console.WriteLine("{0} {1} {2} {3}","Payroll for ",
employee_count, " employees is ", total_payroll);
Console.ReadLine();
}
}
}
34 ‫ساختار تصمیم و حلقه تکرار‬

.‫ نمایش دهد‬،‫(! را به عدد تبدیل کرده‬NOT) ،||(OR) ،&&(AND) ‫ برنامهای که نتایج عملگرهای‬.55
using System;
namespace p55
{
class Program
{
static void Main(string[] args)
{
// create truth table for && (logical AND) operator
Console.Write("Logical AND (&&)");
Console.Write("\nfalse && false: {0}",false && false);
Console.Write("\nfalse && true: {0}", (false && true));
Console.Write("\ntrue && false: {0}", (true && false));
Console.Write("\ntrue && true: {0}",(true && true));
Console.Write("\n");
// create truth table for || (logical OR) operator
Console.WriteLine("Logical OR (||)");
Console.Write("\nfalse || false: {0}", (false || false));
Console.Write("\nfalse || true: {0}", (false || true));
Console.Write("\ntrue || false: {0}" , (true || false));
Console.Write("\ntrue || true: {0}", (true || true));
Console.Write("\n");
// create truth table for ! (logical negation) operator
Console.WriteLine("Logical NOT (!)");
Console.Write("\n!false: {0}",(!false));
Console.Write( "\n!true: {0}",(bool)(!true));
Console.ReadKey();
}
}
}
‫فصل دوم‬ 34

‫ رقم یکان و حاصلضرب ارقجام فجرد آن را نمجایش‬،‫ در هر مرحله عدد موردنظر‬،‫ برنامهای که عددی را خوانده‬.56
:‫ را وارد نماید خروجی بهصورت زیر نمایش داده میشود‬1210 ‫ اگر کاربر عدد‬،‫ بهعنوانمثال‬.‫میدهد‬
Number Digit Multiply
3276 6 1

327 7 7

32 2 7

3 3 21

Multiply is 21
using System; ‫هدف‬ ‫متغمر‬
namespace p56
{ ‫شده‬ ‫خوانده‬ ‫عدد‬ n
class Program ‫ حاصزضرب اریام فرد‬multiply
{
static void Main(string[] args) ‫ ریم یکان در هر مرحله‬digit
{
int n, multiply = 1;
Console.Write("Enter a number:");
n= int.Parse(Console.ReadLine());;
Console.Write(" Number Digit Multiply ");
Console.Write("\n========= ========= ==========");
while (n > 0)
{
int digit = n % 10;
if (digit % 2 == 1) multiply *= digit;
Console.Write("\n{0}\t\t{1}\t\t{2}",n, digit, multiply);
n /= 10;
}
Console.Write("\n======================================");
Console.Write("\nMultiply is {0}", multiply);
Console.ReadKey();
}
}
}
37 ‫ساختار تصمیم و حلقه تکرار‬

2509 ‫ اگجر عجدد‬،‫ بهعنوانمثال‬.‫ ممانگمع ارقام فرد و زوج آن را نمایش میدهد‬،‫ برنامه ای که عددی را خوانده‬.57
.‫( میباشد‬4)(2+6)/2 ‫ ممانگمع ارقام زوج آن‬.‫( است‬7)(5+9)/2 ‫ یعنی‬،‫ ممانگمع ارقام فرد آن‬،‫باشد‬
‫هدف‬ ‫متغمر‬
‫عدد خواندهشده‬ n
‫تعداد اریام زوج‬ count1
using System; ‫مجموعه اریام زوج‬ sum1
namespace p57
{ ‫ تعداد اریام فرد‬count2
class Program
{
‫ مجموعه اریام زوج‬sum2
static void Main(string[] args) ‫ریم یکان در هر مرحله‬ digit
{
int n, count1 = 0, count2 = 0, sum1 = 0, sum2 = 0;
Console.Write("Enter a number:");
n = int.Parse(Console.ReadLine()); ;
Console.Write(" Number digit ");
Console.Write("\n========= ========= ");
while (n > 0)
{
int digit = n % 10;
if (digit % 2 == 0)
{
++count1;
sum1 += digit;
}
else
{
++count2;
sum2 += digit;
}
Console.Write("\n{0}\t\t{1}", n, digit);
n /= 10;
}
if (count1 > 0)
Console.Write("\n average1 is {0}", sum1 / count1);
if (count2 > 0)
Console.Write("\n average2 is {0}", sum2 / count2);
Console.ReadKey();
}
}
}
‫فصل دوم‬ ‫‪30‬‬

‫برنامهای که کلمه اعداد سهرقمی را نمایش میدهد که با ارقام ‪ 2 ،3‬و ‪ 1‬تولمد میشوند‪.‬‬ ‫‪.58‬‬
‫هدف‬ ‫متغمر‬
‫شمارنده ریم صدگان (بین ‪ 1‬تا ‪ 3‬تغییر میکند)‬ ‫‪i‬‬
‫شمارنده ریم دهگان (بین ‪ 1‬تا ‪ 3‬تغییر میکند)‬ ‫‪j‬‬
‫;‪using System‬‬
‫‪namespace p58‬‬ ‫ریم یکان (بین ‪ 1‬تا ‪ 3‬میشمارد)‬ ‫‪k‬‬
‫{‬
‫‪class Program‬‬ ‫عدد سهریمی تولیدشده با اریام ‪ 0 ،1‬و ‪3‬‬ ‫‪num‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int num‬‬
‫)‪for (int i = 1; i <= 3; i++‬‬
‫)‪for (int j = 1; j <= 3; j++‬‬
‫)‪for (int k = 1; k <= 3; k++‬‬
‫{‬
‫;‪num = i * 100 + j * 10 + k‬‬
‫;)‪Console.Write ("{0}\t", num‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫برنامهای که کلمه اعداد سهرقمی را نشان میدهد که در ارقام آن ‪ 0 ،3‬یا ‪ 8‬باشد‪.‬‬ ‫‪.59‬‬
‫هدف‬ ‫متغمر‬
‫;‪using System‬‬ ‫شمارنده از ‪ 111‬تا ‪ 999‬برای تولید عدد سهریمی‬ ‫‪i‬‬
‫‪namespace p59‬‬ ‫هر عدد سهریمی که باید اریام آن بررسی شود‬ ‫‪num‬‬
‫{‬
‫‪class Program‬‬ ‫ریم یکان ‪ num‬در هر مرحله‬ ‫‪digit‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int num, digit‬‬
‫)‪for (int i = 100; i <= 999; i++‬‬
‫{‬
‫;‪num = i‬‬
‫‪34‬‬ ‫ساختار تصمیم و حلقه تکرار‬

‫)‪while (num > 0‬‬


‫{‬
‫;‪digit = num % 10‬‬
‫;‪if (digit == 1 || digit == 4 || digit == 8) break‬‬
‫;‪num /= 10‬‬
‫}‬
‫;)‪if (num > 0) Console.Write("\t{0}", i‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .61‬برنامهای که کلمه اعداد چهاررقمی که فقط از ارقام ‪ 0 ،3 ،2‬و ‪ 9‬تشکملشده باشند و هر رقم یکبار تکجرار شجده‬
‫باشد را نمایش میدهد‪.‬‬
‫هدف‬ ‫متغمر‬
‫شاامارنده از ‪ 1111‬تااا ‪ 9999‬باارای تولیااد‬ ‫‪i‬‬
‫اعداد چهارریمی‬
‫;‪using System‬‬ ‫هر عدد چهارریمی‬ ‫‪num‬‬
‫‪namespace p60‬‬
‫{‬ ‫تعااداد اریااام ‪ 1‬تکاارار شااده در هاار عاادد‬ ‫‪c1‬‬
‫‪class Program‬‬ ‫‪num‬‬
‫{‬ ‫تعااداد اریااام ‪ 0‬تکاارار شااده در هاار عاادد‬ ‫‪c2‬‬
‫)‪static void Main(string[] args‬‬
‫{‬ ‫‪num‬‬
‫;‪int num,digit,c1, c2, c4, c9‬‬ ‫تعااداد اریااام ‪ 4‬تکاارار شااده در هاار عاادد‬ ‫‪c4‬‬
‫)‪for (int i=1000;i<=9999;i++‬‬
‫{‬ ‫‪num‬‬
‫;‪c1 = c2 = c4 = c9 = 0‬‬ ‫تعااداد اریااام ‪ 9‬تکاارار شااده در هاار عاادد‬ ‫‪c9‬‬
‫;‪num = i‬‬ ‫‪num‬‬
‫)‪while (num > 0‬‬
‫{‬ ‫ریم یکان ‪ num‬در هر مرحله‬ ‫‪digit‬‬
‫;‪digit = num % 10‬‬
‫;‪if (digit == 1) c1++‬‬
‫;‪if (digit == 2) c2++‬‬
‫;‪if (digit == 4) c4++‬‬
‫;‪if (digit == 9) c9++‬‬
‫;‪num /= 10‬‬
‫}‬
‫فصل دوم‬ ‫‪34‬‬

‫)‪if (c1 == 1 && c2 == 1 && c4 == 1 && c9 == 1‬‬


‫;)‪Console.Write("{0}\t", i‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .03‬برنامهای که تعداد سطرها را خوانده و حاصل خروجی زیر را تولمد میکند (برای تعداد سرهای ‪0‬‬
‫خروجی زیر را نمایش میدهد‪:).‬‬
‫;‪using System‬‬
‫‪namespace p61‬‬
‫{‬
‫‪1‬‬
‫‪class Program‬‬
‫{‬ ‫‪2‬‬ ‫‪3‬‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int i, j, rows, k = 1‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬
‫;)" ‪Console.Write("Input number of rows :‬‬
‫;))(‪rows = int.Parse(Console.ReadLine‬‬
‫)‪for (i = 1; i <= rows; i++‬‬
‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬
‫{‬
‫)‪for (j = 1; j <= i; j++‬‬ ‫‪10‬‬
‫;) ‪Console.Write("{0}\t", k++‬‬
‫;)(‪Console.WriteLine‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه متغیرهای ‪( rows‬تعداد ساررها)‪( k ،‬شامارنده از ‪ 1‬کاه یکاییکای افازایش ماییاباد (بارای‬
‫چاپ))‪( i ،‬شمارنده از ‪ 1‬تا تعداد سررها) و ‪( j‬شمارنده از ‪ 1‬تا ‪ )i‬را داریم‪.‬‬

‫برنامهای که خروجی زیر را نمایش میدهد‪:‬‬ ‫‪.61‬‬


33 ‫ساختار تصمیم و حلقه تکرار‬

using System;
namespace p62 2 4 6 8 10 12
{
class Program 6 8 10 12 14 16
{
static void Main(string[] args)
{ 10 12 14 16 18 20
int i, j;
for (i = 2; i <= 14; i += 4) 14 16 18 20 22 24
{
for (j =i;j<=i+10; j += 2)
Console.Write("{0}\t", j); ‫هدف‬ ‫متغمر‬
Console.WriteLine(); ،‫ (یعنای‬4 ‫ باا گاام‬14 ‫ تاا‬0 ‫شمارنده سرر از‬ i
}
Console.ReadKey(); )‫ را میشمارد‬14 ‫ و‬11 ،6 ،0 ‫مقادیر‬
} -‫ مای‬0 ‫ را با گام افازایش‬i+10 ‫ تا‬i ‫مقادیر‬ j
}
} .‫شمارد‬

:‫برنامهای که خروجی زیر را نمایش میدهد‬ .62

using System;
namespace p63 100 200 300 400 500 600
{
class Program 150 250 350 450 550 650
{
static void Main(string[] 200 300 400 500 600 700
args)
{ ... … … … … …
int i, j;
for (i=100;i<=500;i+=50) 500 600 700 800 900 1000
{
for (j = i; j <= i + 500; j += 100)
Console.Write("{0}\t", j);
Console.WriteLine();
} ‫هدف‬ ‫متغمر‬
Console.ReadKey();
} ‫مقاادیر‬ ،‫یعنای‬ ( 51 ‫افزایش‬ ‫گام‬ ‫ با‬511 ‫ تا‬111 ‫شمارنده سرر از‬ i
} )‫ را میشمارد‬511 ‫ تا‬... ،011 ،151 ،111
} .‫ میشمارد‬111 ‫ را با گام افزایش‬i+500 ‫ تا‬i ‫مقادیر‬ j
‫فصل دوم‬ ‫‪33‬‬

‫𝒏∑ را نمایش میدهد (یعنی‪ ،‬حاصل عبارت زیجر را نمجایش‬ ‫𝐧‬


‫‪ .63‬برنامهای که ‪ x‬و ‪ n‬را خوانده‪ ،‬حاصل عبارت 𝐱 𝟏=𝐢‬
‫𝟏‬ ‫𝟐‬ ‫𝟑‬ ‫𝒏‬
‫𝒙‪𝒙 + 𝒙 + 𝒙 + …+‬‬ ‫میدهد)‪:‬‬
‫هدف‬ ‫متغمر‬
‫شمارنده از ‪ 1‬تا ‪ n‬برای ‪ n‬جمله سری‬ ‫‪i‬‬
‫شمارنده از ‪ 1‬تا ‪ i‬برای محاسبه ‪ x‬به توان ‪i‬‬ ‫‪j‬‬
‫;‪using System‬‬ ‫مجموع سری‬ ‫‪sum‬‬
‫‪namespace p64‬‬ ‫مقداری که کاربر وارد مینماید (تعداد جمالت سری)‬ ‫‪n‬‬
‫{‬
‫‪class Program‬‬ ‫مقداری که کاربر وارد میکند‪.‬‬ ‫‪x‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int x, n‬‬
‫;)"‪Console.Write("Enter x:‬‬
‫;))(‪x = int.Parse (Console.ReadLine‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = int.Parse (Console.ReadLine‬‬
‫;‪long sum = 0‬‬
‫)‪for (int i = 1; i <= n; i++‬‬
‫{‬
‫;‪long pow = 1‬‬
‫)‪for (int j = 1; j <= i; j++‬‬
‫;‪pow *= x‬‬
‫;‪sum += pow‬‬
‫}‬
‫;)‪Console.Write(sum‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫𝟎∑‬
‫!𝒙 𝒏=𝒋‬
‫= )𝒌 ‪ 𝑭(𝒙, 𝒏,‬را نمایش میدهد‪.‬‬ ‫برنامهای که ‪ n ،x‬و ‪ k‬را خوانده‪ ،‬حاصل عبارت‬ ‫‪.64‬‬
‫𝒌∑‬
‫!𝒊 𝟏=𝒊‬
‫هدف‬ ‫متغمر‬
‫عدد خواندهشده ‪ x‬را نگهداری میکند‪.‬‬ ‫‪x‬‬
33 ‫ساختار تصمیم و حلقه تکرار‬

.‫ را نگهداری میکند‬n ‫عدد خواندهشده‬ n


.‫ را نگهداری میکند‬k ‫عدد خواندهشده‬ k
.‫فاکتوریز را نگهداری میکند‬ fact
-‫مجموع سری صورت (باالی کسار) را نگاهداری مای‬ sum1
‫کند‬
.‫مجموع سری مخرج کسر را نگهداری میکند‬ sum2
k ‫ تا‬1 ‫ به صفر یا از‬n ‫شمارنده از‬ i
using System; k ‫ تا‬1 ‫ یا از‬x ‫ تا‬1 ‫شمارنده از‬ j
namespace p65
{
class Program
{
static void Main(string[] args)
{
int x, n, k;
Console.Write("Enter x:");
x = int.Parse(Console .ReadLine());
Console.Write("Enter n:");
n = int.Parse(Console .ReadLine());
Console.Write("Enter k:");
k = int.Parse(Console.ReadLine());
long fact = 1;
float sum1, sum2;
sum1 = sum2 = 0;
for (int i = n; i >= 0; i--)
{
fact = 1;
for (int j = 1; j <= x; j++)
fact = fact * j;
sum1 = sum1 + fact;
}
for (int i = 1; i <= k; i++)
{
fact = 1;
for (int j = 1; j <= i; j++)
fact = fact * j;
sum2 = sum2 + fact;
}
Console.Write("Sum is {0}", sum1 / sum2);
Console.ReadKey();
}
}
}

‫ عدد‬n ‫ اگر برای‬،‫ بهعنوانمثال‬.‫ خروجی زیر را نمایش میدهد‬،‫ ) را خوانده‬81 ‫ تا‬3 ‫ (عددی بمع‬n ‫ برنامهای که‬.65
:‫ خروجی بهصورت زیر نمایش دهد‬،‫ وارد شود‬5
‫فصل دوم‬ ‫‪34‬‬

‫هدف‬ ‫متغمر‬
‫شمارنده سرر که از ‪ 1‬تا ‪ n‬تغییر میکند‪.‬‬ ‫‪i‬‬
‫عدد ورودی که از کاربر دریافت میشود‪.‬‬ ‫‪n‬‬
‫شمارنده ستون که از ‪ 1‬تا ‪ n‬تغییر میکند‪.‬‬ ‫‪j‬‬
‫;‪using System‬‬
‫‪namespace p66‬‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬
‫{‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬
‫‪class Program‬‬
‫{‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬
‫)‪static void Main(string[] args‬‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬
‫{‬
‫;‪int i, j, n‬‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬
‫)‪if (n > 80 || n < 0‬‬
‫{‬
‫;)"‪Console.Write("Invalid number‬‬
‫;)(‪Console.ReadKey‬‬
‫;‪return‬‬
‫}‬
‫)‪for (i = 1; i <= n; i++‬‬
‫{‬
‫)‪for (j = 1; j <= n; j++‬‬
‫; )"*" (‪Console.Write‬‬
‫;)(‪Console.WriteLine‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .66‬برنامهای که ‪( n‬عددی بمع ‪ 3‬تا ‪ ) 81‬را خوانده‪ ،‬خروجی زیر را نمایش میدهد‪( .‬اگجر بجرای ‪ n= 5‬وارد شجود‪،‬‬
‫خروجی را بهصورت زیر نمایش میدهد) یعنی‪ ،‬فقط چهار ضلع را نمایش میدهد‪:‬‬
‫هدف‬ ‫متغمر‬
‫شمارنده سرر که بین ‪ 1‬تا ‪ n‬را میشمارد‪.‬‬ ‫‪i‬‬
‫;‪using System‬‬ ‫عدد ورودی که از کاربر دریافت میشود‪.‬‬ ‫‪n‬‬
‫‪namespace p67‬‬
‫{‬ ‫شمارنده ستون که بین ‪ 1‬تا ‪ n‬را میشمارد‪.‬‬ ‫‪j‬‬
‫‪class Program‬‬
34 ‫ساختار تصمیم و حلقه تکرار‬

{
static void Main(string[] args)
{
int i, j, n;
Console.Write("Enter n:"); * * * * *
n = int.Parse(Console.ReadLine()); * *
if (n > 80 || n < 0)
{ * *
Console.Write("Invalid number"); * *
Console.ReadKey();
return; * * * * *
}
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (i == 1 || j == 1 || i == n || j == n)
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
}

،‫ وارد شجود‬n= 5 ‫ ( اگجر‬.‫ خروجی مانند زیر را نمایش مجیدهجد‬،‫ ) را خوانده‬81 ‫ تا‬3 ‫ (بمع‬n ‫ برنامهای که عدد‬.67
:‫ یعنی اضالع مربع و قطر اصلی را نمایش میدهد‬.)‫خروجی را بهصورت زیر نمایش میدهد‬
using System; ‫هدف‬ ‫متغمر‬
namespace p68
{ .‫ را میشمارد‬n ‫ تا‬1 ‫ شمارنده سرر که بین‬i
class Program .‫ عدد ورودی که از کاربر دریافت میشود‬n
{
static void Main(string[] args) .‫ را میشمارد‬n ‫ تا‬1 ‫ شمارنده ستون که بین‬j
{
int i, j, n;
Console.Write("Enter n:"); * * * * *
n = int.Parse(Console.ReadLine());
if (n > 80 || n < 0) * * *
{ * * *
Console.Write("Invalid number");
Console.ReadKey();
* * *
return; * * * * *
}
for (i = 1; i <= n; i++)
{
‫فصل دوم‬ 34

for (j = 1; j <= n; j++)


if (i == 1 || j == 1 || i == n || j == n || i == j)
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
}

‫ اضجالع و‬،‫ یعنجی‬.‫ خروجی مثل زیر را نمایش میدهجد‬،‫ ) را از ورودی خوانده‬81 ‫ تا‬3 ‫ (بمع‬n ‫ برنامهای که عدد‬.68
:)‫ خروجی زیر را نمایش میدهد‬،‫ وارد گردد‬n = 5 ‫قطر فرعی را نمایش میدهد (اگر‬
using System;
namespace p69 * * * * *
{
class Program * * *
{ * * *
static void Main(string[] args)
{ * * *
int i, j, n; * * * * *
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
if (n > 80 || n < 0)
{
Console.Write("Invalid number");
Console.ReadKey();
return;
}
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (i == 1 || j == 1 || i == n || j == n || i+j == n+1)
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
}
37 ‫ساختار تصمیم و حلقه تکرار‬

،‫ وارد شجود‬n= 5 ‫ ( اگجر‬.‫ خروجی مثل زیر را نمجایش مجیدهجد‬،‫ ) را خوانده‬81 ‫ تا‬3 ‫ (بمع‬n ‫ برنامهای که عدد‬.69
.‫ قطر اصلی و قطر فرعی را نمایش میدهد‬،‫ اضالع‬،‫ یعنی‬:)‫خروجی زیر را نمایش میدهد‬
using System;
namespace p70 * * * * *
{ * * * *
class Program
{ * * *
static void Main(string[] args) * * * *
{
int i, j, n; * * * * *
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
if (n > 80 || n < 0)
{
Console.Write("Invalid number");
Console.ReadKey();
return;
}
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (i == 1 || j == 1 || i == n || j == n || i == j
|| i + j == n + 1)
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
}
‫فصل دوم‬ ‫‪30‬‬

‫‪ .71‬برنامهای که عدد ‪( n‬بمع ‪ 3‬تا ‪ ) 81‬را خوانده‪ ،‬خروجی زیر را نمایش میدهد‪ ( .‬اگر ‪ n = 5‬باشد‪ ،‬خروجی زیجر‬
‫را نمایش میدهد)‪ :‬یعنی‪ ،‬ستون اول‪ ،‬سطر آخر و قطر اصلی را نمایش میدهد‪:‬‬
‫هدف‬ ‫متغمر‬
‫شمارنده سرر که بین ‪ 1‬تا ‪ n‬را میشمارد‪.‬‬ ‫‪i‬‬
‫عدد ورودی که از کاربر دریافت میشود‪.‬‬ ‫‪n‬‬
‫;‪using System‬‬
‫‪namespace p71‬‬ ‫شمارنده ستون که بین ‪ 1‬تا ‪ n‬میشمارد‪.‬‬ ‫‪j‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬ ‫*‬
‫{‬
‫;‪int i, j, n‬‬ ‫* *‬
‫;)"‪Console.Write("Enter n:‬‬ ‫*‬ ‫*‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬
‫)‪if (n > 80 || n < 0‬‬ ‫*‬ ‫*‬
‫{‬ ‫* * *‬ ‫*‬ ‫*‬
‫;)"‪Console.Write("Invalid number‬‬
‫;)(‪Console.ReadKey‬‬
‫;‪return‬‬
‫}‬
‫)‪for (i = 1; i <= n; i++‬‬
‫{‬
‫)‪for (j = 1; j <= n; j++‬‬
‫)‪if (i == n || j == 1 || i == j‬‬
‫;)"*"(‪Console.Write‬‬
‫‪else‬‬
‫;)" "(‪Console.Write‬‬
‫;)(‪Console.WriteLine‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .71‬برنامهای که عدد ‪( n‬بمع ‪ 3‬تا ‪ ) 81‬را خوانده‪ ،‬خروجی مانند شکل زیر را نمایش مجیدهجد‪ ( .‬اگجر ‪ n= 5‬باشجد‪،‬‬
‫خروجی زیر را نمایش میدهد)‪ .‬یعنی‪ ،‬سطر اول‪ ،‬ستون آخر و قطر اصلی را نمایش میدهد‪:‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬
‫‪namespace p72‬‬
‫{‬ ‫شمارنده سرر بین ‪ 1‬تا ‪ n‬را میشمارد‪.‬‬ ‫‪i‬‬
‫‪class Program‬‬ ‫*‬ ‫*‬ ‫*‬ ‫*‬
‫عدد ورودی که از کاربر وارد میکند‪.‬‬‫*‬ ‫‪n‬‬
‫{‬
‫)‪static void Main(string[] args‬‬ ‫شمارنده ستون که بین ‪*1‬تا ‪ n‬را میشمارد‪.‬‬
‫*‬ ‫‪j‬‬
‫{‬ ‫*‬ ‫*‬
‫;‪int i, j, n‬‬
‫;)"‪Console.Write("Enter n:‬‬ ‫* *‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬ ‫*‬
34 ‫ساختار تصمیم و حلقه تکرار‬

if (n > 80 || n < 0)
{
Console.Write("Invalid number");
Console.ReadKey();
return;
}
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (i == 1 || j == n || i == j)
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
}

،‫ وارد شجود‬n = 5 ‫ ( اگجر‬.‫ ) را خوانده و خروجی مانند زیر را نمایش میدهجد‬81 ‫ تا‬3 ‫ (بمع‬n ‫ برنامهای که عدد‬.72
:‫ ستون اول و قطر فرعی را نمایش میدهد‬،‫ سطر اول‬،‫ یعنی‬.)‫خروجی زیر را نمایش میدهد‬
using System; ‫هدف‬ ‫متغمر‬
namespace p73
{ .‫شمارد‬ ‫می‬ ‫را‬ n ‫تا‬ 1 ‫بین‬ ‫سرر‬ ‫شمارنده‬ I
class Program .‫عدد ورودی که از کاربر وارد میکند‬ N
{
static void Main(string[] args) .‫ را میشمارد‬n ‫ تا‬1 ‫شمارنده ستون که بین‬ J
{
int i, j, n;
Console.Write("Enter n:"); * * * * *
n = int.Parse(Console.ReadLine());
if (n > 80 || n < 0) * *
{ * *
Console.Write("Invalid number");
Console.ReadKey(); * *
return; *
}
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (i == 1 || j == 1 || i + j == n + 1)
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
‫فصل دوم‬ 34

Console.ReadKey();
}
}
}

‫ ستون آخر‬،‫ سطر آخر‬،‫ یعنی‬.‫ خروجی مثل زیر را نمایش میدهد‬،‫ ) را خوانده‬81 ‫ تا‬3 ‫ (بمع‬n ‫ برنامهای که عدد‬.73
:)‫ خروجی زیر را نمایش میدهد‬،‫ وارد شود‬n = 5 ‫ ( اگر‬.‫و قطر فرعی را نمایش میدهد‬
using System; ‫هدف‬ ‫متغمر‬
namespace p74
{ .‫شمارد‬ ‫می‬ ‫را‬ n ‫تا‬ 1 ‫بین‬ ‫که‬ ‫سرر‬ ‫شمارنده‬ i
class Program .‫عدد ورودی که از کاربر وارد میکند‬ n
{
static void Main(string[] args) .‫ را میشمارد‬n ‫ تا‬1 ‫شمارنده ستون که بین‬ j
{
int i, j, n;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
*
if (n > 80 || n < 0) * *
{
Console.Write("Invalid number");
* *
Console.ReadKey(); * *
return; * * * * *
}
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)

if (i == n || j == n || i + j == n + 1)
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
}
‫‪33‬‬ ‫ساختار تصمیم و حلقه تکرار‬

‫‪ .74‬برنامهای که عدد ‪( n‬بمع ‪ 3‬تا ‪ ) 81‬را خوانده‪ ،‬خروجی مثل زیر را نمایش میدهد‪ .‬یعنی‪ ،‬سطر آخر‪ ،‬سجتون اول‬
‫و تمام عناصر روی قطر اصلی و زیر آن را نمایش میدهد‪ ( .‬اگر ‪ n= 5‬وارد شود‪ ،‬خروجی زیر را نمایش میدهد)‪:‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬
‫‪namespace p75‬‬
‫{‬ ‫شمارد‪.‬‬ ‫می‬ ‫را‬ ‫‪n‬‬ ‫تا‬ ‫‪1‬‬ ‫بین‬ ‫سرر‬ ‫شمارنده‬ ‫‪I‬‬
‫‪class Program‬‬ ‫عدد ورودی که از کاربر وارد میکند‪.‬‬ ‫‪N‬‬
‫{‬
‫)‪static void Main(string[] args‬‬ ‫شمارنده ستون که بین ‪ 1‬تا ‪ n‬را میشمارد‪.‬‬ ‫‪J‬‬
‫{‬
‫;‪int i, j, n‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬ ‫*‬
‫)‪if (n > 80 || n < 0‬‬
‫{‬ ‫* *‬
‫;)"‪Console.Write("Invalid number‬‬ ‫* * *‬
‫;)(‪Console.ReadKey‬‬
‫;‪return‬‬ ‫* * * *‬
‫}‬ ‫* * * * *‬
‫)‪for (i = 1; i <= n; i++‬‬
‫{‬
‫)‪for (j = 1; j <= n; j++‬‬
‫)‪if (i == n || j == 1 || j <= i‬‬
‫;)"*"(‪Console.Write‬‬
‫‪else‬‬
‫;)" "(‪Console.Write‬‬
‫;)(‪Console.WriteLine‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫فصل دوم‬ ‫‪33‬‬

‫‪ .75‬برنامهای که عدد ‪( n‬بمع ‪ 3‬تا ‪ ) 81‬را خوانده‪ ،‬خروجی مثل زیر را نمایش میدهد‪ .‬یعنی‪ ،‬سطر اول‪ ،‬ستون آخجر‬
‫و عناصر روی و باالی قطر اصلی را نمایش میدهد‪ ( .‬اگر ‪ n= 5‬باشد‪ ،‬خروجی زیر را نمایش میدهد)‪:‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬
‫‪namespace p76‬‬
‫{‬ ‫شمارد‪.‬‬ ‫می‬ ‫را‬ ‫‪n‬‬ ‫تا‬ ‫‪1‬‬ ‫بین‬ ‫سرر‬ ‫شمارنده‬ ‫‪i‬‬
‫‪class Program‬‬ ‫عدد ورودی که از کاربر وارد میکند‪.‬‬ ‫‪n‬‬
‫{‬
‫)‪static void Main(string[] args‬‬ ‫شمارد‪.‬‬ ‫شمارنده ستون که بین ‪ 1‬تا ‪ n‬را می‬ ‫‪j‬‬
‫{‬
‫;‪int i, j, n‬‬
‫;)"‪Console.Write("Enter n:‬‬ ‫* * * * *‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬
‫)‪if (n > 80 || n < 0‬‬ ‫* * * *‬
‫{‬ ‫* * *‬
‫;)"‪Console.Write("Invalid number‬‬
‫;)(‪Console.ReadKey‬‬
‫* *‬
‫;‪return‬‬ ‫*‬
‫}‬
‫)‪for (i = 1; i <= n; i++‬‬
‫{‬
‫)‪for (j = 1; j <= n; j++‬‬
‫)‪if (i == 1 || j == n || j >= i‬‬
‫;)"*"(‪Console.Write‬‬
‫‪else‬‬
‫;)" "(‪Console.Write‬‬
‫;)(‪Console.WriteLine‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .76‬برنامهای که عدد ‪( n‬بمع ‪ 3‬تا ‪ ) 81‬را خوانده‪ ،‬خروجی مثل زیر را نمایش میدهد‪ .‬یعنی‪ ،‬سطر آخر‪ ،‬ستون آخر‪،‬‬
‫عناصر روی و زیرقطر فرعی را نمایش میدهد‪ ( .‬اگر ‪ n = 5‬وارد شود‪ ،‬خروجی زیر را نمایش میدهد)‪:‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬
‫‪namespace p77‬‬
‫{‬ ‫شمارد‪.‬‬ ‫می‬ ‫را‬ ‫‪n‬‬ ‫تا‬ ‫‪1‬‬ ‫بین‬ ‫سرر‬ ‫شمارنده‬ ‫‪i‬‬
‫‪class Program‬‬ ‫عدد ورودی که از کاربر وارد میکند‪.‬‬ ‫‪n‬‬
‫{‬
‫)‪static void Main(string[] args‬‬ ‫شمارنده ستون که بین ‪ 1‬تا ‪ n‬را میشمارد‪.‬‬ ‫‪j‬‬
‫{‬
‫;‪int i, j, n‬‬
‫;)"‪Console.Write("Enter n:‬‬ ‫*‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬
‫)‪if (n > 80 || n < 0‬‬ ‫*‬ ‫*‬
‫{‬ ‫* * *‬
‫;)"‪Console.Write("Invalid number‬‬
‫;)(‪Console.ReadKey‬‬ ‫*‬ ‫* * *‬
‫;‪return‬‬ ‫* * * * *‬
33 ‫ساختار تصمیم و حلقه تکرار‬

}
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (i == n || j == n || i + j >= n + 1)
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
}

،‫ سجتون اول‬،‫ سطر اول‬،‫ یعنی‬.‫ خروجی مثل زیر را نمایش میدهد‬،‫ ) را خوانده‬81 ‫ تا‬3 ‫ (بمع‬n ‫ برنامهای که عدد‬.77
:)‫ خروجی زیر را نمایش میدهد‬،‫ وارد گردد‬n = 5 ‫ ( اگر‬.‫عناصر روی و باالی قطر فرعی را نمایش میدهد‬
using System; ‫هدف‬ ‫متغمر‬
namespace p78
{ .‫ را میشمارد‬n ‫ تا‬1 ‫شمارنده سرر بین‬ i
class Program .‫ عدد ورودی که از کاربر وارد میکند‬n
{
static void Main(string[] args) .‫ را میشمارد‬n ‫ تا‬1 ‫ شمارنده ستون که بین‬j
{
int i, j, n;
Console.Write("Enter n:"); * * * * *
n = int.Parse(Console.ReadLine());
if (n > 80 || n < 0) * * * *
{ * * *
Console.Write("Invalid number");
Console.ReadKey(); * *
return; *
}
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (i == 1 || j == 1 || i + j <= n + 1)
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
‫فصل دوم‬ 444

،‫ وارد شجود‬n = 5 ‫ ( اگجر‬.‫ خروجی مثل زیر را نمجایش مجیدهجد‬،‫ ) را خوانده‬81 ‫ تا‬3 ‫ (بمع‬n ‫ برنامهای که عدد‬.78
:)‫خروجی زیر را نمایش میدهد‬
using System; ‫هدف‬ ‫متغمر‬
namespace p79
{ .‫ را میشمارد‬n ‫ تا‬1 ‫ شمارنده سرر بین‬i
class Program .‫ عدد ورودی که از کاربر وارد میکند‬n
{
static void Main(string[] args) .‫ را میشمارد‬n ‫ تا‬1 ‫ شمارنده ستون که بین‬j
{
int i, j, n; * *
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); * * * *
if (n > 80 || n < 0) * * *
{
Console.Write("Invalid number"); * * * *
Console.ReadKey(); * *
return;
}
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (j == 1 || j == n || i == j || i + j == n + 1)
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
}
444 ‫ساختار تصمیم و حلقه تکرار‬

‫ خروجی‬،‫ وارد شود‬n = 5 ‫ ( اگر‬.‫ خروجی زیر را نمایش میدهد‬،‫ ) را خوانده‬81 ‫ تا‬3 ‫ (بمع‬n ‫ برنامهای که عدد‬.79
:)‫زیر را نمایش میدهد‬
using System; ‫هدف‬ ‫متغمر‬
namespace p80
{ .‫ را میشمارد‬n ‫ تا‬1 ‫شمارنده سرر بین‬ i
class Program .‫عدد ورودی که از کاربر وارد میکند‬ n
{
static void Main(string[] args) .‫ را میشمارد‬n ‫ تا‬1 ‫شمارنده ستون که بین‬ j
{
int i, j, n;
Console.Write("Enter n:"); * * * * *
n = int.Parse(Console.ReadLine()); * *
if (n > 80 || n < 0)
{ *
Console.Write("Invalid number"); * *
Console.ReadKey();
return; * * * * *
}
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (i == 1 || i == n || i == j || i + j == n + 1)
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
}
‫فصل دوم‬ 444

‫ خروججی‬،‫ وارد شود‬n= 5 ‫ ( اگر‬.‫ خروجی زیر را نمایش میدهد‬،‫ ) را خوانده‬81 ‫ تا‬3 ‫ (بمع‬n ‫ برنامهای که عدد‬.81
:)‫زیر را نمایش میدهد‬
‫هدف‬ ‫متغ‬
using System;
namespace p81 ‫یر‬
{ .‫ را میشمارد‬n ‫ تا‬1 ‫شمارنده سرر بین‬ i
class Program
{ .‫کند‬ ‫عدد ورودی که از کاربر وارد می‬ n
static void Main(string[] args) ‫ را‬n ‫ تاااا‬1 ‫شاامارنده سااتون کااه بااین‬ j
{
int i, j, n; .‫میشمارد‬
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); * *
if (n > 80 || n < 0) * * * *
{
Console.Write("Invalid number"); * * * * *
Console.ReadKey(); * * * *
return;
} * *
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if(j == 1 || j == n || (j <= i && i + j <= n + 1)
|| (j >= i && i + j >= n + 1))
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
}
447 ‫ساختار تصمیم و حلقه تکرار‬

،‫ وارد شجود‬n = 5 ‫ ( اگجر‬.‫ خروجی مثل زیر را نمجایش مجیدهجد‬،‫ ) را خوانده‬81 ‫ تا‬3 ‫ (بمع‬n ‫ برنامهای که عدد‬.81
:)‫خروجی زیر را نمایش میدهد‬
using System; ‫هدف‬ ‫متغمر‬
namespace p82
{ .‫ را میشمارد‬n ‫ تا‬1 ‫شمارنده سرر بین‬ i
class Program .‫عدد ورودی که از کاربر وارد میکند‬ n
{
static void Main(string[] args) .‫ را میشمارد‬n ‫ تا‬1 ‫شمارنده ستون که بین‬ j
{
int i, j, n; * * * * *
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); * * *
if (n > 80 || n < 0) *
{
Console.Write("Invalid number"); * * *
Console.ReadKey(); * * * * *
return;
}
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (i == 1 || i == n || (j >= i && i + j <= n + 1)
|| (j <= i && i + j >= n + 1))
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
}
‫فصل دوم‬ 440

‫ خروجی‬،‫ وارد شود‬n = 5 ‫ ( اگر‬.‫ خروجی زیر را نمایش میدهد‬،‫ ) را خوانده‬81 ‫ تا‬3 ‫ (بمع‬n ‫ برنامهای که عدد‬.82
:)‫زیر را نمایش میدهد‬
using System; ‫هدف‬ ‫متغمر‬
namespace p83
{ .‫ را میشمارد‬n ‫ تا‬1 ‫شمارنده سرر بین‬ i
class Program .‫ عدد ورودی که از کاربر وارد میکند‬n
{
static void Main(string[] args) .‫ را میشمارد‬n ‫ تا‬1 ‫ شمارنده ستون که بین‬j
{
int i, j, n;
Console.Write("Enter n:"); *
n = int.Parse(Console.ReadLine());
if (n > 80 || n < 0) * *
{ * * *
Console.Write("Invalid number");
Console.ReadKey(); * *
return; *
}
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (j == 1 || (j <= i && i + j <= n + 1))
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
}
444 ‫ساختار تصمیم و حلقه تکرار‬

‫ خروجی‬،‫ وارد شود‬n = 5 ‫ ( اگر‬.‫ خروجی زیر را نمایش میدهد‬،‫ ) را خوانده‬81 ‫ تا‬3 ‫ (بمع‬n ‫ برنامهای که عدد‬.83
:)‫زیر را نمایش میدهد‬
using System; ‫هدف‬ ‫متغمر‬
namespace p84
{ .‫شمارد‬ ‫می‬ ‫را‬ n ‫تا‬ 1 ‫بین‬ ‫سرر‬ ‫شمارنده‬ i
class Program .‫ عدد ورودی که از کاربر وارد میکند‬n
{
static void Main(string[] args) .‫ را میشمارد‬n ‫ تا‬1 ‫ شمارنده ستون که بین‬j
{
int i, j, n; *
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); * *
if (n > 80 || n < 0) * * *
{
Console.Write("Invalid number"); * *
Console.ReadKey(); *
return;
}
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (j == n || (j >= i && i + j >= n + 1))
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
}

‫ خروجی‬،‫ وارد شود‬n = 5 ‫ ( اگر‬.‫ خروجی زیر را نمایش میدهد‬،‫ ) را خوانده‬81 ‫ تا‬3 ‫ ( بمع‬n ‫ برنامهای که عدد‬.84
:)‫زیر را نمایش میدهد‬
using System; ‫هدف‬ ‫متغمر‬
namespace p85
{ .‫شمارد‬ ‫می‬ ‫را‬ n ‫تا‬ 1 ‫بین‬ ‫سرر‬ ‫شمارنده‬ i
class Program .‫عدد ورودی که از کاربر وارد میکند‬ n
{
static void Main(string[] args) .‫ را میشمارد‬n ‫ تا‬1 ‫شمارنده ستون که بین‬ j
{
int i, j, n;
Console.Write("Enter n:"); * * * * *
n = int.Parse(Console.ReadLine()); * * *
if (n > 80 || n < 0)
*
‫فصل دوم‬ 444

{
Console.Write("Invalid number");
Console.ReadKey();
return;
}
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (i == 1 || (j >= i && i + j <= n + 1))
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
}

‫ خروجی‬،‫ وارد شود‬n = 5 ‫ ( اگر‬.‫ خروجی زیر را نمایش میدهد‬،‫ ) را خوانده‬81 ‫ تا‬3 ‫ (بمع‬n ‫ برنامهای که عدد‬.85
:)‫زیر را نمایش میدهد‬
using System; ‫هدف‬ ‫متغمر‬
namespace p86
{ .‫ را میشمارد‬n ‫ تا‬1 ‫ شمارنده سرر بین‬i
class Program .‫ عدد ورودی که از کاربر وارد میکند‬n
{
static void Main(string[] args) .‫ را میشمارد‬n ‫ تا‬1 ‫ شمارنده ستون که بین‬j
{
int i, j, n;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
if (n > 80 || n < 0)
{
Console.Write("Invalid number"); *
Console.ReadKey();
return; * * *
} * * * * *
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (i == n || (j <= i && i + j >= n + 1))
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
}
443 ‫ساختار تصمیم و حلقه تکرار‬

.‫ حقوق خالص کارمند را حساب مینماید‬،‫ نوع کسور بممه و درصد مالمات را خوانده‬،‫ برنامه ای که حقوق کارمند‬.86
:)‫برای محاسبه حقوق خالص بهصورت زیر عمل میگردد (برای حل ایع تمریع از عملگر ؟ استفاده کنمد‬
‫ * حقوق = بممه‬1 / 311 ،‫ باشد‬3 ‫اگر نوع کسور بممه‬
‫ * حقوق = بممه‬825 / 311 ،‫ باشد‬2 ‫اگر نوع کسور بممه‬
‫ * حقوق = بممه‬31 / 311 ،‫ باشد‬1 ‫اگر نوع کسور بممه‬
‫ درصد مالمات * حقوق = مالمات‬/ 311
‫مالمات – بممه – حقوق = حقوق خالص‬
using System; ‫هدف‬ ‫متغمر‬
namespace p87
{ ‫ حقاااااوق ناخاااااالص‬salary
class Program ‫کارمند‬
{
static void Main(string[] args) ‫ مبلغ بیمه‬insurance
{ ‫ مبلغ مالیات‬tax
long salary;
double insurance = 0, tax, pay; ‫ حقوق خالص‬pay
int type, taxPer;
‫ نوع کسور بیمه‬type
Console.Write("Please enter Salary:");
salary = int.Parse(Console.ReadLine()); ‫ درصد کسور مالیات‬taxper
Console.Write( "Please enter Type :")
type = int.Parse(Console.ReadLine());
Console.Write("Please enter Tax percent:");
taxPer = int.Parse(Console.ReadLine());
tax = (double)salary * taxPer / 100;
insurance = (type == 1) ? (double)salary * 7 / 100
: insurance;
insurance = (type == 2) ? (double)salary * 8.5 / 100
: insurance;
insurance = (type == 3) ? (double)salary * 10 / 100
: insurance;
pay = salary - tax - insurance;
Console.Write( "salary is {0}\t Tax is {1}\t Insurance
is {2}\t Pay is {3}", salary, tax, insurance, pay);
Console.ReadKey();
}
}
}
‫فصل دوم‬ 443

‫ را محاسجبه مجیکنجد و نمجایش‬xy ،‫ بجا اسجتفاده از عملگجر ضجرب‬،‫ را خوانده‬y ‫ و‬x ‫ برنامهای که دو عدد صحمح‬.87
:‫میدهد‬
using System; ‫هدف‬ ‫متغمر‬
namespace p88
{ ‫منفای‬ y ‫اگار‬ ‫یاا‬ y ‫تا‬ 1 ‫از‬ ‫شمارنده‬ i
class Program -1 ‫ تا‬y ‫ از‬،‫باشد‬
{
static void Main(string[] args) ‫ عدد ورودی برای پایه‬x
{
float pow = 1; ‫ عدد ورودی برای توان‬y
int x, y, i; .‫ را نگهداری میکند‬y ‫ به توان‬x pow
Console.Write("Please enter x:");
x = int.Parse(Console.ReadLine());
Console.Write("Please enter y:");
y = int.Parse(Console.ReadLine());
if (y > 0)
for (i = 1; i <= y; i++)
pow *= x;
else
for (i = y; i <= -1; i++)
pow *= (float)1 / x;
Console.Write("{0} ^ {1} = {2}", x, y, pow);
Console.ReadKey();
}
}
}

‫ بجرای‬.‫ برنامهای که تعداد عدد را خوانده و تشخمص میدهد هر عدد خواندهشده دارای رقم صفر است یا خمر‬.88
.‫ را وارد کنمد‬-1 ‫خروج از برنامه کاربر باید‬
using System; ‫هدف‬ ‫متغمر‬
namespace p89
{ num ‫ هر ریم‬r
class Program ‫ عدد خواندهشده‬num
{
static void Main(string[] args)
{
int num=0, r;
for (; ; )
{
Console.Write("Enter a number:");
num = int.Parse(Console.ReadLine());
if (num == -1) break;
while (num>0)
{
‫‪443‬‬ ‫ساختار تصمیم و حلقه تکرار‬

‫;‪r = num % 10‬‬


‫)‪if (r == 0‬‬
‫{‬
‫;)"‪Console.WriteLine("Yes‬‬
‫;‪break‬‬
‫}‬
‫;‪num /= 10‬‬
‫}‬
‫;)"‪if (num == 0) Console.WriteLine("No‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .89‬برنامهای که خروجی زیر را نمایش میدهد‪:‬‬


‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬
‫‪namespace p90‬‬ ‫‪i‬‬
‫شمارنده از ‪ 1‬تا ‪7‬‬
‫{‬
‫‪class Program‬‬ ‫‪ down‬از ‪ 1‬شروعشاده در هار باار در‬
‫{‬ ‫حلقه در ‪ 0‬ضرب میگاردد تاا‬
‫)‪static void Main(string[] args‬‬
‫{‬ ‫ستون اول را ایجاد کند‪.‬‬
‫;‪int i, down = 1, up = 64‬‬ ‫‪ up‬از ‪ 64‬شروعشده در هر باار در‬
‫)‪for (i = 1; i <= 7; i++‬‬
‫{‬ ‫انتهای حلقاه تقسایمبار ‪ 0‬مای‪-‬‬
‫;)‪Console.WriteLine("{0}\t{1}",down, up‬‬ ‫گااردد تااا سااتون دوم را تولیااد‬
‫;‪up /= 2‬‬ ‫‪1‬‬ ‫‪64‬‬
‫;‪down *= 2‬‬ ‫کند‪.‬‬
‫}‬
‫‪2‬‬ ‫‪16‬‬
‫;)(‪Console.ReadKey‬‬ ‫‪4‬‬ ‫‪8‬‬
‫}‬ ‫‪8‬‬ ‫‪4‬‬
‫}‬ ‫‪16‬‬ ‫‪2‬‬
‫}‬ ‫‪64‬‬ ‫‪1‬‬

‫‪ .91‬برنامهای که شماره خانوار‪ ،‬هزینه روزانه آنها را بهروز میخواند‪ ،‬هزینه ماهمانه و سالمانه آنها را نمجایش مجی‪-‬‬
‫دهد‪ .‬سپس تعممع میکند کدام خانوار کمتریع هزینه و کدام خانوار بمشتریع هزینه را دارد‪ .‬برای خروج از برنامجه‬
‫بهجای شماره خانوار عدد ‪ -99‬وارد میشود‪.‬‬
‫فصل دوم‬ 444

‫هدف‬ ‫متغمر‬
‫شماره خانوار فعلی‬ id
‫هزینه روزانه‬ costday
‫شااماره خااانوار کااه‬ maxid
‫باایشتاارین هزینااه را‬
.‫دارد‬
‫شااماره خااانوار کااه‬ minid
‫کاامتاارین هزینااه را‬
.‫دارد‬
using System; ‫ بیشترین هزینه‬maxcost
namespace p91 ‫ کمترین هزینه‬mincost
{
class Program ‫ هزینه ماهیانه‬costmonth
{
static void Main(string[] args) ‫ هزینه سالیانه‬costyear
{
int id,costDay,maxId,minId,minCost, maxCost;
double costMonth, costYear;
Console.Write("Enter Id:");
id = int.Parse(Console.ReadLine());
if (id == -99) return;
Console.Write("Enter Cost :");
costDay=int.Parse(Console.ReadLine());
costMonth = costDay * 30;
costYear = costDay * 365;
maxId = minId = id;
minCost = costDay;
maxCost = costDay;
Console.WriteLine("costMonth is {0}\t costYear is {1}",
costMonth, costYear);
for (; ; )
{
Console.Write("\nEnter Id:");
id = int.Parse(Console.ReadLine());
if (id == -99) break;
Console.Write("Enter Cost :");
costDay = int.Parse(Console.ReadLine());
costMonth = costDay * 30;
costYear = costDay * 365;
maxId = minId = costDay;
Console.WriteLine("costMonth is {0}\t costYear is {1}",
costMonth, costYear);
if (maxCost < costDay)
{
maxId = id;
maxCost = costDay;
}
if (minCost > costDay)
{
minId = id;
minCost = costDay;
}
}
444 ‫ساختار تصمیم و حلقه تکرار‬

Console.Write("\nMin Id is {0}\t Min Cost {1}",


minId,minCost);
Console.Write("\nMax Id is {0}\t Max Cost {1}",
maxId, maxCost);
Console.ReadKey();
}
}
}

‫ کارمنجد را خوانجده و سجه‬n ‫ سپس ساعات اضافهکجار‬.)‫ تعداد کارمندان است‬n( ‫ را خوانده‬n ‫ برنامهای که عدد‬.91
.‫ نمایش میدهد‬،‫کارمند که کمتریع اضافهکار را دارند‬
‫هدف‬ ‫متغمر‬
‫ را‬n ‫ تاااااااا‬1 ‫شااااااامارنده از‬ i
.‫میشمارد‬
‫تعداد کارمندان‬ n
‫اضافه کار هر کارمنادی کاه از‬ extra
using System; .‫ورودی خوانده میشود‬
namespace p92
{ ‫کمترین اضافهکار‬ min1
class Program
{ ‫دومین کمترین اضافهکار‬ min2
static void Main(string[] args) ‫سومین کمترین اضافهکار‬ min3
{
int n,extra,min1=2000000,min2= 2000000, min3 = 2000000;
Console.Write( "Enter n:");
n= Convert.ToInt32 (Console.ReadLine());
if (n > 2)
{
for (int i = 1; i <= n; i++)
{
Console.Write( "Enter Extra {0}:", i);
extra= Convert.ToInt32(Console.ReadLine());
if (extra < min1)
{
min3 = min2;
min2 = min1;
min1 = extra;
‫فصل دوم‬ 444

}
else if (extra < min2)
{
min3 = min2;
min2 = extra;
}
else if (extra < min3)
min3 = extra;
}
Console.Write( "Three Minimums extra is
{0}\t{1}\t{2}", min1, min2, min3);
}
else
Console.Write( "Please Enter a number >= 3");
Console.ReadKey();
}
}
}

‫ اسجت را‬21 ‫ تا‬38 ‫ تعداد و درصد مردانی که سع آنها بمع‬،‫ برنامهای که سع و جنسمت تعدادی افراد را خوانده‬.92
‫ مرد است (برای خاتمه برنامه بجهججای‬،‫ ایع فرد‬،‫ وارد گردید‬m ‫ یا‬M ‫ اگر جنسمت‬.‫محاسبه میکند و نمایش میدهد‬
.)‫ وارد میشود‬-1 ‫سع‬
using System; ‫هدف‬ ‫متغمر‬
namespace p93
{ ‫ سن که هر دفعه میخواند‬age
class Program ‫ جنسیت‬sex
{
static void Main(string[] args) 18 ‫ تعداد مردان که سن آنها باین‬count
{
int age, count = 0; .‫ است‬01 ‫تا‬
char sex;
for (; ; )
{
Console.Write("Enter age:");
age = int.Parse(Console.ReadLine());
if (age == -1) break;
Console.Write("Enter sex:");
sex = char.Parse(Console.ReadLine());
if ((sex == 'M' || sex == 'm') && (age >= 18
&& age <= 20)) count++;
}
Console.Write("\nCount is {0}", count);
Console.ReadKey();
}
}
}
447 ‫ساختار تصمیم و حلقه تکرار‬

‫ برنامهای که ممزان سود ساالنه (درصد سجود سجاالنه) و‬.‫یک شرکت بممه به بممهگذاران خود سود ساالنه میدهد‬ .93
n ‫ممزان سرمایهگذاری یک بممهگذار و تعداد سالهای سرمایهگذاری را دریافت میکند و سود بممهگجذار را بجرای‬
‫ سجرمایه‬.)‫سال مختلف حساب مینماید (بدون پرداخت سود به بممهگذار یعنی سود بجه سجرمایه سجاالنه اضجافه گجردد‬
.‫ سال چقدر است‬n ‫بممهگذار پس از‬
‫هدف‬ ‫متغمر‬
using System;
namespace p94 ‫تعداد سالهای سرمایهگذاری‬ n
{ ‫میزان سرمایه گذری اولیه‬ capital
class Program
{ ‫ سال‬n ‫میزان سرمایه سرمایهگذار بعد از‬ totalcapital
static void Main(string[] args)
{ ‫نرخ سود ساالنه‬ ratebenefit
int n;
long capital, totalCapital, rateBenefit;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
Console.Write("Enter rateBenefit:");
rateBenefit = long.Parse(Console.ReadLine());
Console.Write("Enter capital:");
capital= long.Parse(Console.ReadLine());
totalCapital = capital;
for (int i = 1; i <= n; i++)
{
totalCapital = totalCapital + totalCapital
* rateBenefit / 100;
Console.WriteLine("Year {0} \tToatl capital {1}",
i, totalCapital);
}
Console.ReadKey();
}
}
}
‫فصل دوم‬ ‫‪440‬‬

‫‪ .94‬برنامهای که تمام اعداد چهاررقمی را نمایش میدهد که حاصلضرب ارقام آنها عدد تام (کامل) است‪ .‬عددی‬
‫تام است که مجموع مضربهای اعداد کوچکتر از خودش برابر خودش باشد‪ .‬بهعنوانمثال‪ ،‬دو عدد زیر تام هستند‪:‬‬
‫‪6=1+2+3‬‬ ‫‪28 = 1 + 2 + 4 + 7 + 14‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬
‫‪namespace p95‬‬
‫{‬ ‫شمارنده از ‪ 1111‬تا ‪ 9999‬میشمارد‪.‬‬ ‫‪i‬‬
‫‪class Program‬‬ ‫هر بار مقدار ‪ i‬را میگیرد تا تعیاین شاود کاه آیاا‬ ‫‪num‬‬
‫{‬
‫)‪static void Main(string[] args‬‬ ‫حاصزضرب اریام آن تام است یا خیر؟‬
‫{‬
‫;‪int num, r, i, sum = 0, p‬‬ ‫هر بار ریم یکان ‪( num‬تا ‪ num‬صفر گردد)‪.‬‬ ‫‪r‬‬
‫)‪for (i=1000;i<=9999;i++‬‬ ‫‪p‬‬
‫حاصزضرب اریام ‪num‬‬
‫{‬
‫;‪num = i‬‬ ‫‪ sum‬مجموع مقسومعلیههای عدد ‪p‬‬
‫;‪p = 1‬‬
‫)‪while (num>0‬‬ ‫‪ j‬شمارنده که از ‪ 1‬تا ‪ p-1‬میشمارند‪.‬‬
‫{‬
‫;‪r = num % 10‬‬
‫;‪p *= r‬‬
‫;‪num /= 10‬‬
‫}‬
‫;‪sum = 0‬‬
‫)‪for (int j = 1; j < p; j++‬‬
‫{‬
‫;‪if (p % j == 0) sum += j‬‬
‫}‬
‫;)‪if (p == sum && p != 0) Console.Write("{0}\t", i‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .95‬برنامهای که تعداد رقمهای صفر اعداد چهاررقمی را میشمارد‪.‬‬


‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬
‫‪namespace p96‬‬
‫{‬ ‫شمارد‪.‬‬ ‫می‬ ‫‪9999‬‬ ‫تا‬ ‫‪1111‬‬ ‫از‬ ‫شمارنده‬ ‫‪i‬‬
‫‪class Program‬‬ ‫‪ num‬مقدار عدد چهارریمی (‪ )i‬در هر بار حلقه‬
‫{‬
‫)‪static void Main(string[] args‬‬ ‫‪ r‬ریم یکان ‪ num‬در هر بار‬
‫{‬
‫;‪int num, r, i, count = 0‬‬ ‫‪ count‬تعداد اریام صفر‬
‫)‪for (i = 1000; i <= 9999; i++‬‬
‫{‬
‫;‪num = i‬‬
‫)‪while (num>0‬‬
‫{‬
‫;‪r = num % 10‬‬
‫;‪if (r == 0) count++‬‬
‫;‪num /= 10‬‬
‫‪444‬‬ ‫ساختار تصمیم و حلقه تکرار‬

‫}‬
‫}‬
‫‪Console.WriteLine("Count is‬‬ ‫;)‪{0}", count‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .96‬برنامهای که سه عدد را خوانده‪ ،‬اعداد بمع اعداد اول و دوم که مجموع ارقام آنها برابجر عجدد سجوم باشجد را‬
‫نمایش میدهد‪ .‬بهعنوانمثال‪ ،‬اگر کاربر ‪ 3111 ،5‬و ‪ 35‬را وارد کند‪ .‬برنامه باید اعداد از ‪ 5‬تا ‪ 3111‬که مجموع ارقجام‬
‫آنها برابر ‪ 35‬باشد را نمایش دهد‪.‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬
‫‪namespace p97‬‬
‫{‬ ‫‪ n1‬عدد اول‬
‫‪class Program‬‬ ‫‪ n2‬عدد دوم‬
‫{‬
‫)‪static void Main(string[] args‬‬ ‫‪ n3‬عدد سوم‬
‫{‬
‫;‪int num, r, i, sum = 0, n1, n2, n3‬‬ ‫‪ i‬شمارنده از ‪ n1‬تا ‪ n2‬میشمارد‪.‬‬
‫;)"‪Console.Write("Enter number1:‬‬
‫;))(‪n1=int.Parse(Console.ReadLine‬‬
‫‪ num‬مقااادار ‪ i‬در حلقاااه تکااارار (هااار‬
‫;)"‪Console.Write("Enter number2:‬‬ ‫باریکی از اعداد ‪ n1‬تا ‪)n2‬‬
‫;))(‪n2=int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter number3:‬‬ ‫‪ r‬ریم یکان ‪num‬‬
‫;))(‪n3=int.Parse(Console.ReadLine‬‬ ‫‪ sum‬مجموع اریام ‪num‬‬
‫;)" ‪Console.Write(" Numbers are‬‬
‫)‪for (i = n1; i <= n2; i++‬‬
‫{‬
‫;‪num = i‬‬
‫;‪sum = 0‬‬
‫)‪while (num>0‬‬
‫{‬
‫;‪r = num % 10‬‬
‫;‪sum += r‬‬
‫;‪num /= 10‬‬
‫}‬
‫)‪if (sum == n3‬‬
‫;)‪Console.Write("\t{0}", i‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .97‬برنامه ای که دو عدد را خوانده‪ ،‬اعداد اولی که بمع ایع دو عدد قرار دارند را نمجایش مجیدهجد (عجددی اول‬
‫است که بر همچ عدد کوچکتر از نصف خودش به جزء یک بخشپذیر نباشد)‪.‬‬
‫فصل دوم‬ 444

‫هدف‬ ‫متغمر‬
.‫ را میشمارد‬n2 ‫ تا‬n1 ‫شمارنده از‬ i
using System; ‫عدد اول خواندهشده‬ n1
namespace p98
{ ‫عدد دوم خواندهشده‬ n2
class Program
{ ‫ باه‬،1( ‫تعیین اینکه عدد اول است یا ناه‬ prime
static void Main(string[] args) ‫معناای اول بااودن و صاافر بااه معناای اول‬
{
int i, n1, n2, prime; )‫نبودن‬
Console.Write("Enter number1:");
n1 = int.Parse(Console. ReadLine()); ‫ را‬0 ‫ تقسایمبار‬i ‫ تاا‬0 ‫شمارندهای کاه از‬ j
Console.Write("Enter number2:"); .‫میشمارد‬
n2 = int.Parse(Console.ReadLine());
for (i = n1; i <= n2; i++)
{
prime = 1;
for (int j = 2; j < (int)i / 2; j++)
if (i % j == 0)
{
prime = 0;
break;
}
if (prime==1) Console.Write("\t{0}", i);
}
Console.ReadKey();
}
}
}

.‫ بخشپذیر هستند را نمایش میدهد‬1 ‫ یا‬2 ‫ برنامهای که یک عدد صحمح را خوانده و ارقامی از آن عدد که بر‬.98
using System; ‫هدف‬ ‫متغمر‬
namespace p99
{ ‫عدد خواندهشده‬ n
class Program n ‫در هر مرحله ریم یکان‬ r
{
static void Main(string[] args)
{
long n;
int r;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
while (n > 0)
{
r = (int)(n % 10);
if ((r % 2 == 0 || r % 3 == 0) && r != 0)
‫‪443‬‬ ‫ساختار تصمیم و حلقه تکرار‬

‫;)‪Console.Write("{0}\t", r‬‬
‫;‪n /= 10‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .99‬هنگام خرید خانه عوامل مختلفی را باید در نظر گرفت‪ .‬در هنگام خرید خانه‪ ،‬ممزان هزینه تقریبی سوختی کجه‬
‫برای یک سال مصرف میشود و نرخ مالمات ساالنه دادهشدهاند‪ .‬برنامهای که دادههایی از قبمل قممجت خانجه‪ ،‬هزینجه‬
‫سوخت ساالنه و مالمات ساالنه را دریافت میکند‪ .‬ایع برنامه هزینه ‪ 31‬ساله خانه را محاسبه مینماید‪ .‬برنامه تا زمانی که‬
‫کاربر بهجای قممت خانه ‪ -999‬وارد کند‪ ،‬ادامه مییابد‪.‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬
‫‪namespace p100‬‬
‫{‬ ‫شمارنده که از ‪ 1‬تا ‪ 11‬میشمارد‪.‬‬ ‫‪i‬‬
‫‪class Program‬‬ ‫‪ cost‬ییمت فعلی خانه‬
‫{‬
‫)‪static void Main(string[] args‬‬ ‫‪ tax‬نرخ مالیات‬
‫{‬
‫;‪int i‬‬ ‫‪ haz‬هزینه ساالنه خانه‬
‫;‪long cost, tax, haz, sum‬‬
‫)‪while (1==1‬‬
‫‪ sum‬مجموع هزینه بعد از ‪ 11‬سال‬
‫{‬
‫;)"‪Console.Write("Enter cost:‬‬
‫;))(‪cost = long.Parse(Console.ReadLine‬‬
‫;‪if (cost == -999) break‬‬
‫;)"‪Console.Write("Enter tax:‬‬
‫;))(‪tax = long.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter hazeneh:‬‬
‫;))(‪haz = long.Parse(Console.ReadLine‬‬
‫;‪sum = 0‬‬
‫)‪for (i = 1; i <= 10; i++‬‬
‫;‪sum += cost * tax / 100 + haz‬‬
‫;) ‪Console.WriteLine("Hazeneh for 10 years {0}",sum‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫فصل دوم‬ ‫‪443‬‬

‫برنامهای که عدد ‪ n‬را خوانده‪ ،‬مقدار ⋯ ‪ √𝒏 + √𝒏 + √𝒏 +‬را تا دقت ‪ 31-31‬محاسبه میکنجد و نمجایش‬ ‫‪.111‬‬
‫میدهد‪.‬‬
‫هدف‬ ‫متغمر‬
‫;‪using System‬‬ ‫دیت ‪11‬‬ ‫‪-11‬‬ ‫‪e‬‬
‫‪namespace p101‬‬ ‫عدد خواندهشده‬ ‫‪n‬‬
‫{‬
‫‪class Program‬‬ ‫حاصز عبارت در هر مرحله ⋯ ‪√𝑛 + √𝑛 +‬‬ ‫‪s‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪double e = 10e-10, s, n‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = double.Parse(Console.ReadLine‬‬
‫;)‪s = Math.Sqrt(n‬‬
‫‪do‬‬
‫{‬
‫;)‪s = Math.Sqrt(s+n‬‬
‫;)‪} while (Math.Abs (s - Math.Sqrt(s + n)) >= e‬‬
‫;)‪Console.WriteLine( "Result is {0}", s‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .111‬در یک بازی دونفره ‪ n‬چوبکبریت وجود دارد‪ .‬هر یک از بازیکنان میتوانند در نوبت خود‪ 2 ،3 ،‬یا حداکثر‬
‫‪ 1‬چوبکبریت را بردارند‪ .‬بازیکنی که آخریع چوبکبریت را برمیدارد‪ ،‬بازنده است‪ .‬برنامهای که ایع بازی را بجمع‬
‫دو بازیکع اجرا میکند‪ .‬ایع برنامه‪ ،‬ابتدا تعداد چوبکبریتها را خوانده و در هر مرحله تعداد چجوبکبریجتهجای‬
‫باقیمانده را نمایش میدهد‪.‬‬
‫هدف‬ ‫متغ‬
‫;‪using System‬‬ ‫یر‬
‫‪namespace p102‬‬ ‫تعداد چوبکبریتهای خوانادهشاده و‬ ‫‪n‬‬
‫{‬
‫‪class Program‬‬ ‫تعداد چوبکبریتهای باییمانده‬
‫{‬ ‫تعداد چوبکبریاتهاایی کاه باازیکن‬ ‫‪a‬‬
‫)‪static void Main(string[] args‬‬
‫{‬ ‫اول برمیدارد‪.‬‬
‫;‪int n, a, b‬‬
‫;)"‪Console.Write("Enter n:‬‬ ‫کن‬ ‫ی‬ ‫بااز‬ ‫کاه‬ ‫یی‬ ‫هاا‬ ‫ت‬ ‫یا‬ ‫کبر‬ ‫تعداد چوب‬ ‫‪b‬‬
‫;))(‪n= int.Parse(Console.ReadLine‬‬ ‫دوم برمیدارد‪.‬‬
‫)‪while (n != 0‬‬
‫{‬
‫;)"‪Console.Write("\nEnter a:‬‬
‫;))(‪a = int.Parse(Console.ReadLine‬‬
‫;‪n = n - a‬‬
‫)‪if (n != 0‬‬
‫;)‪Console.Write( " {0}", n‬‬
‫‪else‬‬
‫{‬
‫;)"‪Console.Write( " B Win\n‬‬
‫;‪break‬‬
443 ‫ساختار تصمیم و حلقه تکرار‬

}
Console.Write( "\nEnter b:");
b = int.Parse(Console.ReadLine());
n = n - b;
if (n != 0)
Console.Write( " {0}", n);
else
{
Console.Write( "A Win\n");
break;
}
}
Console.ReadKey();
}
}
}

-‫ را نمایش می‬Big Character! ‫ پمغام‬،‫ را ورد کند‬D ‫ و‬C ،B ،A ‫ برنامهای که اگر کاربر هر یک از حروف‬.112
‫ ولجی اگجر‬.‫ را نمجایش خواهجد داد‬Litter character! ،‫ را وارد کنجد‬d ‫ یا‬c ،b ،a ‫ اگر کاربر یکی از حروف‬.‫دهد‬
‫ وگرنجه پمغججام‬.‫ را نمجایش مجیدهجد‬A Figurer! ‫ پمغججام‬،‫ را وارد نمایجد‬0 ‫ یجا‬2،1 ،3 ‫کجاربر یکجی از کجاراکترهجای‬
.)‫ است‬switch ‫ کردن مقادیر در دستور‬or ‫ را نمایش میدهد (هدف ایع برنامه‬Unknown Character!
using System;
namespace p103
{
class Program
{
static void Main(string[] args)
{
char a;
Console.Write("Enter your selected character ! : ");
a = char.Parse(Console.ReadLine());
switch (a)
{
case 'A':
case 'B':
case 'C':
case 'D':
Console.Write("Big character ! ");
break;
case '1':
case '2':
case '3':
case '4':
Console.Write(" A figure ! ");
break;
case 'a':
‫فصل دوم‬ 444

case 'b':
case 'c':
case 'd':
Console.Write(" little character ! ");
break;
default:
Console.Write("unknown character ! ");
break;
}
Console.ReadKey();
}
}
}

:‫برنامهای که خروجی زیر نمایش میدهد‬ .113


using System; ‫هدف‬ ‫متغمر‬
namespace p104
{ ‫سرر‬ ‫شمارنده‬ i
class Program ‫ شمارنده ستون‬j
{
static void Main(string[] args)
{
for (int i = 20; i > 0; i--)
{
for (int j = 0; j < i; j++)
Console.Write(" ");
Console.WriteLine("**************");
}
Console.ReadKey();
}
}
}

:‫ خروجی مانند زیر نمایش را میدهد‬،‫ را خوانده‬n ‫برنامهای که‬ .114


‫‪444‬‬ ‫ساختار تصمیم و حلقه تکرار‬

‫;‪using System‬‬ ‫هدف‬ ‫متغمر‬


‫‪namespace p105‬‬
‫{‬ ‫عدد خواندهشده‬ ‫‪n‬‬
‫‪class Program‬‬
‫{‬ ‫شمارنده سرر‬ ‫‪i‬‬
‫)‪static void Main(string[] args‬‬ ‫شمارنده ستون‬ ‫‪j‬‬
‫{‬
‫;‪int n‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬
‫)‪for (int i = 1; i <= n; i++‬‬
‫{‬
‫)‪for (int j = 1; j <= n; j++‬‬
‫;)" " (‪Console.Write‬‬
‫)‪for (int j = 1; j <= i; j++‬‬
‫;)"*" (‪Console.Write‬‬
‫;)(‪Console.WriteLine‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .310‬برنامه ای که سجه ضجلع مثلجث را خوانجده و مشجخص مجی کنجد کجه آیجا مثلجث متسجاویاالضجالع ‪،P‬‬
‫متساویالساقمع است یا مختلفاالضالع میباشد (در ایع برنامه متغمرهای ‪ b ،a‬و ‪ c‬اضالع مثلث را نگهداری‬
‫میکنند)‪.‬‬
‫فصل دوم‬ 444

using System;
namespace p106
{
class Program
{
static void Main(string[] args)
{
double a, b, c;
Console.Write("Enter a:");
a=double.Parse(Console.ReadLine());
Console.Write("Enter b:");
b=double.Parse(Console.ReadLine());
Console.Write("Enter c:");
c=double.Parse(Console.ReadLine());
if (a == b && a == c)
Console.WriteLine(" a == b === c ");
else if (a == b || a == c || b == c)
Console.WriteLine("a == b || a == c || b == c");
else
Console.Write("a != b != c" );
Console.ReadKey();
}
}
}

‫ وگرنه محمط آن‬،‫ مساحت آن‬،‫ اگر مثلث قائمالزاویه بود‬،‫ برنامه ای که سه ضلع مثلث را دریافت کرده‬.311
‫ امجا‬،‫ اضالع مثلث را نگهداری میکنند‬c ‫ و‬b ،a ‫ در ایع برنامه متغمرهای‬.‫را محاسبه کرده و نمایش میدهد‬
.‫ کمکی است که محمط یا مساحت را ذخمره مینماید‬temp ‫متغمر‬
using System;
namespace p107
{
class Program
{
static void Main(string[] args)
{
double a, b, c, temp;
Console.Write("Enter a:");
a = double.Parse(Console.ReadLine());
Console.Write("Enter b:");
b = double.Parse(Console.ReadLine());
Console.Write("Enter c:");
c = double.Parse(Console.ReadLine());
if (a * a == b * b + c * c)
temp = b * c / 2;
else if (b * b == a * a + c * c)
temp = a * c / 2;
else if (c * c == a * a + b * b)
temp = a * b / 2;
else
temp = a + b + c;
Console.WriteLine ("Result is {0}", temp);
Console.ReadKey();
}
447 ‫ساختار تصمیم و حلقه تکرار‬

}
}

‫ برنامهای که کاراکتری را خوانده و مشخص میکند که در کدامیک از دستههای زیر قرار دارد؟‬.318
‫ سایر کاراکترها‬ ‫ ارقام‬ ‫ حروف صدادار‬ ‫ حروف بیصدا‬
using System;
namespace p108
{
class Program
{
static void Main(string[] args)
{
char ch;
Console.Write("Enter a char:");
ch = char.Parse(Console.ReadLine());
if (ch == 'a' || ch == 'e' || ch == 'i' ||
ch == 'o' || ch == 'u' || ch == 'y'
|| ch == 'A' || ch == 'E' || ch == 'I' ||
ch == 'O' || ch == 'U' || ch == 'Y')
Console.WriteLine("Sound char");
else if (ch >= 'a' && ch <= 'z' ||
ch >= 'A' && ch <= 'Z')
Console.WriteLine("Not sound char");
else if (ch >= '0' && ch <= '9')
Console.WriteLine("Digit char");
else
Console.WriteLine("Others");
Console.ReadKey();
}
}
}

.)‫ کاراکتری است که از ورودی خوانده میشود‬ch ‫(در این برنامه‬


‫ و‬x ‫ در ایجع برنامجه‬.‫ برنامهای که دو عدد صحمح را خوانده و مقسومعلمه مشترکشان را نمایش میدهد‬.319
.‫ میباشد‬x ‫ تا‬3 ‫ شمارنده از‬i ‫ دو عدد هستند و‬y
using System;
namespace p109
{
class Program
{
static void Main(string[] args)
{
int i, x, y;
Console.Write("Enter x:");
x = int.Parse(Console.ReadLine());
Console.Write("Enter y:");
y = int.Parse(Console.ReadLine());
for (i = 1; i <= x; i++)
‫فصل دوم‬ ‫‪440‬‬

‫)‪if (x % i == 0 && y % i == 0‬‬


‫;)‪Console.Write("{0}\t",i‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .331‬برنامهای که ابتدا ‪ n‬را خوانده‪ ،‬سپس ‪ n‬معدل را برای ‪ n‬دانشججو مجیخوانجد و بجزرگتجریع معجدل‬
‫مشروط را نمجایش مجیدهجد‪ .‬در ایجع برنامجه ‪ ،n‬تعجداد دانشججویان‪ ،grade ،‬معجدل هجر دانشججو و ‪max‬‬
‫بزرگتریع معدل مشروط شده است‪.‬‬
‫;‪using System‬‬
‫‪namespace p110‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int n, i‬‬
‫;‪float grade, max = 0‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬
‫;)‪Console.Write("Enter {0} grades:", n‬‬
‫)‪for (i = 1; i <= n; i++‬‬
‫{‬
‫;))(‪grade = int.Parse(Console.ReadLine‬‬
‫)‪if (grade < 12 && grade > max‬‬
‫;‪max = grade‬‬
‫}‬
‫;)‪Console.Write(max‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .333‬برنامهای که معدل ‪ n‬دانشجو را خوانده‪ ،‬ممانگمع معدلهای باالتر از ‪ 35‬را نمایش مجیدهجد‪ .‬در ایجع‬
‫برنامه ‪( n‬تعداد دانشجویان)‪( grade ،‬معدل هجر دانشججو)‪( sum ،‬مجمجوع معجدلهجای بجاالی ‪count ،)35‬‬
‫(تعداد معدلهای باالی ‪ )35‬و ‪( i‬شمارنده) است‪.‬‬
444 ‫ساختار تصمیم و حلقه تکرار‬

using System;
namespace p111
{
class Program
{
static void Main(string[] args)
{
int n, i, count = 0;
float grade, sum = 0;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());;
for (i = 1; i <= n; i++)
{
Console.Write("Enter a grade:");
grade = float.Parse(Console.ReadLine());
if (grade > 15)
{
sum += grade;
count++;
}
}
if (count > 0) Console.WriteLine((sum / count));
Console.ReadKey();
}
}
}

:‫ نمایش میدهد‬،‫ رقم اعشار محاسبه کرده‬0 ‫ برنامهای که حاصل سری زیر را تا‬.332
1 1 1 1 1 1
          
2  2 3  2 3 4
using System;
namespace p112
{
class Program
{
static void Main(string[] args)
{
double sum = 0, mul = 1, sign = 1.0;
int i = 2;
while (mul >= 1e-4)
{
mul *= 1.0 / i;
sum += sign * mul;
sign = -sign;
i++;
}
Console.WriteLine("Result is {0}", sum);
Console.ReadKey();
}
‫فصل دوم‬ ‫‪444‬‬

‫}‬
‫}‬
‫در این برنامه متغیرهای ‪( mul‬حاصزضرب سری)‪( sum ،‬مجموع ساری)‪( sign ،‬عالمات یکای در میاان‬
‫مثبت و منفی) و ‪( i‬شمارنده) هستند‪.‬‬

‫‪ .331‬برنامهای که ابتدا تعداد دانشجویان )‪ (n‬را خوانده‪ ،‬سپس ‪ n‬معدل را میخواند و تعجداد دانشججوهایی‬
‫که معدل آنها بمع ‪ 31‬تجا ‪ 35‬اسجت را شجمارش مجیکنجد و نمجایش مجیدهجد‪ .‬در ایجع برنامجه ‪( n‬تعجداد‬
‫دانشجویان)‪( grade ،‬معدل هر دانشجو)‪( i ،‬شمارنده) و ‪( count‬تعداد دانشجویانی که معدل آنها بجمع ‪31‬‬
‫تا ‪ )35‬است‪.‬‬
‫;‪using System‬‬
‫‪namespace p113‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int n, i, count = 0‬‬
‫;‪float grade=0‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫; ;))(‪n = int.Parse(Console.ReadLine‬‬
‫)‪for (i = 1; i <= n; i++‬‬
‫{‬
‫;)"‪Console.Write("Enter a grade:‬‬
‫;))(‪grade = float.Parse(Console.ReadLine‬‬
‫)‪if (grade < 15 && grade > 10‬‬
‫{‬
‫;‪count++‬‬
‫}‬
‫}‬
‫;)‪Console.WriteLine( count‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .330‬برنامهای که ابتدا ‪ n‬را خوانده‪ ،‬سپس ‪ n‬جمله سری زیر را نمایش میدهد‪ .‬در ایع سری زیر جملجهی‬
‫سوم به بعد هر جمله ممانگمع دو جمله قبلی میباشد‪.‬‬
‫… ‪1, 5, 3, 4, 3.5,‬‬
‫;‪using System‬‬
‫‪namespace p114‬‬
443 ‫ساختار تصمیم و حلقه تکرار‬

{
class Program
{
static void Main(string[] args)
{
int n, i;
float first = 1, last = 5, current = 0;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); ;
Console.Write( "{0}, {1}",first, last);
for (i = 3; i <= n; i++)
{
current = (first + last) / 2;
Console.Write(", {0}", current);
first = last;
last = current;
}
Console.ReadKey();
}
}
}
current ‫ (عادد یبلای) و‬last ،)‫ (دو عدد یبلی‬first ،)‫ (شمارنده‬i ،)‫ (تعداد جمالت سری‬n ‫در این برنامه‬
.‫(عدد فعلی) است‬

.‫ عدد را میخواند و واریانس آن را نمایش میدهد‬n ‫ سپس‬،‫ را خوانده‬n ‫ برنامهای که ابتدا‬.335


using System;
namespace p115
{
class Program
{
static void Main(string[] args)
{
int n, i;
float x = 0, sum1 = 0, sum2 = 0, var = 0;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); ;
for (i = 1; i <= n; i++)
{
Console.Write("Enter a number:");
x = float.Parse(Console.ReadLine()); ;
sum1 = (x * x);
sum2 += x;
}
var = 1.0f/n*sum1- (1.0f/ n * sum2) * (1.0f / n * sum2);
Console.Write( "Var is {0}", var);
Console.ReadKey();
}
}
}
‫فصل دوم‬ 443

‫ چه ماه و چهه روزی از‬،‫ مشخص میکند که چه فصلی‬،‫ برنامهای که روزی از سال را خوانده‬:1 ‫پروژه برنامهنویسی‬
.‫ ماه اردیبهشت و روز چهارم این ماه است‬،‫ فصل بهار‬،‫ سال‬53 ‫ روز‬،‫ بهعنوانمثال‬.‫سال است‬
using System; ‫هدف‬ ‫متغمر‬
namespace Project1
{ ‫سال‬ ‫مانده‬ ‫بایی‬ ‫ادامه‬ ‫و‬ ‫سال‬ ‫روز‬ ‫ابتدا‬ day
class Program ‫ ماه به دست آماده‬month
{
static void Main(string[] args) ‫ تعداد ماههای یبز از مهر یا بعد از مهر‬count
{
int day, month, count;
Console.Write("Enter number of a day: ");
day = int.Parse (Console.ReadLine());
if (day < 1 || day > 365)
{
Console.Write("Day should be between 1 and 365)");
Console.ReadKey();
return;
}
month = day / 31;
if (month > 6)
month = 6;
day -= month * 31;
if (day != 0)
{
count = day / 30;
month += count + 1;
day -= count * 30;
}
else
day = 31;
if (day == 0)
{
day = 30;
month--;
}
Console.Write("\nday {0} of {1}th month ", day, month);
switch (month)
{
case 1:
Console.Write("(Farvardin)");
break;
case 2:
Console.Write("(Ordibehesht)");
break;
case 3:
Console.Write("(Khordad)");
break;
443 ‫ساختار تصمیم و حلقه تکرار‬

case 4:
Console.Write("(Tir)");
break;
case 5:
Console.Write("(Mordad)");
break;
case 6:
Console.Write("(Shahrivar)");
break;
case 7:
Console.Write("(Mehr)");
break;
case 8:
Console.Write("(Aban)");
break;
case 9:
Console.Write("(Azar)");
break;
case 10:
Console.Write("(Day)");
break;
case 11:
Console.Write("(Bahman)");
break;
case 12:
Console.Write("(Esfand)");
break;
}
Console.Write(" of season ");
if (month > 9) Console.Write("Winter");
else if (month > 6) Console.Write("Autumn");
else if (month > 3) Console.Write("Summer");
else Console.Write("Spring");
Console.ReadKey();
}
}
}

.‫ حاصل سری زیر را محاسبه میکند‬،‫ را خوانده‬n ‫ و‬x ‫ برنامهای که‬:2 ‫پروژه برنامهنویسی‬
𝐧 𝐱 𝒏+𝒙 𝐧
𝐱 𝐧 (𝒙 + 𝒏) 𝐱 𝐢 𝐢𝐱

𝐧! 𝐱! (𝐧 + 𝐱)! 𝐧! 𝐢! (𝐧 + 𝐢)!
𝐢=𝟏
‫هدف‬
‫داده ورودی‬ x
‫داده ورودی‬ n
‫شمارنده‬ i
‫شمارنده‬ j
n ‫ به توان‬x p1
x ‫ به توان‬n p2
‫فصل دوم‬ 474

using System; x + n ‫ به توان‬x+n p3


namespace Project2
{ )n!( n ‫فاکتوریز‬ f1
class Program
{ )x!( x ‫فاکتوریز‬ f2
static void Main(string[] args) (x + n) ‫فاکتوریز‬ f3
{
int x, n; ∑ ‫مجموع سری‬ sum
Console.Write("Enter x:");
x=int.Parse(Console.ReadLine()); ; i ‫ به توان‬x p4
Console.Write("Enter n:");
n= int.Parse(Console.ReadLine()); x ‫ به توان‬i p5
double p1 = 1; )n!( n ‫فاکتوریز‬ f4
for (int i = 1; i <= n; i++)
p1 = p1 * x; )i!( i ‫فاکتوریز‬ f5
double p2 = 1;
for (int i = 1; i <= x; i++) ((n+i)!) n + i ‫فاکتوریز‬ f6
p2 = p2 * n;
double p3 = 1; ∑ ‫حاصزضرب یبز از‬ result1
for (int i = 1; i <= x + n; i++) ‫حاصز کز سری‬ result
p3 = p3 * (x + n);
double f1 = 1;
for (int i = 1; i <= n; i++)
f1 = f1 * i;
double f2 = 1;
for (int i = 1; i <= x; i++)
f2 = f2 * i;
double f3 = 1;
for (int i = 1; i <= x + n; i++)
f3 = f3 * i;
double result1=(p1*p2*p3)/(f1*f2* f3);
double sum = 0;
for (int i = 1; i <= n; i++)
{
double p4 = 1;
for (int j = 1; j <= i; j++)
p4 = p4 * x;
double p5 = 1;
for (int j = 1; j <= x; j++)
p5 = p5 * i;
double f4 = 1;
for (int j = 1; j <= n; j++)
f4 = f4 * j;
double f5 = 1;
for (int j = 1; j <= i; j++)
f5 = f5 * j;
double f6 = 1;
for (int j = 1; j <= n + i; j++)
f6 = f6 * j;
sum = sum + (p4 * p5) / (f4 * f5 * f6);
}
double result = result1 * sum;
Console.Write ("Result is {0}",result);
Console.ReadKey();
}
}
}
‫‪474‬‬ ‫ساختار تصمیم و حلقه تکرار‬

‫پروژه برنامهنویسی ‪ :5‬شرکت مخابرات ایران برای مکالمات راه دور از نرخهای زیر استفاده میکند‪:‬‬
‫تمام مکالماتی که بین ساعات ‪ 25‬شب تا ‪ 8‬صبح انجام میشود‪ ،‬نرخ مکالمات ‪ %50‬محاسبه میگردد‪.‬‬
‫برای مکالماتی که در روزهای تعطیل (روز ‪ )7‬انجام میشود‪ ،‬نرخ مکالمه ‪ 73‬درصد محاسبه میشود‪.‬‬
‫برای بقیه ساعات روزهای دیگر مکالمه بهطور کامل حساب میشود‪.‬‬
‫نرخ هر پالس ‪ 64‬ریال میباشد‪.‬‬
‫به کلیه مکالمات ‪ 6‬درصد مالیات تعلق میگیرد‪.‬‬
‫برنامهای که برای تعدادی مشترک‪ ،‬ساعت شروع مکالمه (از ساعت صفرتا ‪ ،)25‬تعداد پالسهای مکالمه‪ ،‬روز انجام‬
‫مکالمه را دریافت می کند‪ ،‬مبلغ ناخالص مکالمه‪ ،‬مالیات‪ ،‬مبلغ خالص‪ ،‬مجموع مالیات و مجموع مبلغ خاص را محاسبه‬
‫و نمایش میدهد (برای خاتمه کاربر بهجای ساعت شروع ‪ -99‬را وارد نماید)‪.‬‬
‫هدف‬ ‫متغمر‬
‫زمان شروع مکالمه‬ ‫‪sTime‬‬
‫تعداد پالس‬ ‫‪Pulse‬‬
‫روز مکالمه‬ ‫‪Day‬‬
‫هزینه مکالمه‬ ‫‪Cost‬‬
‫مالیات‬ ‫‪Tax‬‬
‫;‪using System‬‬
‫‪namespace Project3‬‬ ‫‪ Billing‬مبلاااغ صاااورتحسااااب هااار‬
‫{‬
‫‪class Program‬‬ ‫مکالمه‬
‫{‬ ‫‪ sumTax‬مجموع مالیات‬
‫)‪static void Main(string[] args‬‬
‫{‬ ‫‪ sumBilling‬مجموع صورتحساب‬
‫;‪int sTime, pulse, day‬‬
‫;‪double cost, tax, billing, sumTax = 0, sumBilling = 0‬‬
‫) ; ;( ‪for‬‬
‫{‬
‫;)"‪Console.Write("Enter start time:‬‬
‫;))(‪sTime = int.Parse(Console .ReadLine‬‬
‫;‪if (sTime == -99) break‬‬
‫;)" ‪Console.Write("Enter Pulse:‬‬
‫;))(‪pulse = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter Day:‬‬
‫;))(‪day= int.Parse(Console.ReadLine‬‬
‫))‪if ((sTime == 23) || (sTime >= 0 && sTime <= 8‬‬
‫;‪cost = pulse * 46 * 0.5‬‬
‫‪else‬‬
‫;‪cost = pulse * 46‬‬
‫;‪if (day == 7) cost = cost * 0.75‬‬
‫;‪tax = cost * 0.04‬‬
‫;‪billing = cost - tax‬‬
‫‪Console.WriteLine(" Cost is {0} \t Tax is {1}\t‬‬
‫;) ‪Billing is {2}", cost, tax, billing‬‬
‫;‪sumTax += tax‬‬
‫;‪sumBilling += billing‬‬
‫}‬
‫فصل دوم‬ ‫‪474‬‬

‫‪Console.Write(" Sum Tax is {0} \t Sum Billing is {1}",‬‬


‫;)‪sumTax, sumBilling‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫پروژه برنامهنویسی ‪ :6‬نرخ هر مترمکعب آب با توجه به نرخ مصرف از قبیل مصارف خانگی‪ ،‬تجاری یا صنعتی فهر‬
‫میکند‪ .‬برنامهای که میزان مصرف آب به مترمکعب و نوع مصرف تعدادی مشترک را خوانده‪ ،‬مبلغ صهورتحسهاب آب‬
‫آنها را محاسبه و چاپ میکند‪ .‬برای محاسبه مصرف صورتحساب آب به روش زیر عمل مینماید‪:‬‬
‫اگر نوع مصرف حرف ‪ H‬یا ‪ h‬باشد (مصرف خانگی)‪ ،‬به ازای هر ‪ 111‬مترمکعب مصرف ‪ 311‬ریال دریافت میشود‪.‬‬
‫اگر نوع مصرف حرف ‪ I‬یا ‪ i‬وارد شود (مصرف صنعتی تا چهار میلیون مترمکعب)‪ ،‬به ازای هر ‪ 1111‬مترمکعهب آب‬
‫‪ 731‬ریال و به ازای هر مترمکعب بیش از آن ‪ 1/11123‬به مبلغ قبض اضافه میگردد‪.‬‬
‫اگر نوع مصرف ‪ E‬یا ‪ e‬وارد شود (مصرف تجاری)‪ ،‬درصورتیکه مصرف آب تا دو میلیون مترمکعب باشد‪ ،‬بهه ازای‬
‫هر ‪ 1311‬مترمکعب مصرف ‪ 411‬ریال و به ازای هر مترمکعب بیش از دو میلیون ‪ 1/11116‬به مبلغ صورتحساب اضهافه‬
‫خواهد شد‪.‬‬
‫برای خاتمه برنامه کاربر بهجای مصرف آب‪ ،‬عدد منفی وارد مینماید‪.‬‬
‫;‪using System‬‬ ‫هدف‬
‫‪namespace Project4‬‬
‫{‬ ‫میزان مصرف آب‬ ‫‪rateConsu‬‬
‫‪class Program‬‬ ‫‪mpoint‬‬
‫{‬ ‫ناااوع مصااارف (خاااانگی‪ ،‬تجااااری‪،‬‬ ‫‪Type‬‬
‫)‪static void Main(string[] args‬‬ ‫صنعتی)‬
‫{‬
‫;‪double rateConsumpoint, billing=0‬‬ ‫مبلغ صورتحساب‬ ‫‪Billing‬‬
‫;‪char type‬‬
‫) ;;( ‪for‬‬
‫{‬
‫;)"‪Console.Write("Enter the Rate of consumpoit:‬‬
‫;))(‪rateConsumpoint = int.Parse(Console.ReadLine‬‬
‫;‪if (rateConsumpoint < 0) break‬‬
‫;)"‪Console.Write("Enter type:‬‬
‫;))(‪type= char.Parse(Console.ReadLine‬‬
‫)‪switch (type‬‬
‫{‬
‫‪case 'H':‬‬
‫‪case 'h':‬‬
‫;‪billing = rateConsumpoint / 1000 * 500‬‬
‫;‪break‬‬
‫‪case 'I':‬‬
‫‪case 'i':‬‬
477 ‫ساختار تصمیم و حلقه تکرار‬

if (rateConsumpoint <= 4000000)


billing = rateConsumpoint / 1000 * 750;
else
billing = (rateConsumpoint - 4000000)
* 750 * 0.00025 + 4000000 / 1000 * 750;
break;
case 'E':
case 'e':
if (rateConsumpoint <= 2000000)
billing = rateConsumpoint / 150 * 600;
else
billing = (rateConsumpoint - 2000000) *
600 * 0.00002 + 2000000 / 150 * 600;
break;
}
Console.WriteLine("Billing is {0}", billing);
}
Console.ReadKey();
}
}
}
‫فصل‬
‫متد در ‪C#‬‬
‫‪3‬‬
‫‪ .1‬برنامهای که ‪ n‬جمله سری فیبوناچی را به روش بازگشتی تولید میکند‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬این متد متغیرهای برنامه را تعریف کرده‪ ،‬متد ‪ fibo‬را فراخوانی میکند‪.‬‬
‫متد ‪ :fibo‬این متد ‪i‬امین عدد فیبوناچی را تولید میکند‪ i .‬را بهعنوان پارامتر میپذیرد‪.‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغیر‬ ‫متد‬
‫‪namespace p1‬‬
‫{‬ ‫تعداد اعداد فیبوناچی‬ ‫‪n‬‬
‫‪class Program‬‬ ‫‪Main‬‬
‫شمارنده حلقه‬ ‫‪I‬‬
‫{‬
‫)‪static int fibo(int n‬‬
‫{‬
‫)‪if (n == 1‬‬
‫;)‪return (1‬‬
‫)‪if (n == 2‬‬
‫;)‪return (1‬‬
‫;))‪return (fibo(n - 2) + fibo(n - 1‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int n, i‬‬
‫;)"‪Console.Write ("Enter n:‬‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Result is:‬‬
‫)‪for (i = 1; i <= n; i++‬‬
‫}‪Console.Write("{0‬‬ ‫;))‪", fibo(i‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .2‬برنامهای که فاصلهای را برحسب فوت و اینچ دریافت کرده‪ ،‬معادل آن را برحسب متر و سانتیمتر بیان میکند‪.‬‬
‫هر فوت ‪ 4/8403‬متر‪ ،‬یک متر ‪ 044‬سانتیمتر و هر فوت ‪ 01‬اینچ است‪ .‬حداقل از سه متد استفاده کنید‪ .‬یکی برای‬
‫ورودی‪ ،‬یکی برای انجام محاسبات و یکی برای خروجی‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬این متد‪ ،‬متدها ‪ write ،read‬و ‪ calculate‬را فراخوانی میکند‪.‬‬
‫متد ‪ :read‬این متد فاصله را به فوت و اینچ میخواند‪.‬‬
‫متد‪ :calculate‬این متد‪ ،‬هر یک از فواصل برحسب فوت و اینچ را به متر و سانتیمتر تبدیل میکند‪.‬‬
531 C# ‫متد در‬

.‫ این متد برای نمایش فواصل تبدیلشده به کار میرود‬:write‫متد‬


‫هدف‬ ‫متغیر‬ ‫متد‬
‫ورودی به فونت‬ foot

‫ورودی به اینچ‬ Inch

‫فوت به متر‬ foot_to_meter


using System; ‫اینچ به متر‬ inch_to_meter ‫عمومی‬
namespace p2
{ ‫سانتیمتر‬ centi _meter
class Program
‫فوت به سانتیمتر‬ foot_to_centimeter
{
static int foot; ‫اینچ به سانتیمتر‬ inch_to_centimeter
static int inch;
static float foot_to_meter;
static float foot_to_centimeter;
static float inch_to_centimeter;
static float inch_to_meter;
static void read()
{
Console.Write("Foot?");
foot = int.Parse(Console.ReadLine());
Console.Write("Inch?");
inch = int.Parse(Console.ReadLine());
}
static void calculate()
{
foot_to_meter=0.3048f*foot;
foot_to_centimeter=100*foot_to_meter;
inch_to_meter=(float) (1.0f/12)*0.3048f*inch;
inch_to_centimeter=100*inch_to_meter;
}
static void write()
{
Console.WriteLine("The {0} foot is {1} meter", foot,
foot_to_meter);
Console.WriteLine("The {0} foot is {1} centiMeter", foot,
foot_to_centimeter);
Console.WriteLine("The {0} inch is {1} meter", inch,
inch_to_meter);
Console.WriteLine("The {0} inch is {0} centiMeter", inch,
inch_to_centimeter);
}
static void Main(string[] args)
{
read();
calculate();
write();
Console.ReadKey();
}
}
‫فصل سوم‬ 531

:‫نیروی جاذبه بین دو جسم بهصورت زیر محاسبه میگردد‬ .3


g * m1 * m2
f 
2
d
6.693*10-8 ‫ ثابت جهانی جاذبه با مقدار‬g ‫ فاصله بین دو جسم و‬d ،‫ جرم جسم دوم‬m2 ،‫ جرم جسم اول‬m1
.‫ برنامهای که با استفاده از دو متد مقدار نیروی جاذبه محاسبه میکند‬.‫ است‬cm(g,sec)
‫هدف‬ ‫متغیر‬ ‫متد‬
‫نیروی جاذبه جهانی‬ g ‫سراسری‬

using System; ‫ جرم جسم اول‬m1 main


namespace p3 ‫ جرم جسم دوم‬m2
{
class Program ‫ فاصله بین دو جسم‬D
{
const double g = 6.673e-8;
static double calc_f(double m1, double m2, double d)
{
return (g * m1 * m2 / pow(d));
}
static double pow(double d)
{
return (d * d);
}

static void Main(string[] args)


{
double m1,m2,d;
Console.Write("Enter m1:");
m1=double.Parse(Console.ReadLine());
Console.Write("Enter m2:");
m2=double.Parse(Console.ReadLine());
Console.Write("Enter d:");
d=double.Parse(Console.ReadLine());
Console.Write("F is {0}", calc_f(m1,m2,d));
Console.ReadKey();
}
}
}
‫متد در ‪531 C#‬‬

‫یکی از مشکالت هواشناسی محاسبه شاخص سردی باد است‪ .‬برای این منظور‪ ،‬فرمول زیر وجود دارد‪:‬‬ ‫‪.4‬‬
‫) ‪(10 V  V  10 .5)(33  t‬‬
‫‪w  33 ‬‬
‫‪23  1‬‬
‫‪ ،V‬سرعت باید برحسب متر بر ثانیه‪ t ،‬دما برحسب درجه سانتیگراد‪ (t<=10) ،‬و‪ W‬شاخص سردی باد است‪ .‬برنامهای‬
‫که با استفاده از یک متد‪ ،‬سرعت باد و دما را میخواند‪ ،‬شاخص سردی باد را نمایش میدهد‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫;‪using System‬‬
‫‪namespace p4‬‬ ‫سرعت باد‬ ‫‪v‬‬ ‫‪Main‬‬
‫{‬ ‫‪T‬‬
‫‪class Program‬‬ ‫دما‬
‫{‬
‫)‪static double calc_cold(double v, double t‬‬
‫{‬
‫* )‪return (33 - ((10 * Math.Sqrt(v) - v + 10.5‬‬
‫;)‪(33 - t)) / 23.1‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪double v,t‬‬
‫;)"‪Console.Write("Enter v:‬‬
‫;))(‪v = double.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter t:‬‬
‫;))(‪t = double.Parse(Console.ReadLine‬‬
‫;))‪Console.Write("W is {0} ", calc_cold(v,t‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .5‬برنامهای که یک عدد و یک رقم را خوانده‪ ،‬با استفاده از متدی تعداد تکرار رقم در عدد را برمیگرداند و چاپ‬
‫میکند‪.‬‬
‫فصل سوم‬ 531

‫هدف‬ ‫متغیر‬ ‫متد‬


‫عدد موردنظر‬ n main
using System;
namespace p5 ‫رقمی که باید در عدد جستجو گردد‬ m
{
class Program ‫تعداد تکرار رقم در عدد‬ count repeat
{
static int repeat(long n,int m)
{
int count=0;
while (n>0)
{
if ((n % 10 ) == m) count++;
n/=10;
}
return(count);
}
static void Main(string[] args)
{
long n;
int m;
Console.Write("Enter n:");
n = long.Parse(Console.ReadLine());
Console.Write("Enter m:");
m = int.Parse(Console.ReadLine());
Console.Write("{0} Repeat {1} times", m, repeat(n, m));
Console.ReadKey();
}
}
}

.‫ را محاسبه میکند‬x ‫ مقدار سینوس زاویه‬،‫ را خوانده‬n ‫ و‬x ‫برنامهای که‬ .6


3 5 9 n
x x x7 x x
sin( x)  x      ... 
3! 5! 7! 9! n!
:‫وظایف متدها‬
.‫ را چاپ میکند‬sin(x) ‫ حاصل عبارت‬fact ‫ و‬pow ‫ با فراخوانی متدها‬،‫ را خوانده‬x ‫ و‬n ‫ این متد‬:main ‫متد‬
.‫ این فاکتوریل عددی را برمیگرداند‬:fact ‫متد‬
.‫ عددی را برمیگرداند‬n ‫ این متد توان‬:pow ‫متد‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫ورودی‬ x
‫ورودی‬ n
531 C# ‫متد در‬

‫مجموع‬ sum main


‫شمارنده‬ i
)‫عالمت (یکی در میان مثبت و منفی میشود‬ sign
using System;
namespace p6
{
class Program
{
static double fact(int n)
{
if (n == 1)
return 1.0;
else
return (n * fact(n - 1));
}
static double pow(double x, int n)
{
if (n == 0)
return 1.0;
else
return (x * pow(x, n - 1));
}
static void Main(string[] args)
{
int n, i, sign = 1;
double x, sum = 0;
Console.Write("Enter x:");
x = double.Parse(Console.ReadLine());
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
for (i = 1; i <= n; i += 2)
{
sum += sign * pow(x, i) / fact(i);
sign = -sign;
}
Console.Write("Sin({0}) = {1}", x, sum);
Console.ReadKey();
}
}
}

‫ بهصورت عمومی تعریف میشوند و مقدار آنها‬y ‫ و‬x ‫ دو متغیر‬:‫ خروجی قطعه برنامه زیر چیست؟)توضیح برنامه‬.7
‫ سپس‬.‫ چاپ میگردد‬x = 0 ‫ مقدار‬cout ‫ با اجرای متد‬.)‫ تعریفشدهاند‬main ‫ قبل از متد‬y ‫ و‬x ‫صفر است (متغیرهای‬
‫فصل سوم‬ ‫‪541‬‬

‫متد ‪ f1‬فراخوانی میگردد‪ .‬با فراخوانی متد ‪ f1‬متغیر ‪ y‬بهصورت محلی تعریف گردیده‪ ،‬مقدار اولیه ‪ 04‬به آن‬
‫تخصیص مییابد‪ .‬سپس با اجرای ‪ ،cout‬مقدار ‪ x = 10‬چاپ خواهد شد و مقدار متغیر عمومی ‪ x‬به ‪ 04‬تغییر مییابد‬
‫(;‪ .)x += 10‬با اجرای ‪ ،cout‬مقدار ‪ y = 10‬چاپ خواهد شد و سپس مقدار ‪ 00‬در ‪ x‬قرار میگیرد )‪ .(x++‬پس از‬
‫برگشت از متد ‪ f1‬با اجرای ‪ ،cout‬ابتدا یک واحد به متغیر عمومی ‪ y‬اضافه میگردد‪ ،‬مقدار ‪ 0‬در ‪ y‬قرار میگیرد و‬
‫مقدار ‪ y =1‬چاپ میشود‪ .‬با اجرای آخرین ‪ cout‬مقدار ‪ x = 11‬چاپ میشود‪ .‬سپس‪ ،‬یک واحد به متغیر ‪ x‬اضافه‬
‫میگردد‪.‬‬
‫;‪using System‬‬
‫‪namespace p7‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫;‪static int x, y‬‬
‫)(‪static void f1‬‬
‫{‬
‫;‪int y = 10‬‬
‫;)‪Console.WriteLine("y = {0}", y‬‬
‫;‪x += 10‬‬
‫;)‪Console.WriteLine("x = {0}", x++‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)‪Console.WriteLine("x = {0}", x‬‬
‫;)(‪f1‬‬
‫;)‪Console.WriteLine("y = {0}", ++y‬‬
‫;)‪Console.WriteLine("x = {0}", x++‬‬
‫;)(‪Console.ReadKey‬‬

‫}‬
‫}‬
‫}‬

‫‪ .8‬برنامهای که اعداد سهرقمی را چاپ میکند که مجموع فاکتوریل ارقام آن اعداد برابر با خود عدد باشد‪.‬‬
‫بهعنوانمثال‪ ،‬اگر ‪ n2 ،n1‬و ‪ n3‬به ترتیب رقم یکان‪ ،‬دهگان و صدگان باشند‪ ،‬فرمول زیر برقرار باشد‪:‬‬
‫!‪n3n2n1 = n1! + n2! +n3‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬این متد‪ ،‬کلیه ارقام اعداد سهرقمی را جدا کرده‪ ،‬با فراخوانی متد ‪ fact‬مجموع ارقام آن را محاسبه‬
‫میکند‪ .‬چنانچه مجموع فاکتوریل ارقام هر عدد برابر با خود آن عدد باشد‪ ،‬چاپ میشود‪.‬‬
‫متد ‪ :fact‬فاکتوریل ‪ n‬را به روش بازگشتی حساب میکند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫متد در ‪545 C#‬‬

‫شمارنده‬ ‫‪i‬‬ ‫‪main‬‬

‫‪ n1‬رقم اول‬
‫;‪using System‬‬
‫‪namespace p8‬‬ ‫‪ n2‬رقم دوم‬
‫{‬
‫‪class Program‬‬ ‫‪ n3‬رقم سوم‬
‫{‬
‫)‪static long fact(int n‬‬ ‫‪ temp‬متغیر کمکی‬
‫{‬ ‫‪ sum‬مجموع فاکتوریل ارقام‬
‫)‪if (n==0‬‬
‫;‪return 1‬‬ ‫‪ n‬عددی که باید فاکتوریل آن حساب گردد‬ ‫‪fact‬‬
‫‪else‬‬
‫;))‪return(n*fact(n-1‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int n1,n2,n3,temp‬‬
‫;‪long sum‬‬
‫;)"‪Console.Write("Result is:‬‬
‫)‪for (int i=100; i<=999; i++‬‬
‫{‬
‫;‪n1=i % 10‬‬
‫;‪temp=i/10‬‬
‫;‪n2 = temp % 10‬‬
‫;‪temp/=10‬‬
‫;‪n3=temp%10‬‬
‫;)‪sum=fact(n1)+fact(n2)+fact(n3‬‬
‫)‪if (sum==i‬‬ ‫"( ‪Console.Write‬‬ ‫;)‪{0}", i‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .9‬برنامهای که کلیه اعداد چهاررقمی چاپ را میکند که مجموع رقم اول به توان ‪ 0‬و رقم چهارم به توان ‪ 0‬برابر‬
‫با مجموع رقم دوم به توان ‪ 1‬و رقم سوم به توان ‪ 8‬باشد‪ .‬بهعنوانمثال‪ ،‬داریم‪.‬‬
‫‪1000 = 10 + 00 = 08 + 01 = 01 + 0 = 0 + 01 = 01‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬این متد‪ ،‬کلیه ارقام اعداد چهاررقمی را جدا کرده‪ ،‬با فراخوانی ‪ pow‬توان ‪ 0‬رقم چهارم و توان ‪8‬‬
‫رقم سوم را محاسبه میکند‪.‬چنانچه مجموع توان ‪ 0‬رقم چهارم و توان ‪ 0‬رقم اول برابر توان ‪ 1‬رقم دوم و توان ‪ 8‬رقم‬
‫سوم باشد‪ ،‬عدد را نمایش میدهد‪.‬‬
‫متد ‪ :pow‬این متد توان ‪ n‬عددی را برمیگرداند‪.‬‬
‫فصل سوم‬ 541

‫هدف‬ ‫متغیر‬ ‫متد‬


using System; ‫ شمارنده‬i Main
namespace p9
{ ‫ رقم اول‬n1
class Program
{ ‫ رقم دوم‬n2
static long pow(int x,int n)
{
‫ رقم سوم‬n3
if (n==0) ‫ رقم چهارم‬n4
return 1;
else ‫ متغیرهای کمکی‬temp
return(x*pow(x,n-1));
} ‫ برسد‬n ‫ پایه که باید به توان‬x pow
static void Main(string[] args)
{ ‫ توان‬n
int n1, n2, n3,n4, temp;
Console.WriteLine("Result is:");
for (int i = 1000; i <= 9999; i++)
{
n1 = i % 10;
temp = i / 10;
n2 = temp % 10;
temp /= 10;
n3 = temp % 10;
n4 = temp / 10;
if ((n1 + pow(n4, 4)) == (n2 * n2 + pow(n3, 3)))
Console.Write("{0}\t", i);
}
Console.ReadKey();
}
}
}

:‫ را خوانده و با استفاده از متدی حاصل سری زیر را محاسبه کرده و نمایش میدهد‬n ‫ برنامهای که‬.

n‫جمله‬
‫متد در ‪543 C#‬‬

‫;‪using System‬‬
‫‪namespace p10‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static double seri(int n‬‬
‫{‬
‫;‪double sum = 0‬‬
‫;‪double base1 = 1 + 1‬‬
‫)‪for(int i =1; i<= n; i++‬‬
‫{‬
‫;)‪sum = 1 + (1 / base1‬‬
‫;‪base1= sum‬‬
‫}‬
‫;‪return sum‬‬
‫}‬

‫)‪static void Main(string[] args‬‬


‫{‬
‫;‪double sum = 0‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪int n = int.Parse(Console.ReadLine‬‬
‫;))‪Console.Write("Sum is {0}", seri(n‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪.1‬‬
‫‪ .2‬برنامهای که عدد صحیح مثبتی را خوانده‪ ،‬مجموع ارقام آن را محاسبه میکند‪ .‬اگر حاصل مجموع ارقام‪ ،‬عددد‬
‫یکرقمی نبود‪ ،‬این روند را ادامه داده تا نهایتاً عدد یکرقمی شود(از یک متد بازگشتی استفاده میکند)‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬این متد عددی را خوانده‪ ،‬با فراخوانی متد ‪ sumdigit‬حاصل را چاپ میکند‪.‬‬
‫متد ‪ :sumdigit‬این متد عددی را بهعنوان آرگومان میپذیرد و عددی را برمیگرداند که حاصل مجموع ارقام‬
‫آن‪ ،‬عدد یکرقمی باشد‪.‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغیر‬ ‫متد‬
‫‪namespace p11‬‬
‫{‬ ‫عدد ورودی‬ ‫‪n‬‬ ‫‪Main‬‬
‫‪class Program‬‬
‫{‬ ‫مجموع ارقام‬ ‫‪sum‬‬ ‫‪Sumdigit‬‬
‫)‪static long sumdigit(long n‬‬ ‫‪q‬‬
‫خارجقسمت عدد به ‪01‬‬
‫{‬
‫;‪long sum,q‬‬
‫فصل سوم‬ 544

if (n<10)
return n;
else
{
q=n;
sum=0;
while(q>0)
{
sum+=q%10;
q/=10;
}
return (sum);
}
}
static void Main(string[] args)
{
long n;
Console.Write("Enter a number:");
n = long.Parse(Console.ReadLine ());
Console.Write("Result is {0}", sumdigit(n));
Console.ReadKey();
}
}
}

‫ اگدر اضدالع‬.‫ مساحت آن را با متدی محاسبه میکند و به خروجی میبدرد‬،‫ برنامه ای که اضالع مثلثی را خوانده‬.3
p = (a + b + c) / 2 .‫ مساحت آن با فرمول مقابل محاسبه میشود‬،‫ باشد‬c ‫ و‬b ،a ‫مثلثی‬
‫= مساحت مثلث‬ p( p  a)( p  b)( p  c)
:‫وظایف متدها‬
.‫ مساحت مثلث را چاپ میکند‬،‫ را خوانده‬c ‫ و‬b ،a ‫ این متد‬:main ‫متد‬
.‫ این متد مجموع اضالع مثلث (محیط مثلث) را برمیگرداند‬:sum ‫متد‬
.‫ این متد مساحت مثلث را با استفاده از فرمول بیانشده برمیگرداند‬:area ‫متد‬
using System;
namespace p12 ‫هدف‬ ‫متغیر‬ ‫متد‬
{
class Program ‫ضلع اول‬ a Main
{ b
‫ضلع دوم‬
static float sum(int a,int b,int c) c
{ ‫ضلع سوم‬ p
return(a+b+c) ;
} 2 ‫محیط تقسیمبر‬
static double area(double p,int
a,int b,int c)
{
return(Math.Sqrt (p*(p-a)*(p-b)*(p-c))) ;
‫متد در ‪541 C#‬‬

‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int a, b, c‬‬
‫;‪double p‬‬
‫;)"‪Console.Write("Enter a:‬‬
‫;))(‪a = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter b:‬‬
‫;))(‪b = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter c:‬‬
‫;))(‪c = int.Parse(Console.ReadLine‬‬
‫;‪p = sum(a, b, c) / 2.0f‬‬
‫;))‪Console.Write( "Area is {0}", area(p, a, b, c‬‬
‫;)(‪Console.ReadLine‬‬
‫}‬
‫}‬
‫}‬

‫‪ .4‬برنامهای که یک عدد بزرگ (حتی ‪ 0444‬رقمی) را گرفته‪ ،‬تعیین میکند بر ‪ 01‬بخشپذیر است یا خیر‪ .‬عددی‬
‫بر ‪ 01‬بخشپذیر است که بر ‪ 8‬و ‪ 1‬بخشپذیر باشد‪ .‬عددی بر سه بخشپذیر است که مجموع ارقام آن بر سه‬
‫بخشپذیر باشد و عددی بر ‪ 1‬بخشپذیر است که رقم یکان آن صفر یا ‪ 1‬باشد (رقم یکان بر ‪ 1‬بخشپذیر است)‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :accept‬یک کاراکتر را بهعنوان ورودی میگیرد (پارامتر) تعیین میکند آن کاراکتر‪ ،‬کاراکتری بین ‪ 4‬تدا ‪9‬‬
‫است (مقدار برگشتی ‪ )0‬یا خیر (مقدار برگشتی ‪.)4‬‬
‫متد ‪ :chrtoint‬یک کاراکتر را بهعنوان پارامتر دریافت میکند و مقدار عددی آن را برمیگرداند‪ .‬اگر کداراکتر‬
‫بین ‪ 4‬تا ‪ 9‬نباشد‪ ،‬مقدار صفر را برگشت میدهد‪.‬‬
‫متد ‪ :main‬عدد موردنظر را بهصورت کاراکتر به کاراکتر خواندده‪ ،‬بدا فراخدوانی متدد ‪ accept‬تعیدین مدیکندد‬
‫کاراکتر خواندهشده‪ ،‬بین ‪ 4‬تا ‪ 9‬است یا خیر‪ .‬اگر کاراکتر خواندهشده بین ‪ 4‬تا ‪ 9‬باشد با فراخوانی متد ‪ chrtoint‬آن‬
‫را به مقدار عددی تبدیل کرده‪ ،‬با ارقام قبلی جمع مینماید‪ .‬سپس با یک شرط تعیین مدیکندد کده آیدا عددد بدر ‪01‬‬
‫بخشپذیر است یا خیر‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫مجموع ارقام عدد خواندهشده‬ ‫‪sum‬‬ ‫‪Main‬‬
‫کاراکترهای تشکیلدهنده عدد‬
‫‪ch‬‬
‫متغیر کمکی‬ ‫‪temp‬‬
‫کاراکتر دریافتی بهعنوان پارامتر‬ ‫‪c‬‬ ‫‪Accept‬‬
‫کاراکتر دریافتی بهعنوان پارامتر‬ ‫‪c‬‬ ‫‪Chrtoint‬‬
‫;‪using System‬‬
‫‪namespace p13‬‬
‫فصل سوم‬ 541

{
class Program
{
static int accept(char c)
{
if ((c >= '0') && (c <= '9'))
return 1;
else
return 0;
}
static int chrtoint(char c)
{
if ((c >= 48) && (c <= 57))
return (int) c - 48;
return 0;

}
static void Main(string[] args)
{
ulong sum = 0;
char ch, temp = '1';
while(1==1)
{
Console.Write("Enter a number: ");
ConsoleKeyInfo e=Console.ReadKey();
ch = e.KeyChar ;
while((int)ch != 13)
{
if(accept(ch)==1)
{
temp = ch;
// Console.Write(ch);
sum += (ulong) chrtoint(ch);
}
e = Console.ReadKey();
ch = e.KeyChar;
}
Console.WriteLine("\nSum is {0} ", sum );
if((sum % 3 == 0) && (chrtoint(temp) % 5 == 0))
Console.WriteLine("**** Yes ****");
else
Console.WriteLine(" **** No ****. ");
Console.WriteLine("\nDo you want to continue(y/n)?");
ch=char.Parse(Console.ReadLine());
if((ch == 'N')||(ch == 'n'))
break;
Console.WriteLine();
}
}
}
}
‫متد در ‪541 C#‬‬

‫‪ .5‬برنامهای که یک رقم را از ورودی خوانده‪ ،‬تمام اعداد صحیح بین ‪ 0‬و ‪ 044‬را چاپ میکند‪ ،‬بهطدوریکده رقدم‬
‫دریافتی در اعداد ا تا ‪ ،044‬مجذور و مکعب این اعداد وجود داشته باشد‪ .‬بهعنوانمثال‪ ،‬رقم (‪ )0‬را از ورودی بخوانیم‪،‬‬
‫عدد ‪ 08‬یکی از اعدادی است که رقم یک در آن شرط صدق میکند‪ ،‬زیدرا‪ ،‬در ‪ 019 ،08‬و ‪ 1091‬وجدود دارد(بدرای‬
‫تشخیص وجود رقم در عدد‪ ،‬مجذور و مکعب عدد از یک متد استفاده کنید)‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬یک رقم را خوانده‪ ،‬از اعداد ‪ 0‬تا ‪ 044‬با فراخوانی متد ‪ digit_count‬تعیین میکند آیا رقم در مجذور‬
‫و مکعب عدد وجود دارد یا خیر؟ اگر متدها ‪ digit_count‬مقادیر غیر صفر را برگرداند‪ ،‬مقدار عدد را چاپ میکند‪.‬‬
‫متد ‪ :digit_count‬تعداد تکرار یک رقم (پارامتر ‪ )digit‬را در عدد ‪( number‬بهعنوان پارامتر اول) تعیین میکند‬
‫و برمیگرداند‪.‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغیر‬ ‫متد‬
‫‪namespace p14‬‬
‫{‬ ‫‪ number‬اعداد ‪ 0‬تا ‪011‬‬ ‫‪Main‬‬
‫‪class Program‬‬
‫{‬ ‫‪ digit‬رقم خواندهشده‬
‫‪static int digit_count(int‬‬
‫)‪number, int digit‬‬
‫{‬
‫;‪int count = 0‬‬
‫)‪while (number >0‬‬
‫{‬
‫)‪if (number % 10 == digit‬‬
‫;‪count++‬‬
‫;‪number /= 10‬‬
‫}‬
‫;‪return count‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int number, digit‬‬
‫;)"‪Console.Write("Enter a digit:‬‬
‫;))(‪digit= int.Parse(Console.ReadLine‬‬
‫;)" ‪Console.Write("number is‬‬
‫)‪for (number = 1; number <= 100; number++‬‬
‫{‬
‫&& )‪if ((digit_count(number, digit) > 0‬‬
‫&& )‪(digit_count(number * number, digit) > 0‬‬
‫فصل سوم‬ 541

(digit_count(number * number * number, digit)


> 0))
Console.Write("{0} ", number);
}
Console.ReadKey();
}
}
}

‫ متد تفاضل حاصدلضدرب و حاصدل‬.‫ برنامهای که دو عدد را از ورودی میخواند و به متدی ارسال میکند‬.6
.‫ به برنامه برمیگرداند و برنامه اصلی این حاصل را نمایش میدهد‬،‫تقسیم آنها را محاسبه کرده‬
using System;
namespace p15 ‫هدف‬ ‫متغیر‬
{
class Program ‫ عدد اول‬a
{ b
‫عدد دوم‬
static float result(float a, float b)
{
return (a * b - a / b);
}
static void Main(string[] args)
{
float a = 0, b = 0;
while (b == 0)
{
Console.Write("Enter a:");
a = float.Parse(Console.ReadLine());
Console.Write("Enter b:");
b = float.Parse(Console.ReadLine());
}
Console.Write("Result is {0}", result(a, b));
Console.ReadKey();
}
}
}

.‫برنامهای که سه عدد را از ورودی میخواند و توسط متدی میانگین آنها را محاسبه میکند و نمایش میدهد‬ .7
‫هدف‬ ‫متغیر‬
541 C# ‫متد در‬

‫عدد اول‬ a
using System; b
namespace p16 ‫عدد دوم‬
c
{ ‫عدد سوم‬
class Program
{
static float average(float a, float b, float c)
{
return ((a + b + c) / 3);
}
static void Main(string[] args)
{
float a, b, c;
Console.Write("Enter a:");
a = float.Parse(Console.ReadLine());
Console.Write("Enter b:");
b = float.Parse(Console.ReadLine());
Console.Write("Enter c:");
c = float.Parse(Console.ReadLine());
Console.Write("Result is {0}", average(a, b, c));
Console.ReadLine();
}
}
}

‫ شمارش معکوس از آن عدد بده یدک را‬،‫ برنامهای که یک عدد را از ورودی میخواند و توسط یک متد بازگشتی‬.8
.)‫انجام دهد (شمارهها را در خروجی چاپ میکند‬
‫هدف‬ ‫متغیر‬
using System;
namespace p17 ‫عدد ورودی‬ N
{
class Program
{
static void reverse(int n)
{
if (n == 0)
return;
else
{
Console.Write("{0} ",n--);
reverse(n);
}
}
static void Main(string[] args)
{
int n;
‫فصل سوم‬ 511

Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
Console.Write("Result is ");
reverse(n);
Console.ReadKey();
}
}
}

‫ آرگومدان اول یدک‬.‫ متدی که دو آرگومان را میپذیرد و آرگومان اول را به توان آرگومدان دوم مدیرسداند‬.9
.‫ برنامهای که از این متد استفاده میکند‬.‫ و آرگومان دوم یک مقدار صحیح مثبت یا منفی است‬double ‫مقدار‬
using System; ‫هدف‬ ‫متغیر‬ ‫متد‬
namespace p18
{ ‫ عدد پایه‬a main
class Program n
{ ‫عدد دوم‬
static double pow(double a, int n)
{
‫ پارامتر اول‬a pow
int i; n
‫پارامتر دوم‬
double mul = 1.0; mul
if (n > 0) ‫توان‬ ‫ حاصل‬i
{ ‫شمارنده‬
for (i = 1; i <= n; i++)
mul *= a;
return mul;
}
else
{
for (i = -n; i >= -1; i--)
mul *= 1 / a;
return (mul);
}
}
static void Main(string[] args)
{
int a, n;
Console.Write("Enter a:");
a = int.Parse(Console.ReadLine());
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
Console.Write("Result is {0}", pow(a, n));
Console.ReadKey();
}
}
}
‫متد در ‪515 C#‬‬

‫‪ .11‬برنامهای که نمایش زمان را از حالت ‪ 10‬ساعت به ‪ 01‬ساعت تبدیل مدیکندد‪ .‬مدثالً بایدد ‪ 14:25‬را بدهصدورت‬
‫‪ 2:25pm‬تبدیل نماید‪ .‬این برنامه طوری طراحیشده است که دارای سه متد زیر میباشد‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬متغیرها را تعریف کرده‪ ،‬متدها ‪ convert ،read‬و ‪ print‬را فراخوانی میکند‪.‬‬
‫متد ‪ :convert‬زمان را بهصورت ‪ 10‬ساعته گرفته‪ ،‬به ‪ 01‬ساعته تبدیل میکند‪.‬‬
‫متد ‪ :read‬زمان را بهصورت ‪ 10‬ساعته میخواند و ساعت را در ‪ *h‬و دقیقه را در ‪ *m‬قرار میدهد‪.‬‬
‫متد ‪ :print‬زمان تبدیلشده را چاپ میکند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫ساعت ( پارامتر ارجاع)‬ ‫‪*h‬‬ ‫‪read‬‬
‫‪*m‬‬
‫دقیقه (پارامتر ارجاع)‬

‫ساعت (پارامتر ارجاع)‬ ‫*‬ ‫‪convert‬‬


‫‪time‬‬
‫زمان به ‪ pm‬یا ‪am‬‬ ‫‪*h‬‬
‫ساعت‬ ‫‪h‬‬
‫‪print‬‬
‫دقیقه‬ ‫‪m‬‬
‫;‪using System‬‬
‫‪namespace p19‬‬ ‫‪ Pm‬یا ‪ Am‬که باید‬ ‫‪time‬‬
‫{‬ ‫چاپ شود‬
‫‪class Program‬‬
‫{‬
‫‪static‬‬ ‫)‪void read(out int h,out int m‬‬
‫{‬
‫;)"‪Console.Write("Enter an hour:‬‬
‫;))(‪h = int.Parse(Console. ReadLine‬‬
‫;)"‪Console.Write("Enter a minute:‬‬
‫;))(‪m = int.Parse(Console. ReadLine‬‬
‫}‬
‫)‪static void convert(ref int h, out string time‬‬
‫{‬
‫) ‪if (h >= 12‬‬
‫{‬
‫;‪h -= 12‬‬
‫;"‪time ="PM‬‬
‫}‬
‫‪else‬‬
‫;"‪time="AM‬‬
‫}‬
‫)‪static void print(int h,int m, string time‬‬
‫{‬
‫;)‪Console.Write("Time is {0}:{1} {2}", h, m, time‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int h, m‬‬
‫فصل سوم‬ 511

string time;
read(out h, out m);
convert(ref h, out time);
print(h, m, time);
Console.ReadKey();
}
}
}

‫ برنامدهای کده ارزش سدهام را‬. 8, 1 ‫ یدا‬2, 7 ً‫ مدثال‬،‫قیمت سهام معموالً بهصورت کسری بیان مدیشدود‬ .11
2 8
‫ قسمت کسری را نیز بهصورت دو عدد صحیح (عدد اول صورت و‬.‫بهصورت دو عدد صحیح و کسری از کاربر میگیرد‬
‫ ارزش‬،‫عدد دوم مخرج) دریافت می نماید(بر اساس تبدیل سهام از یک متد استفاده میکند که سه پدارامتر را گرفتده‬
.)‫ برمیگرداند‬double ‫سهام را بهصورت‬
using System; ‫هدف‬ ‫متغیر‬ ‫متد‬
namespace p20
{ ‫ بخش صحیح سهام‬a main
class Program ‫و‬
{ ‫ صورت کسر‬x
static double result(int a,int x,int y) y result
‫مخرج کسر‬
{
return (a + (double)x / y);
}
static void Main(string[] args)
{
int a, x, y;
Console.Write("Enter a:");
a = int.Parse(Console.ReadLine());
Console.Write("Enter x:");
x = int.Parse(Console.ReadLine());
Console.Write("Enter y:");
y = int.Parse(Console.ReadLine());
Console.Write("Result is {0}", result(a, x, y));
Console.ReadKey();
}
}
}
513 C# ‫متد در‬

‫ ساعت‬8 ‫ دالر و برای هر ساعت اضافه یا بخشی از ساعت اضافه بر‬1 ‫ حداقل‬،‫ پارکینگی برای توقف تا سه ساعت‬.12
‫ فرض کنید که هیچ خودرویی‬.‫ دالر است‬04 ‫ ساعتی‬10 ‫ حداکثر مبلغ قابل پرداخت برای هر دوره‬.‫ دالر میگیرد‬4/1
‫ برنامهای که زمان استفاده از پارکینگ را برای مشتریان دریافت میکند و مبلغ‬.‫ ساعت توقف نمیکند‬10 ‫بیش از‬
.‫کاربر برای هر مشتری ساعات و دقیقه توقف را وارد میکند‬.‫ مبلغ کل پرداختی را چاپ نماید‬،‫پرداختی مشتری‬
.‫متدی مبلغ پرداختی را محاسبه و برمیگرداند‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫تعداد اتومبیلها‬ i main
‫ساعت توقف‬ hour
‫دقیقه توقف‬ minute
‫مجموع درآمد پارکینگ‬ sum
‫پرداختی هر ماشین‬ charge1
‫پارامتر مربوط به ساعت‬ hour charge
using System; ‫ پارامتر دقیقه‬Minute
namespace p21
{ ‫ مبلغ پرداختی هر ماشین‬charge1
class Program
{
static double charge(int hour, int minute)
{
double charge1 = 0;
if (hour < 3)
charge1 = 2;
else
charge1 =2+(hour - 3)* 0.5 + (float)minute / 60 * 0.5;
if (charge1 > 10) charge1 = 10;
return (charge1);
}
static void Main(string[] args)
{
int i = 1, hour, minute;
double sum = 0, charge1;
while (1==1)
{
Console.Write("Enter Hour:");
hour = int.Parse(Console.ReadLine());
if (hour == -1) break;
Console.Write("Enter minute:");
minute = int.Parse(Console.ReadLine());
if (hour > 24)
Console.WriteLine("Please enter hour 0 to 24:");
else
{
charge1 = charge(hour, minute);
sum += charge1;
Console.WriteLine("Charge is {0}", charge1);
‫فصل سوم‬ ‫‪514‬‬

‫}‬
‫}‬
‫;)‪Console.Write("Total is {0}", sum‬‬
‫}‬
‫}‬
‫}‬

‫‪ .13‬برنامهای که با استفاده از چند متد اعمال زیر را انجام دهید‪:‬‬


‫‪ .0‬تمام اعداد دورقمی که رقم اول و دوم آنها برابر باشند را چاپ کند‪.‬‬
‫‪ .1‬تمام اعداد سهرقمی که رقم وسط آنها صفر باشد را چاپ کند‪.‬‬
‫‪ .8‬تمام اعداد سهرقمی که مجموع رقم اول و دوم کوچکتر از رقم سوم باشد‪.‬‬
‫‪ .0‬تمام اعداد چهاررقمی که قرینه یکدیگرند(مثالً ‪ .)1881‬یعنی رقم اول برابر رقم چهارم و رقم دوم برابر رقم سوم‬
‫باشد‪.‬‬
‫وظایف متدها‪:‬‬
‫متد‪ :main‬در حلقه تکراری متد ‪ menu‬را فراخوانی میکند و با توجه به انتخاب یکی از متدها ‪،print2 ،print1‬‬
‫‪ print3‬و ‪ print4‬را فراخوانی میکند‪.‬‬
‫متد ‪ :print1‬اعداد دورقمی که رقم اول و دوم آنها برابر باشد را چاپ میکند‪.‬‬
‫متد ‪ :menu‬منوی را نمایش میدهد که کاربر میتواند گزینهای را انتخاب کند‪.‬‬
‫متد ‪ :print2‬اعداد سهرقمی که رقم وسط آنها صفر باشد را چاپ میکند‪.‬‬
‫متد ‪ :print3‬اعداد سهرقمی که مجموع رقم اول و دوم آنها کوچکتر از رقم سوم باشد را چاپ میکند‪.‬‬
‫متد ‪ :print4‬تمام اعداد چهاررقمی که قرینه باشند را چاپ میکند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫گزینهای که کاربر انتخاب کرده است‪.‬‬ ‫‪i‬‬ ‫‪main‬‬
‫عدد ورودی (گزینهای که کاربر وارد میکند)‪.‬‬ ‫‪i‬‬ ‫‪menu‬‬
‫شمارندهای که اعداد ‪ 01‬تا ‪ 99‬را میشمارد‪.‬‬ ‫‪i‬‬ ‫‪print1‬‬
‫شمارندهای که بین ‪ 011‬تا ‪ 999‬را میشمارد‪.‬‬ ‫‪i‬‬ ‫‪print2‬‬
‫;‪using System‬‬
‫‪namespace p22‬‬ ‫شمارندهای که بین ‪ 011‬تا ‪ 999‬را میشمارد‪.‬‬ ‫‪i‬‬ ‫‪print3‬‬
‫{‬
‫‪class‬‬ ‫شمارندهای که بین ‪ 0111‬تا ‪ 9999‬را میشمارد‪.‬‬ ‫‪i‬‬ ‫‪print4‬‬
‫‪Program‬‬
511 C# ‫متد در‬

{
static int menu()
{
int in1;
Console.WriteLine("\t 1: Numbers 10 to 99 that is digit one
equqls digit two");
Console.WriteLine("\t 2: Numbers 100 to 999 that is middle digit
zero ");
Console.WriteLine("\t 3: Numbers 100 to 999 that is digit1 +
digit2 less than digit3 ");
Console.WriteLine("\t 4: Numbers 1000 to 9999 this number is
mirroring ");
Console.WriteLine("\t 5: End ");
Console.Write("\t Select 1-5: ");
in1 = int.Parse(Console.ReadLine());
return in1;
}
static void print1()
{
Console.WriteLine();
for (int i = 10; i < 100; i++)
if (i % 10 == i / 10)
Console.Write("{0}\t", i);
Console.WriteLine();
}
static void print2()
{
Console.WriteLine();
for (int i = 100; i < 1000; i++)
if (i / 10 % 10 == 0)
Console.Write("{0}\t", i);
Console.WriteLine();
}
static void print3()
{
Console.WriteLine();
for (int i = 100; i < 1000; i++)
if (i / 100 > (i % 10 + i / 10 % 10))
Console.Write("{0}\t", i);
Console.WriteLine();
}
static void print4()
{
Console.WriteLine();
for (int i = 1000; i < 10000; i++)
if((i/1000 == i % 10) && ((i / 10 % 10) == (i / 100 % 10)))
Console.Write("{0}\t", i);
Console.WriteLine();
}
static void Main(string[] args)
{
int i = 1;
‫فصل سوم‬ ‫‪511‬‬

‫)‪while (i != 5‬‬
‫{‬
‫;)(‪i = menu‬‬
‫)‪switch (i‬‬
‫{‬
‫‪case 1:‬‬
‫;)(‪print1‬‬
‫;‪break‬‬
‫‪case 2:‬‬
‫;)(‪print2‬‬
‫;‪break‬‬
‫‪case 3:‬‬
‫;)(‪print3‬‬
‫;‪break‬‬
‫‪case 4:‬‬
‫;)(‪print4‬‬
‫;‪break‬‬
‫}‬

‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫برنامهای که با استفاده از یک متد بازگشتی بزرگترین مقسومعلیه مشترک دو عدد را محاسبه و چاپ میکند‪.‬‬ ‫‪.14‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬

‫عدد اول‬ ‫‪a‬‬ ‫‪main‬‬


‫متد در ‪511 C#‬‬

‫;‪using System‬‬ ‫عدد دوم‬ ‫‪b‬‬


‫‪namespace p23‬‬
‫{‬ ‫پارامتر اول‬ ‫‪a‬‬ ‫‪gcb‬‬
‫‪class Program‬‬
‫{‬ ‫پارامتر دوم‬ ‫‪b‬‬
‫)‪static int gcd(int a, int b‬‬
‫{‬
‫)‪if (b == 0‬‬
‫;‪return a‬‬
‫‪else‬‬
‫;)‪return gcd(b, a % b‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int a, b‬‬
‫;)"‪Console.Write("Enter a:‬‬
‫;))(‪a = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter b:‬‬
‫;))(‪b = Convert.ToInt32(Console.ReadLine‬‬
‫;))‪Console.Write("GCD is {0}", gcd(a, b‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .15‬برنامهای که اولین روز سال را میگیرد و تقویم ساالنه را نمایش میدهد‪.‬‬


‫وظایف متدها‪:‬‬
‫متد ‪ :main‬متغیرهای برنامه را تعریف کرده‪ ،‬با فراخوانی متد ‪ menu‬منویی را نشان میدهد تا کاربر اولین سال را‬
‫وارد کند‪ ،‬سپس تقویم ‪ 01‬ماهه را محاسبه کرده‪ ،‬چاپ میکند‪.‬‬
‫متد ‪ :menu‬برای نمایش یک منو به کار می رود‪ .‬برنامه را اجرا کنید‪ .‬اولین روز هفته و سال را وارد نمایید‪ .‬تقویم‬
‫ساالنه را ببینید‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫شمارنده ماه‬ ‫‪a‬‬ ‫‪main‬‬
‫روز واردشده توسط کاربر‬ ‫‪day‬‬
‫شمارنده ماه‬ ‫‪g‬‬
‫تعیین ماههای ‪ 01 ،29‬یا ‪ 00‬روزه‬ ‫‪m29‬‬
‫شروع روز سال‬ ‫‪start‬‬
‫شمارنده روز از ‪ 0‬تا ‪ 01 ،29‬یا ‪00‬‬ ‫‪i‬‬
‫فصل سوم‬ 511

‫روز واردشده توسط کاربر‬ day menu

using System;
namespace p24
{
class Program
{
static int menu()
{
int day;
Console.WriteLine("\t\t\t|-------------------------|");
Console.WriteLine("\t\t\t| Taghvim Saz !! |");
Console.WriteLine("\t\t\t|-------------------------|");
Console.WriteLine("\t\t\t| Saturday = 1 |");
Console.WriteLine("\t\t\t|-------------------------|");
Console.WriteLine("\t\t\t| Sunday = 2 |");
Console.WriteLine("\t\t\t|-------------------------|");
Console.WriteLine("\t\t\t| Monday = 3 |");
Console.WriteLine("\t\t\t|-------------------------|");
Console.WriteLine("\t\t\t| Tuesday = 4 |");
Console.WriteLine("\t\t\t|-------------------------|");
Console.WriteLine("\t\t\t| Wednesday = 5 |");
Console.WriteLine("\t\t\t|-------------------------|");
Console.WriteLine("\t\t\t| Thursday = 6 |");
Console.WriteLine("\t\t\t|-------------------------|");
Console.WriteLine("\t\t\t| Friday = 7 |");
Console.WriteLine("\t\t\t|-------------------------|");
Console.WriteLine("\t\t\t| Exit = 0 |");
Console.WriteLine("\t\t\t|-------------------------|");
Console.WriteLine("\t\t\t| Enter Number = [ ]|");
Console.WriteLine("\t\t\t|-------------------------|");
day = int.Parse(Console.ReadLine());
return day;
}

static void Main(string[] args)


{
int i, start, day, g, m29 = 0;
day = menu();
if (day < 1)
return ;
else if (day > 7)
{
Console.Write(" Error This Number !! ");
Console.ReadKey();
return;
}
start = day - 1;
for (g = 1; g <= 12; g++)
511 C# ‫متد در‬

{
Console.WriteLine("-------Month {0}---------",g);
Console.WriteLine("Sat Sun Mon Tus Wen Thr Fri");
if (g == 7)
m29 = 1;
if (g == 12)
m29 = 2;
day = start;
Console.WriteLine();;
for (i = 1; i <= 31 + day - m29; i++)
{
start++;
if (i <= day)
Console.Write(" ");
else if (i % 7 == 1)
{
start = 1;
Console.WriteLine("{0}\t", i - day );
}
else Console.Write("{0}\t", i - day );
}
Console.WriteLine("\n");
}
Console.WriteLine(" << END !! >> ");
Console.ReadKey();
}
}
}
‫فصل سوم‬ ‫‪511‬‬

‫‪ .16‬برنامهای که یک عدد زوج را گرفته‪ ،‬تمام زوجهای اولی (دو عدد فرد اولی که مجموع آنها برابر با آن عدد‬
‫زوج باشد) را نمایش میدهد‪ .‬بهعنوانمثال‪ ،‬اگر کاربر عدد ‪ 11‬را وارد کند‪ ،‬خروجی بهصورت زیر نمایش داده شود‪.‬‬
‫‪3 + 19 = 22‬‬ ‫‪5 + 17 =22‬‬ ‫‪11 + 11 = 22‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬عددی را خوانده‪ ،‬با استفاده از یک حلقه تکرار از ‪ 1‬تا نصف عدد خواندهشده‪ ،‬بررسی میکند که آیا‬
‫شمارنده )‪ (i‬و )‪ (num –i‬هر دو عدد اول هستند‪ .‬اگر هر دو عدد اول باشند‪ ،‬مقادیر ‪ num – i , i‬را نمایش میدهد‪.‬‬
‫متد ‪ :IsPrime‬تشخیص میدهد که آیا پارامتر عدد اول است یا خیر؟‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫عدد ورودی‬ ‫‪num‬‬ ‫‪main‬‬
‫شمارنده از ‪ 0‬تا نصف ‪num‬‬ ‫‪i‬‬
‫عددی که باید تعین شود اول است یا خیر‬ ‫‪num‬‬ ‫‪isprime‬‬
‫شمارنده از ‪ 2‬تا جذر ‪( num‬عددی اول است‬ ‫‪i‬‬
‫که بر هیچ عدد کوچکتر از جذر خودش‬
‫بهجز یک بخشپذیر نباشد)‬
515 C# ‫متد در‬

using System;
namespace p25
{
class Program
{
static int IsPrime(int num)
{
int i;
if (num == 1) return (0);
if (num == 2) return (1); //If it's 2, it's prime.
if (num % 2 == 0) return (0);
else
{
for (i = 2; i <= Math.Sqrt(num); i++)
{
if ((num % i) == 0) return (0);
}
}
return (1);
}
static void Main(string[] args)
{
int i, num;
Console.Write ("Input an even number: ");
num = Convert.ToInt32( Console.ReadLine());
if (num % 2 != 0)
{
Console.WriteLine(" is not an even number {0}", num);
Console.ReadKey();
return; //Exit the program.
}
for (i = 2; i <= (num / 2); i++)
{
if (IsPrime(i) == 1 && IsPrime(num - i) == 1)
{
Console.WriteLine("{0} + {1} = {2}",i,(num-i), num );
}
}
Console.ReadKey();
}
}
}
‫فصل سوم‬ ‫‪511‬‬

‫‪ .17‬یونانیان باستان اعداد را بهصورت هندسی دستهبندی میکردند‪ .‬بهعنوانمثال‪ ،‬آنها یک عدد را مثلثی‬
‫مینامیدند که میتوانستند با آن تعدادی ریگ (بهاندازه عدد ریگ)‪ ،‬در یک تقارن مثلثی بچینند‪ .‬متدی به نام‬
‫‪ isTrain‬که یک عدد را گرفته تشخیص میدهد‪ ،‬عدد مثلثی است یا خیر‪ .‬اگر عدد مثلثی باشد‪ ،‬مقدار ‪ ،0‬وگرنه مقدار‬
‫صفر را برمیگرداند‪ .‬دوازده عدد مثلثی در زیر آمدهاند‪:‬‬
‫‪4 0 8 1 04‬‬ ‫‪01‬‬ ‫‪10 13 81‬‬ ‫‪01 11‬‬ ‫‪11‬‬
‫وظایف متد‪:‬‬
‫متد‪ :main‬عددی را خوانده‪ ،‬با فراخوانی متد ‪ isTrain‬تشخیص میدهد عدد مثلثی است یدا خیدر‪ .‬سدپس‪ ،‬پیدام‬
‫مناسبی را چاپ میکند‪.‬‬
‫متد ‪ :isTrain‬تشخیص میدهد ‪ n‬عدد مثلثی است یا خیر؟ در این متد تا زمانی که عدد مثلثی بعدی کوچکتر از‬
‫‪ n‬باشد‪ ،‬ادامه میدهد (حلقه تکرار ‪ .)while‬اگر عدد بعدی مثلثی برابر ‪ n‬باشد‪ ،‬متد مقدار‪ 0‬را برمیگرداند‪ .‬ولی اگدر‬
‫عدد مثلثی بعدی بزرگتر از ‪ n‬شود‪ ،‬حلقه خاتمه مییابد و متد مقدار ‪ 4‬را برمیگرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫عدد خواندهشده‬ ‫‪num‬‬ ‫‪main‬‬
‫پارامتر(عددی است که باید تشخیص داده شود‪ ،‬مثلثی است یا خیر)‬ ‫‪n‬‬ ‫‪istrain‬‬
‫اعداد مثلثی تولیدشده از ‪ 0 ،0 ،1‬و‪)....‬‬ ‫‪nextnum‬‬
‫مقداری است که باید اضافه شود تا عدد مثلثی بعدی ایجاد شود (به ترتیب‪ 7 ،6 ،4 ،0 ،2 ،0 ،1‬و‬ ‫‪i‬‬
‫‪)...‬‬

‫;‪using System‬‬
‫‪namespace p26‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static int isTrain(int n‬‬
‫{‬
‫;‪int i = 1, nextNum = 0‬‬
‫)‪while ( nextNum <= n‬‬
‫{‬
‫;‪if (nextNum == n) return 1‬‬
‫;‪nextNum = nextNum + i‬‬
‫;‪i++‬‬
‫}‬
‫;‪return 0‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int num‬‬
‫;)"‪Console.Write("Enter a number:‬‬
‫;))(‪num = int.Parse(Console.ReadLine‬‬
‫)‪if (isTrain(num)==1‬‬
‫;)"‪Console.Write("Yes‬‬
‫‪else‬‬
‫;)"‪Console.Write("No‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫متد در ‪513 C#‬‬

‫}‬
‫}‬

‫‪ .18‬متدی به نام ‪ isSquare‬که تشخیص میدهد‪ ،‬یک عدد مربعی است یا خیر؟ چند عدد مربعی عبارتاند از‪:‬‬
‫‪0‬‬ ‫‪1‬‬ ‫… ‪4 9 16 25 36 49 64 81 100 121‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬عددی را خوانده‪ ،‬با فراخوانی متد ‪ isSquare‬تشخیص میدهد مربعدی اسدت یدا خیدر؟ سدپس پیدام‬
‫مناسب را نمایش میدهد‪.‬‬
‫متد ‪ :isSquare‬متدی که ‪ n‬را گرفته‪ ،‬تشخیص میدهد ‪ n‬عددی مربعی است یا خیر؟‬
‫;‪using System‬‬
‫‪namespace p27‬‬ ‫هدف‬ ‫متغیر‬ ‫متد‬
‫{‬
‫‪ num‬عددی است که باید تعیین‬ ‫‪Main‬‬
‫‪class Program‬‬
‫{‬ ‫شود مربعی است یا خیر‬
‫)‪Static int isSquare(int n‬‬
‫{‬ ‫‪ n‬پارامتری است که باید‬ ‫‪IsSquare‬‬
‫;‪int pow=0,i=0‬‬ ‫تعیین شود مربعی است یا‬
‫)‪while(pow <= n‬‬
‫{‬ ‫خیر‬
‫;‪if (pow == n) return 1‬‬
‫;‪i++‬‬ ‫‪ i‬شمارنده‬
‫;‪pow = i * i‬‬
‫‪ Pow‬اعداد مربعی بعدی‬
‫}‬
‫;‪return 0‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int num‬‬
‫;)"‪Console.Write("Enter a number:‬‬
‫;))(‪num = int.Parse(Console.ReadLine‬‬
‫)‪if (isSquare(num) == 1‬‬
‫;)"‪Console.Write("Yes‬‬
‫‪else‬‬
‫;)"‪Console.Write("No‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫فصل سوم‬ ‫‪514‬‬

‫‪ .19‬برنامهای که ‪ x‬و ‪ y‬را خوانده‪ ،‬حاصل عبارت |𝒚||𝒚 ‪ √|𝒙 −‬را محاسبه کرده‪ ،‬نمایش میدهد‪.‬‬
‫;‪using System‬‬
‫‪namespace p28‬‬ ‫هدف‬ ‫متغیر‬
‫{‬
‫‪class Program‬‬ ‫مقدار ورودی‬ ‫‪x‬‬
‫{‬ ‫‪y‬‬
‫)‪static void Main(string[] args‬‬
‫مقدار ورودی‬
‫{‬
‫;‪int x, y‬‬
‫;)"‪Console.Write("Enter x:‬‬
‫;))(‪x = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter y:‬‬
‫;))(‪y = int.Parse(Console.ReadLine‬‬
‫‪Console.Write("Result is {0}",‬‬
‫;)) ))‪Math.Sqrt (Math.Pow(Math.Abs (x - y), Math.Abs(y‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .21‬برنامهای که نمرهای را به عدد بین صفرتا ‪ 044‬خوانده‪ ،‬توسط متدی مقدار حرفی معادل آن را برمیگرداند و‬
‫نمایش میدهد (اگر نمره بین ‪ 34‬تا ‪ 044‬باشد‪ ،‬حرف ‪ ،A‬اگر نمره بین ‪ 14‬تا ‪ 34‬باشد‪ ،‬حرف ‪ ،B‬چنانچه نمره بین ‪ 14‬تا‬
‫‪ 14‬باشد‪ ،‬حروف ‪ ،C‬وگرنه حروف ‪ F‬را نمایش میدهد)‪.‬‬
‫متد ‪ :main‬متغیر با نوع ‪ int‬به نام ‪ grade‬تعریف کرده‪ ،‬سپس با یک پیغام مناسب نمره را از ورودی خواندده‪ ،‬در‬
‫متغیر ‪ grade‬قرار میدهد‪ ،‬در ادامه با پیام مناسب و فراخوانی متد ‪ selectGrade‬نمره حرفی را نمایش میدهد‪.‬‬
‫متد ‪ :selectGrade‬نمره عددی را از طریق پارامتر ‪ grade‬دریافت میکند و نمره حرفی را برمیگرداند‪ .‬چدون‬
‫نوع متد ‪ char‬انتخاب گردید‪ ،‬با استفاده از ‪if‬های متداخل یکی از حروف ‪ C ،B ،A‬یا ‪ F‬را برمیگرداند (با توجده بده‬
‫مقدار پارامتر ‪.)grade‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغیر‬ ‫متد‬
‫‪namespace p29‬‬
‫{‬ ‫‪ grade Main‬نمره خواندهشده‬
‫‪class Program‬‬
‫{‬ ‫‪ grade selectGrade‬پارامتری که نمره متد‬
‫)‪Static char selectGrade(int grade‬‬
‫{‬ ‫‪ main‬به آن ارسال‬
‫)‪if (grade >= 80‬‬ ‫میگردد‪.‬‬
‫;'‪return 'A‬‬
‫)‪else if (grade >= 60‬‬
‫متد در ‪511 C#‬‬

‫;'‪return 'B‬‬
‫)‪else if (grade >= 50‬‬
‫;'‪return 'C‬‬
‫‪else‬‬
‫;'‪return 'F‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int grade‬‬
‫;)"‪Console.Write("Enter grade:‬‬
‫;))(‪grade = int.Parse(Console.ReadLine‬‬
‫;))‪Console.Write("Grade is {0}", selectGrade(grade‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .21‬برنامهای که سن فردی را به سال‪ ،‬ماه و روز دریافت کرده‪ ،‬توسط متدهای بهروز‪ ،‬ساعت‪ ،‬دقیقه و ثانیه تبدیل‬
‫کرده‪ ،‬برمیگرداند و سپس نمایش میدهد (هرسال ‪ 811511‬روز و هرماه ‪ 84‬روز است)‪.‬‬
‫متد ‪ :main‬متغیرهای ‪ month ،year‬و ‪ day‬را تعریف کرده‪ ،‬مقادیر سال‪ ،‬ماه و روز را با پیغدام مناسدب دریافدت‬
‫نمددوده‪ ،‬در ایددن متغیرهددا قددرار مددیدهددد‪ .‬در ادامدده بددا فراخددوانی متدددها )(‪،calculateHour() ،calculateDay‬‬
‫)(‪ calculateMinute‬و )(‪ calculateSecond‬آنها را بهروز‪ ،‬ساعت‪ ،‬دقیقه و ثانیده تبددیل کدرده‪ ،‬بدا پیغدام مناسدب‬
‫نمایش میدهد‪.‬‬
‫متد )(‪ ،calculateDay‬پارامترهای ‪( year‬سال)‪( month ،‬ماه) و ‪( day‬روز) را از متد ‪ main‬دریافدت کدرده‪ ،‬بدا‬
‫فرمول ‪( year * 360.25‬سال) بهعالوه ‪ day + month‬را برمیگرداند‪.‬‬
‫متد )(‪ ،calculatehour‬پارامترهای ‪( year‬سال)‪( month ،‬ماه) و ‪( day‬روز) را از متد ‪ main‬دریافت کدرده‪ ،‬بدا‬
‫فراخوانی )(‪ calculateDay‬تعداد روز را محاسبه و آن را در ‪ 10‬ضدرب کدرده تدا تعدداد سداعات را محاسدبه نمدوده‬
‫برگرداند‪.‬‬
‫متد )(‪ ،calculateMinute‬پارامترهای ‪ month ،year‬و ‪ day‬را از متد ‪ main‬دریافت کرده‪ ،‬بدا فراخدوانی متدد‬
‫)(‪ calculateHour‬آن را به ساعت تبدیل کرده و در ‪ 14‬ضرب میکند تا به دقیقه تبدیل کند و آن را برگرداند‪.‬‬
‫متد )(‪ ،calculateSecond‬پارامترهای ‪ month ، year‬و ‪ day‬را از متد ‪ main‬دریافت کرده‪ ،‬بدا فراخدوانی متدد‬
‫)(‪ calculateMinute‬آن را به دقیقه تبدیل کرده و آن را در ‪ 14‬ضرب میکندد تدا بده ثانیده تبددیل نمدوده و آن را‬
‫برگرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫سن به سال که کاربر وارد میکند‪.‬‬ ‫‪year‬‬

‫سن به ماه که کاربر وارد میکند‪.‬‬ ‫‪month‬‬ ‫‪main‬‬


‫سن بهروز که کاربر وارد میکند‪.‬‬ ‫‪day‬‬
‫فصل سوم‬ 511

.‫ برای این متدها دریافت میکند‬main ‫پارامتری که سال را از متد‬ year calculateDay()
calculateHouk()
.‫ برای این متدها دریافت میکند‬main ‫پارامتری که ماه را از متد‬ month calculateminute()
calculatesecond()
.‫ برای این متدها دریافت میکند‬main ‫پارامتری که روز را از متد‬ day
using System;
namespace p30
{
class Program
{
static double calculateDay(int year, int month, int day)
{
return (year * 356.25 + month * 30 + day);
}
static double calculateHour(int year, int month, int day)
{
return (calculateDay(year, month, day) * 24);
}
static double calculateMinute(int year, int month, int day)
{
return (calculateHour(year, month, day) * 60);
}
static double calculateSecond(int year, int month, int day)
{
return (calculateMinute(year, month, day) * 60);
}
static void Main(string[] args)
{
int year, month, day;
Console.Write("Enter year:");
year = int.Parse(Console.ReadLine());
Console.Write("Enter month:");
month = int.Parse(Console.ReadLine());
Console.Write("Enter day:");
day = int.Parse(Console.ReadLine());
Console.WriteLine("Day is {0}",
calculateDay(year, month, day));
Console.WriteLine("Houres is {0}",
calculateHour(year, month, day));
Console.WriteLine("Minutes is {0}",
calculateMinute(year, month, day));
Console.WriteLine("Second is {0}",
calculateSecond(year, month, day));
Console.ReadKey();
}
}
}
‫متد در ‪511 C#‬‬

‫‪ .22‬برنامهای که حقوق کارمند را خوانده‪ ،‬توسط متدی مالیات بر حقوق را محاسبه کرده‪ ،‬نمایش میدهد (مالیات‬
‫از طریق جدول زیر محاسبه میگردد)‪:‬‬
‫درصد مالیات‬ ‫تا‬ ‫از‬
‫‪0‬‬ ‫‪483000‬‬ ‫‪0‬‬
‫‪%10‬‬ ‫‪600000‬‬ ‫‪483001‬‬
‫‪%15‬‬ ‫‪100000‬‬ ‫‪600001‬‬
‫‪%20‬‬ ‫‪2000000‬‬ ‫‪1000001‬‬
‫‪%30‬‬ ‫‪99999999 2000001‬‬
‫متد ‪ :main‬متغیر ‪ salary‬را با نوع ‪ long‬تعریف کرده‪ ،‬با پیغام مناسب حقوق را دریافت میکندد‪ .‬سدپس بدا یدک‬
‫پیغام و فراخوانی متد )(‪ calculateTax‬مقدار مالیات را نمایش میدهد‪.‬‬
‫متد )(‪ :calculateTax‬پارامتر ‪ salary‬را از متد ‪ main‬دریافت میکند و سپس با ‪if‬ها متداخل مقدار مالیات را بر‬
‫اساس حقوق محاسبه میکند و برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫حقوق کارمند که از‬ ‫‪salary‬‬ ‫‪main‬‬
‫ورودی میخواند‬
‫پارامتری که حقوق‬ ‫‪salary‬‬ ‫‪calculateTa‬‬
‫;‪using System‬‬ ‫‪x‬‬
‫‪namespace p31‬‬ ‫را از متد ‪main‬‬
‫{‬ ‫دریافت میکند‪.‬‬
‫‪class Program‬‬
‫{‬
‫)‪static double calculateTax(long salary‬‬
‫{‬
‫)‪if (salary <= 483000‬‬
‫;‪return 0‬‬
‫)‪else if (salary <= 600000‬‬
‫;‪return(salary-483001)*10/ 100‬‬
‫)‪else if (salary <= 1000000‬‬
‫فصل سوم‬ 511

return ((600000 - 483001) * 10 / 100 +


(salary - 600001) * 15 / 100);
else if (salary <= 2000000)
return ((600000 - 483001) * 10 / 100 +
(1000000 - 600001) * 15 / 100 +
(salary - 2000001) * 20 / 100);
else
return ((600000 - 483001) * 10 / 100 +
(1000000 - 600001) * 15 / 100 +
(2000000 - 1000001) * 20 / 100 +
(salary - 2000001) * 30 / 100);
}
static void Main(string[] args)
{
long salary;
Console.Write("Enter salary:");
salary = long.Parse(Console.ReadLine());
Console.WriteLine ("Tax is {0}", calculateTax(salary));
Console.ReadKey();
}
}
}

‫ نمایش‬،‫ آن را محاسبه کرده‬1 ‫ با استفاده از متدی حاصلضرب ارقام باالی‬،‫ برنامهای که عددی را خوانده‬.23
.‫میدهد‬
‫ بدا پیغدام مناسدب آن را از ورودی مدیخواندد و سدپس بدا فراخدوانی متدد‬،‫ را تعریف کرده‬n ‫ متغیر‬:main ‫متد‬
.‫ را با یک پیغام مناسب نمایش میدهد‬1 ‫ حاصلضرب ارقام باالی‬،mulQ5()
‫ آن‬1 ‫ با روش بازگشتی حاصلضرب ارقام باالی‬،‫ دریافت کرده‬main() ‫ را از طریق متد‬n ‫ پارامتر‬:mulQ5() ‫متد‬
.‫را برمیگرداند‬
using System;
namespace p32
{
class Program
{
static long mulG5(int n)
{
if (n == 0) return 1;
else if (n % 10 <= 5) return mulG5(n / 10);
else return (n % 10 * mulG5(n / 10));
}
static void Main(string[] args)
{
int n;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
‫متد در ‪511 C#‬‬

‫;))‪Console.Write("The Result is {0}", mulG5(n‬‬


‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .24‬برنامهای که عددی را خوانده‪ ،‬با استفاده از یک متد حاصلضرب ارقام زوج آنها را برمیگرداند و نمایش‬
‫میدهد‪.‬‬
‫متد ‪ :main‬متغیر ‪ n‬را تعریف کرده‪ ،‬با پیغام مناسب عددی را از ورودی خوانده‪ ،‬در آن قرار میدهدد‪ .‬سدپس بدا‬
‫فراخوانی متد )(‪ ،sumEvenDigit‬حاصل جمع ارقام زوج را برگرداند و پیغام مناسب نمایش را میدهد‪.‬‬
‫متد )(‪ :sumEvenDigit‬پارامتر ‪ n‬را از متد ‪ main‬دریافت کرده‪ ،‬بدا روش بازگشدتی حاصدل جمدع ارقدام زوج‬
‫(‪ )n%10%2==0‬را محاسبه کرده و برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫عددی که از ورودی باید خوانده شود‬ ‫‪n‬‬ ‫‪Main‬‬
‫;‪using System‬‬ ‫پارامتر ‪ n‬را از طریق متد ‪ main‬دریافت میکند‪.‬‬ ‫‪n‬‬ ‫)(‪sumEvenDigit‬‬
‫‪namespace p33‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static long sumEvenDigit(long n‬‬
‫{‬
‫;‪if (n == 0) return 0‬‬
‫;)‪else if (n % 10 % 2 != 0) return sumEvenDigit(n / 10‬‬
‫;))‪else return (n % 10 + sumEvenDigit(n / 10‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪long n‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = long.Parse(Console.ReadLine‬‬
‫;))‪Console.Write("The Result is {0}", sumEvenDigit(n‬‬

‫;)(‪Console.ReadKey‬‬

‫}‬
‫}‬
‫}‬
‫فصل سوم‬ ‫‪511‬‬

‫‪ .25‬برنامهای که ‪ n‬را خوانده‪ ،‬با استفاده از یک متد ‪ n‬بار ‪ 04‬تا ‪ x‬را نمایش میدهد‪.‬‬
‫متد ‪ :main‬متغیر ‪ n‬را تعریف کرده‪ ،‬با یک پیغام ‪ n‬را از ورودی خوانده‪ ،‬با شمارندهای از ‪ 0‬تا ‪ n‬را مدیشدمارد و‬
‫در هر بار در داخل حلقه )(‪ print_10_Xs‬را فراخوانی میکند تا ‪ 04‬تا ‪ x‬را نمایش دهد‪.‬‬
‫متد )(‪ :print_ 10_Xs‬با شمارندهای ‪ 04‬تا ‪ x‬را نمایش میدهد‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫عددی که از ورودی خوانده میشود را نگهداری میکند‪.‬‬ ‫‪n‬‬ ‫‪Main‬‬
‫شمارنده از ‪ 0‬تا ‪ n‬را میشمارد‪.‬‬ ‫‪i‬‬

‫شمارندهای که از ‪ 0‬تا ‪ 01‬میشمارد‪.‬‬ ‫‪j‬‬ ‫)(‪Print-10-Xs‬‬

‫;‪using System‬‬
‫‪namespace p34‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)(‪static void Print_10_Xs‬‬
‫{‬
‫)‪for (int j = 1; j <= 10; ++j‬‬
‫;)'‪Console.Write('X‬‬
‫;‪return‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int n‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬
‫)‪for (int i = 1; i <= n; ++i‬‬
‫{‬
‫;)(‪Print_10_Xs‬‬
‫;)(‪Console.WriteLine‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫متد در ‪515 C#‬‬

‫‪ .26‬برنامهای که نمره پایانترم و میانترم دانشجویی را گرفته‪ ،‬با استفاده از یک متد نمره نهایی دانشجو را محاسبه‬
‫و برمیگرداند (نمره نهایی دانشجو برابر با نمره میانترم * ‪ + 450‬نمره پایانترم * ‪ 451‬است)‪.‬‬
‫متد ‪ :main‬متغیرهای ‪ fina_exem ،midterm_exem‬و ‪ final_grade‬را تعریف کرده‪ ،‬بدا پیغدام مناسدب نمدره‬
‫میانترم و نمره پایانترم را خوانده‪ ،‬با فراخوانی متد )(‪ Calc_Grade‬نمره نهایی را محاسبه کرده‪ ،‬در ‪final_grade‬‬
‫قرار میدهد‪ .‬با پیغام مناسب مقدار ‪ final_grade‬را نمایش میدهد‪.‬‬
‫متد )(‪ :Calc_Grade‬پارامترهدای ‪ midterm‬و ‪ final‬را از طریدق متدد ‪ main‬دریافدت مدیکندد‪ ،‬ثابدتهدای‬
‫‪ MIDTERM_WEIGHT‬و ‪ FINAL_WEIGHT‬را تعریف میکندد و ‪ final‬را تعریدف کدرده‪ ،‬نمدره نهدایی را‬
‫محاسبه مینماید و سپس برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫نمره میانترم که از ورودی خوانده میشود‬ ‫‪Midterm_exe‬‬ ‫‪main‬‬
‫‪m‬‬
‫نمره پایانترم که از ورودی خوانده میشود‬ ‫‪fina_exem‬‬
‫نمره نهایی که از طریق نمره میانترم و پایانترم محاسبه میشود‬ ‫‪final_grade‬‬
‫پارامتری که نمره میانترم را از متد ‪ main‬دریافت میکند‬ ‫‪midterm‬‬ ‫‪Calc-Grade‬‬
‫پارامتری که نمره پایان را از متد ‪ main‬دریافت میکند‬ ‫‪final‬‬

‫ضریب نمره میانترم در نمره نهایی‬ ‫‪midterm_weig‬‬


‫‪ht‬‬
‫ضریب نمره پایانترم در نمره نهایی‬ ‫‪final_weight‬‬

‫نمره نهایی محاسبهشده‬ ‫‪grade‬‬

‫;‪using System‬‬
‫‪namespace p35‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static float Calc_Grade(float midterm, float final‬‬
‫{‬
‫;‪const float MIDTERM_WEIGHT = 0.40f‬‬
‫;‪const float FINAL_WEIGHT = 0.60f‬‬
‫;‪float grade‬‬
‫;‪grade =MIDTERM_WEIGHT* midterm + FINAL_WEIGHT * final‬‬
‫فصل سوم‬ ‫‪511‬‬

‫;‪return grade‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪float midterm_exam, final_exam, final_grade‬‬
‫;)"‪Console.Write("Enter the Midterm score::‬‬
‫;))(‪midterm_exam = float.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter the final score::‬‬
‫;))(‪final_exam = float.Parse(Console.ReadLine‬‬
‫;)‪final_grade = Calc_Grade(midterm_exam, final_exam‬‬
‫;)‪Console.Write("The Final Grade is {0}", final_grade‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .27‬برنامهای که استفاده از متغیرهای محلی و سراسری را نمایش میدهد‪.‬‬


‫متد ‪ :main‬ابتدا یک متغیر محلی ‪ x‬را تعریف کرده‪ ،‬مقدار ‪ 1‬را به آن تخصیص میدهد‪ ،‬سپس مقدار ایدن متغیدر‬
‫یعنی ‪ 1‬را با یک پیغام نمایش میدهد‪ .‬در ادامه یک بالک بازکرده‪ ،‬متغیر بالکی ‪ x‬را تعریف مینماید و مقدار ‪ 1‬را در‬
‫آن قرار میدهد‪ ،‬سپس با یک پیغام مناسب مقدار متغیر بالکی ‪ x‬یعنی (‪ )1‬را نمدایش مدیدهدد‪ .‬بعدد از پایدان بدالک‬
‫تعریفشده‪ ،‬مقدار ‪ x‬متد )(‪ main‬را با یک پیغام مناسب نمایش میدهد (یعنی‪ 1 ،‬را نمایش میدهدد)‪ .‬دسدتور بعددی‪،‬‬
‫متد )(‪ useLocal‬را فراخوانی میکند تا مقدار ‪ 11‬و ‪ 11‬را نمایش دهد‪ .‬با فراخوانی متدد )(‪ useStaticLocal‬مقدادیر‬
‫‪ 14‬و ‪ 10‬را با پیغام مناسب نمایش میدهد‪ .‬در ادامه متد )(‪ useStaticLocal‬را فراخوانی مدیکندد تدا ‪ x‬سراسدری را‬
‫نمایش دهد (یعنی ‪ )0‬را نمایش میدهد و سپس ‪ x‬سراسری )‪ (x = x *10‬برابر ‪ 04‬میدهد و آن را نمدایش مدیدهدد‪.‬‬
‫دستور بعدی متد )(‪ useLocal‬را فراخوانی میکند‪ ،‬چون ‪ x‬را دوباره تعریف میکند پس مقادیر ‪ 11‬و ‪ 11‬را بدا پیغدام‬
‫مناسب نمایش میدهد‪ ،‬دستور بعدی متدد )(‪ useStaticLocal‬را فراخدوانی مدیکندد‪ ،‬چدون در ایدن متدد متغیدر ‪x‬‬
‫بهصورت ‪ static‬تعریفشده است و قبالً یکبار فراخوانی گردید‪ ،‬آخرین مقدار ‪ x‬یعنی ‪ 10‬را نمایش میدهد و سپس‬
‫یک واحد به ‪ x‬اضافه کرده‪ 11 ،‬را نمایش میدهد‪ .‬در ادامه با فراخوانی )(‪ useGlobal‬مقدار ‪ x‬سراسری یعندی ‪ 04‬را‬
‫نمایش میدهد و آن را در ‪ 04‬ضرب کرده‪ 044 ،‬را نمایش میدهد‪ .‬در پایان‪ ،‬مقدار متغیر محلی ‪ main‬یعنی ‪ 1‬نمایش‬
‫میدهد‪.‬‬
‫متد )(‪ :useLocal‬متغیر محلی ‪ x‬را تعریف کرده‪ 11 ،‬را در آن قرار میدهد و سپس با یدک پیغدام مناسدب آن را‬
‫نمایش میدهد‪ ،‬در ادامه به ‪ x‬یک واحد اضافه کرده‪ ،‬با پیغام مناسب ‪ 11‬نمایش میدهد‪.‬‬
‫متد )(‪ :useStaticLocal‬متغیر محلی ‪ x‬را بهصورت ‪ static‬با مقدار ‪ 14‬تعریف کرده‪ ،‬با پیغام مناسب مقدار آن را‬
‫نمایش میدهد‪ ،‬سپس یک واحد به ‪ x‬اضافه کرده‪ ،‬مقدار آن را با پیغام مناسب نمایش میدهدد‪ .‬در پایدان‪ ،‬متغیدر ‪ x‬را‬
‫نگه میدارد‪ ،‬چون بهصورت ‪ static‬تعریفشده است‪.‬‬
‫متد )(‪ :useGlobal‬چون متغیری به نام ‪ x‬تعریف نکرد‪ ،‬مقدار متغیر سراسری ‪ x‬را بدا یدک پیغدام مناسدب نمدایش‬
‫میدهد‪ ،‬سپس ‪ x‬را در ‪ 04‬ضرب کرده‪ ،‬مقدار آن را با یک پیغام مناسب نمایش میدهد‪.‬‬
‫;‪using System‬‬
‫‪namespace p36‬‬
513 C# ‫متد در‬

{
class Program
{
static int x = 0;
static void useLocal()
{
int x = 25;
Console.WriteLine("local x is {0} on entering
useLocal", x);
x++;
Console.WriteLine("local x is {0} on exiting
useLocal", x);
}
static void useStaticLocal()
{
int x = 50;
Console.WriteLine("local static x is {0} on entering
useStaticLocal", x);
x++;
Console.WriteLine("local static x is {0} on exiting
useStaticLocal", x);
}
static void useGlobal()
{
Console.WriteLine("global x is {0} on entering
useGlobal", x);
x *= 10;
Console.WriteLine("global x is {0} on exiting useGlobal",x);
}
static void Main(string[] args)
{
int x = 5;
Console.WriteLine("local x in main's outer scope is {0}", x);
Console.WriteLine("local x in main's outer scope is {0}", x);
useLocal();
useStaticLocal();
useGlobal();
useLocal();
useStaticLocal();
useGlobal();
Console.WriteLine( "local x in main is {0}", x );
Console.ReadKey();
}
}
}
‫فصل سوم‬ ‫‪514‬‬

‫‪ .28‬برنامهای که اطالعات جعبهای از قبیل طول‪ ،‬عرض و ارتفاع را بهعنوان پارامتر دریافت کرده‪ ،‬با استفاده از‬
‫متدی حجم جعبه را محاسبه کرده‪ ،‬نمایش میدهد (هدف این برنامه‪ ،‬آشنایی بیشتر با متدها با پارامتری با مقادیر‬
‫پیشفرض است)‪ .‬حجم جعبه برابر با ارتفاع × عرض × طول است‪.‬‬
‫متد ‪ :main‬ابتدا متد )(‪ boxVolume‬را بدون پارامتر فراخدوانی مدیکندد‪ .‬چدون در متدد ‪ boxVolume‬بدرای‬
‫پارامترها مقادیر پیشفرض ‪ 0‬در نظر گرفته شد‪ ،‬آنها را یک در نظر گرفته درهم ضرب کرده و مقدار یک را با پیغدام‬
‫مناسب نمایش میدهد‪ ،‬دستور بعدی‪ ،‬متد )‪ boxVolume(10‬را فراخوانی میکند‪ ،‬یعنی پارامتر ‪ length‬را برابر ‪ 04‬و‬
‫بقیه پارامترها را برابر یک قرار داده‪ ،‬آنها را درهم ضرب میکند‪ ،‬یعنی ‪ 04‬را با پیغام مناسدب نمدایش مدیدهدد‪ .‬در‬
‫ادامدده متددد )‪ boxVolume(10, 5‬فراخددوانی مددیگددردد تددا در پارامترهددای ‪ length‬و ‪ width‬قددرار گیرنددد‪ ،‬سددپس‬
‫حاصلضرب ‪ 10 * 5 * 1‬را با پیغام مناسب نمایش میدهد (چون ‪ height‬را یک در نظدر مدیگیدرد)‪ .‬در پایدان‪ ،‬متدد‬
‫)‪ volume(10, 5, 2‬را فراخوانی میکند تا مقادیر پارامترهای ‪ width ،length‬و ‪ height‬به ترتیب ‪ 1 ،04‬و ‪ 1‬در نظدر‬
‫گرفتهشده‪ ،‬این مقادیر را در هم ضرب کرده‪ ،‬با پیغام مناسب نمایش میدهد‪.‬‬
‫متد )(‪ :boxVolume‬پارامترهای ‪( lenght‬طول)‪( width ،‬عرض)‪( height ،‬ارتفاع) را با مقادیر پیشفدرض یدک‬
‫تعریف میکند‪ ،‬حاصلضرب ‪ length * width * height‬را برمیگرداند‪.‬‬
‫;‪using System‬‬
‫‪namespace p37‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static long boxVolume(int length = 1,int width = 1,int height= 1‬‬
‫{‬
‫;‪return length * width * height‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫‪Console.WriteLine("The default box volume is: {0}",‬‬
‫;))(‪boxVolume‬‬
‫‪Console.WriteLine("The volume of a box with length 10,‬‬
‫;))‪width 1 and height 1 is: {0}", boxVolume(10‬‬
‫‪Console.WriteLine("The volume of a box with length 10,‬‬
‫;))‪width 5 and height 1 is: {0}", boxVolume(10, 5‬‬
‫‪Console.WriteLine("The volume of a box with length 10,‬‬
‫متد در ‪511 C#‬‬

‫;))‪width 5 and height 2 is: {0}", boxVolume(10, 5, 2‬‬


‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .29‬برنامه ای که قیمت کاال و درصد تخفیف را دریافت کرده‪ ،‬به متدی ارسال میکند و این متد میزان تخفیف‬
‫کاال را برگردانده و در برنامه میزان تخفیف را نمایش میدهد‪.‬‬
‫متد ‪ :main‬متغیرهای ‪ cost‬و ‪ rate‬را تعریف کرده با پیغام مناسب این اطالعات را از ورودی میخواند و سپس با‬
‫فراخوانی متد )(‪ ،calculate‬میزان تخفیف را حساب کرده‪ ،‬با پیغام مناسب نمایش میدهد‪.‬‬
‫متد ‪ :calculate‬پارامترهای ‪ cost‬و ‪ rate‬را بهعنوان پارامتر دریافت کرده‪ ،‬حاصلضرب این دو پارامتر تقسدیمبدر‬
‫‪ 044‬برابر تخفیف است و آن را برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫قیمت کاال که از ورودی میخواند‬ ‫‪cost‬‬ ‫‪Main‬‬

‫نرخ تخفیف از ورودی میخواند‬ ‫‪rate‬‬

‫;‪using System‬‬ ‫‪ cost‬پارامتر قیمت کاال که از متد ‪ main‬دریافت میکند‪.‬‬ ‫‪Calculate‬‬


‫‪namespace p38‬‬
‫‪ rate‬پارامتر نرخ تخفیف که از طریق متد ‪ main‬دریافت میکند‪.‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static float calculate(long cost, float rate‬‬
‫{‬
‫;‪return cost * rate / 100‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪long cost‬‬
‫;‪float rate‬‬
‫;)" ‪Console.Write("Enter Cost:‬‬
‫;))(‪cost = long.Parse(Console.ReadLine‬‬
‫;)" ‪Console.Write("Enter rate:‬‬
‫;))(‪rate = float.Parse(Console.ReadLine‬‬
‫;))‪Console.WriteLine("Result is {0}",calculate(cost, rate‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫فصل سوم‬ ‫‪511‬‬

‫‪ .31‬برنامه ای که میزان موجودی حساب بانکی را به همراه درصد بهره ساالنه دریافت کرده‪ ،‬تعیین میکند سپس از‬
‫چند سال موجودی حساب (بدون برداشت هیچ مبلغی از حساب) به مبلغ خاصی میرسد (موجودی انتهای هرسال‬
‫توسط متدی محاسبه میگردد)‪.‬‬
‫متد ‪ :main‬متغیرهای ‪ rate ،newBalance ،balance‬و ‪ count‬را تعریف کرده‪ ،‬مقادیر موجودی و نرخ سدود را‬
‫با یک پیغام مناسب دریافت میکند‪ .‬سپس موجودی جدید را دریافت میکند (با یک پیغام مناسب)‪ .‬موجودی جدید‬
‫را در متغیری که موجودی پایان سال تعریف میکند (‪ )salBalance‬میباشد‪ .‬موجودی پایان سال را با فراخوانی متد‬
‫‪ calculate‬محاسبه کرده‪ ،‬تعداد سال (‪ )count‬را یک واحد اضافه میکند و در پایان‪ ،‬تعداد سال را بدا پیغدام مناسدب‬
‫نمایش میدهد‪.‬‬
‫متد ‪ :calculate‬پارامترهای ‪ balance‬و ‪ rate‬را دریافت کرده‪ ،‬موجودی فعلی بهعالوه حاصدلضدرب ‪balance‬‬
‫ضربدر ‪ rate‬تقسیمبر صد را برمیگرداند (موجودی انتهای سال جدید)‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫موجودی فعلی‬ ‫‪balance‬‬ ‫‪main‬‬

‫موجودی جدید‬ ‫‪newBalance‬‬

‫تعداد سالها‬ ‫‪count‬‬

‫موجودی در هرسال‬ ‫‪salBalance‬‬

‫پارامتر میزان موجود که از طریق موجودی که از طریق متد ‪ main‬میگیرد‪.‬‬ ‫‪balance‬‬


‫‪calculate‬‬
‫پارامتر نرخ سود که از طریق متد ‪ main‬میگیرد‪.‬‬ ‫‪rate‬‬

‫;‪using System‬‬
‫‪namespace p39‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static float calculate(float balance, float rate‬‬
‫{‬
‫;))‪return (balance + (balance * rate / 100‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪float balance, newBalance‬‬
‫;‪float rate‬‬
‫;‪int count = 0‬‬
‫;)" ‪Console.Write("Enter balance :‬‬
‫;))(‪balance = Convert.ToSingle(Console.ReadLine‬‬
‫;)" ‪Console.Write("Enter rate:‬‬
‫;))(‪rate = Convert.ToSingle(Console.ReadLine‬‬
‫متد در ‪511 C#‬‬

‫;)" ‪Console.Write("Enter new Balance:‬‬


‫;))(‪newBalance = float.Parse(Console.ReadLine‬‬
‫;‪float salBalance = balance‬‬
‫)‪while (salBalance < newBalance‬‬
‫{‬
‫;)‪salBalance = calculate(salBalance, rate‬‬
‫;‪count++‬‬
‫}‬
‫;)‪Console.WriteLine("Count is {0}", count‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .31‬برنامهای که کاراکتری را از ورودی خوانده‪ ،‬توسط متدهای تعیین میکند که کاراکتر خواندهشده‪ ،‬رقم‪،‬‬
‫حرف بزرگ و حرف کوچک است یا خیر؟‬
‫متد ‪:main‬کاراکتر ‪ ch‬را تعریف کرده‪ ،‬با نمایش یک پیغام مناسب کاراکتری را خوانده‪ ،‬در آن قدرار مدیدهدد‪.‬‬
‫سپس با فراخوانی متدها )(‪ isUpper() ،isDigit‬و )(‪ isLower‬تعیین میکند که کاراکتر دریافتی یکی از ارقام‪ ،‬حرف‬
‫بزرگ یا حرف کوچک است یا خیر؟‬
‫متد )(‪ ،isDigit‬پارامتر ‪ ch‬از نوع کاراکتر را دریافت کرده‪ ،‬اگر بین کاراکترهای ’‪ ‘0‬تا ’‪ ‘9‬باشدد‪ ،true ،‬وگرنده‬
‫‪ false‬را برمیگرداند‪.‬‬
‫متد )(‪ ،isUpper‬یک کاراکتر را بهعنوان پارامتر دریافت کرده‪ ،‬اگر بین ’‪ ‘A‬تا ’‪ ‘Z‬باشد‪ true ،‬را برمیگرداندد‪،‬‬
‫وگرنه ‪ false‬را برمیگرداند‪.‬‬
‫متد )(‪ ،isLower‬یک کاراکتر را بهعنوان پارامتر دریافت کرده‪ ،‬اگر بین ’‪ ‘a‬تا ’‪ ‘z‬باشد‪ true ،‬را برمدیگرداندد‪،‬‬
‫وگرنه ‪ false‬را برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬

‫کاراکتر ورودی‬ ‫‪ch‬‬ ‫‪main‬‬


‫پارامتری که کاراکتر را از طریق متد ‪ main‬دریافت میکند‪.‬‬ ‫‪ch‬‬ ‫)(‪isDigit‬‬
‫)(‪is upper‬‬
‫;‪using System‬‬ ‫)(‪isLower‬‬
‫‪namespace p40‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static bool isDigit(char ch‬‬
‫{‬
‫;)‪return ((ch >= '0' && ch <= '9') ? true : false‬‬
‫}‬
‫)‪static bool isUpper(char ch‬‬
‫فصل سوم‬ ‫‪511‬‬

‫{‬
‫;)‪return ((ch >= 'A' && ch <= 'Z') ? true : false‬‬
‫}‬
‫)‪static bool isLowwer(char ch‬‬
‫{‬
‫;)‪return ((ch >= 'a' && ch <= 'z') ? true : false‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪char ch‬‬
‫;)"‪Console.Write("Enter a char:‬‬
‫;))(‪ch = Convert.ToChar(Console.ReadLine‬‬
‫)‪if (isDigit(ch) == true‬‬
‫;)‪Console.Write("Character {0} is digit", ch‬‬
‫)‪else if (isUpper(ch) == true‬‬
‫;)‪Console.Write("Character {0} is upper", ch‬‬
‫)‪else if (isLowwer(ch) == true‬‬
‫;)‪Console.Write("Character {0} is lowwer", ch‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫برنامهای که عدد ‪ n‬را خوانده‪ ،‬حاصل عبارت زیر را نمایش میدهد‪:‬‬ ‫‪.32‬‬
‫!‪1! + 2! + … + n‬‬
‫این برنامه متدی برای محاسبه فاکتوریل و متد دیگری برای محاسبه مجموع دارد‪.‬‬
‫متد ‪ :main‬متغیر ‪ n‬را تعریف کرده‪ ،‬با پیغام مناسب عددی را خوانده‪ ،‬در آن قرار میدهد‪ .‬سدپس بدا فراخدوانی‬
‫متد )(‪ ،sumFact‬مجموع فاکتوریل یک تا ‪ n‬را با پیغام مناسب نمایش میدهد‪.‬‬
‫متد )(‪ ،fact‬پارامتر ‪ n‬را دریافت کرده‪ ،‬فاکتوریل ‪ n‬را برمیگرداند‪.‬‬
‫متد )(‪ ،sumFact‬پارامتر ‪ n‬را دریافت کرده‪ ،‬با فراخوانی متد )(‪ fact‬و یک حلقه‪ ،‬مجمدوع فاکتوریدل ‪ 0‬تدا ‪ n‬را‬
‫محاسبه کرده‪ ،‬در ‪ sum‬قرار میدهد و ‪ sum‬را برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫عددی که از ورودی میخواند‪.‬‬ ‫‪n‬‬ ‫‪main‬‬

‫پارامتری که باید فاکتوریل آن حساب گردد‪.‬‬ ‫‪n‬‬ ‫‪fact‬‬

‫شمارنده از یک تا ‪ n‬را میشمارد‪.‬‬ ‫‪i‬‬

‫فاکتوریل ‪ n‬را نگهداری میکند‪.‬‬ ‫‪f‬‬

‫پارامتری که باید مجموع یک فاکتوریل تا ‪ n‬فاکتوریل آن حساب گردد‪.‬‬ ‫‪n‬‬ ‫‪sumFact‬‬


‫متد در ‪511 C#‬‬

‫شمارنده از یک تا ‪ n‬را میشمارد‪.‬‬ ‫‪i‬‬

‫مجموع فاکتوریل یک تا ‪ n‬را نگهداری میکند‪.‬‬ ‫‪sum‬‬

‫;‪using System‬‬
‫‪namespace p41‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static long fact(int n‬‬
‫{‬
‫;‪long f = 1‬‬
‫)‪for (int i = n; i > 1; i--‬‬
‫{‬
‫;‪f *= i‬‬
‫}‬
‫;‪return f‬‬
‫}‬
‫)‪static long sumFact(int n‬‬
‫{‬
‫;‪long sum = 0‬‬
‫)‪for (int i = 1; i <= n; i++‬‬
‫{‬

‫;)‪sum += fact(i‬‬
‫}‬
‫;‪return sum‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫; ‪int n‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = Convert.ToInt32 (Console.ReadLine‬‬
‫;))‪Console.WriteLine("Sum is {0}", sumFact(n‬‬
‫;)(‪Console.ReadKey‬‬

‫}‬
‫}‬
‫}‬

‫𝟏‬ ‫𝟐‬ ‫𝟑‬ ‫𝐧‬


‫‪+ + + ⋯+‬‬ ‫‪ .33‬برنامهای که ‪ n‬را خوانده‪ ،‬حاصل عبارت مقابل را نمایش میدهد‪:‬‬
‫!𝟏‬ ‫!𝟐‬ ‫!𝟑‬ ‫!𝐧‬
‫متد ‪ :main‬متغیر ‪ n‬را تعریف کرده‪ ،‬با پیغام مناسب عدد را از ورودی میخوانده و در آن قرار میدهد‪ .‬سپس بدا‬
‫فراخوانی متد )‪ ،sum(n‬مجموع سری را محاسبه کرده‪ ،‬با پیغام مناسب نمایش میدهد‪.‬‬
‫متد )(‪ ،fact‬پارامتر ‪ n‬را دریافت کرده‪ ،‬فاکتوریل ‪ n‬را محاسبه میکند‪.‬‬
‫متد )(‪ ،sum‬پارامتر ‪ n‬را دریافت کرده‪ ،‬مجموع سری را محاسبه میکند و نمایش میدهد‪.‬‬
‫فصل سوم‬ 511

‫هدف‬ ‫متغیر‬ ‫متد‬


.‫ جمله سری آن باید محاسبه شود‬n ‫عددی ورودی که مجموع‬ n main

.‫ دریافت میکند‬sum ‫ را از طریق متد‬n ‫پارامتری که‬ n fact

.‫ را میشمارد‬n ‫شمارنده از یک تا‬ i

n ‫فاکتوریل‬ f
.‫ دریافت میکند‬main ‫ را از طریق متد‬n ‫پارامتری که‬ n sum
.‫ را میشمارد‬n ‫شمارنده از یک تا‬ i

‫مقدار مجموع‬ s

using System;
namespace p42
{
class Program
{
static long fact(int n)
{
long f = 1;
for (int i = n; i > 1; i--)
{
f *= i;
}
return f;
}
static float sum(int n)
{
float s = 0;
for (int i = 1; i <= n; i++)
{
s += (float)i / fact(i);
}
return s;
}
static void Main(string[] args)
{
int n;
Console.Write("Enter n:");
n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Sum is {0}", sum(n));
Console.ReadKey();
}
}
}
‫متد در ‪515 C#‬‬

‫𝐱‬ ‫𝟐𝐱‬ ‫𝟑𝐱‬ ‫𝐧𝐱‬


‫‪+‬‬ ‫‪+‬‬ ‫‪+⋯+‬‬ ‫‪ .34‬برنامهای که ‪ x‬و ‪ n‬را خوانده‪ ،‬حاصل عبارت مقابل را نمایش میدهد‪:‬‬
‫!𝟏‬ ‫!𝟐‬ ‫!𝟑‬ ‫!𝐧‬
‫این برنامه متدهای برای محاسبه فاکتوریل‪ ،‬توان (‪ )xn‬و مجموع سری دارد‪.‬‬
‫متد ‪ x :main‬و ‪ n‬را تعریف کرده‪ ،‬دو عدد را خوانده‪ ،‬در آنها قرار میدهد و سپس با فراخوانی متدد )‪،sum(n‬‬
‫مجموع سری را برمیگرداند و نمایش میدهد‪.‬‬
‫متد ‪ :fact‬پارامتر ‪ n‬را دریافت کرده‪ n ،‬فاکتوریل را برمیگرداند‪.‬‬
‫متد )(‪ ،sum‬پارامترهای ‪ x‬و ‪ n‬را دریافت کرده‪ ،‬با فراخوانی متدها )‪ pow(x, i‬تقسیم )‪ fact(i‬و یک حلقه تکدرار‬
‫مجموع سری را محاسبه میکند و برمیگرداند‪.‬‬
‫متد )(‪ x ،pow‬و ‪ n‬را بهعنوان پارامتر دریافت کرده‪ xn ،‬را برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫عددی ورودی‬ ‫‪x‬‬ ‫‪main‬‬
‫عددی ورودی‬ ‫‪n‬‬
‫پارامتر ‪n‬‬ ‫‪n‬‬ ‫‪fact‬‬

‫شمارنده از یک تا ‪ n‬را میشمارد‪.‬‬ ‫‪i‬‬

‫فاکتوریل ‪n‬‬ ‫‪F‬‬


‫پارامتر ‪n‬‬ ‫‪n‬‬ ‫‪sum‬‬
‫شمارنده از یک تا ‪ n‬را میشمارد‪.‬‬ ‫‪i‬‬
‫مجموع سری‬ ‫‪s‬‬
‫پارامتر ‪x‬‬ ‫‪x‬‬
‫;‪using System‬‬
‫‪namespace p43‬‬ ‫پارامتری که پایه توان است‬ ‫‪x‬‬ ‫‪pow‬‬
‫{‬ ‫‪n‬‬
‫‪class Program‬‬ ‫پارامتری که توان را مشخص میکند‪.‬‬
‫{‬ ‫‪ x‬به توان ‪ n‬را نگهداری میکند‪.‬‬ ‫‪p‬‬
‫)‪static long fact(int n‬‬
‫{‬ ‫شمارندهای که از یک تا ‪ n‬را میشمارد‪.‬‬ ‫‪i‬‬
‫;‪long f = 1‬‬
‫)‪for(int i=n; i > 1; i--‬‬
‫{‬
‫;‪f *= i‬‬
‫}‬
‫;‪return f‬‬
‫}‬
‫)‪static float sum(float x, int n‬‬
‫{‬
‫;‪float s = 0‬‬
‫)‪for(int i=1;i<=n; i++‬‬
‫فصل سوم‬ ‫‪511‬‬

‫{‬
‫;)‪s+=(float)Math.Pow (x, i) / fact(i‬‬
‫}‬
‫;‪return s‬‬
‫}‬
‫)‪static float pow(float x, int n‬‬
‫{‬
‫;‪float p = 1.0f‬‬
‫;‪for (int i = 1; i <= n; i++) p *= x‬‬
‫;‪return p‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int n‬‬
‫;)"‪Console.Write("Enter x:‬‬
‫;))(‪float x = Convert.ToSingle(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = Convert.ToInt32(Console.ReadLine‬‬
‫;))‪Console.WriteLine("Sum is {0}", sum(x, n‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .35‬برنامهای که ‪ x‬و ‪ n‬را خوانده‪ ،‬حاصل جمع ‪ n‬جمله سری زیر را نمایش میدهد‪:‬‬
‫𝟐𝐱 𝐱‬ ‫𝟑𝐱‬ ‫𝟓𝐱‬
‫‪+ +‬‬ ‫‪+ ⋯+‬‬
‫𝟑∗𝟏 𝟐 𝟏‬ ‫𝟓∗𝟑∗𝟏‬
‫متد ‪ :main‬ابتدا ‪ x‬و ‪ n‬را تعریف کرده‪ ،‬دو عدد را خوانده در این دو متغیر قرار میدهد‪ .‬سپس متغیر ‪ s‬را تعریدف‬
‫کرده‪ ،‬با فراخوانی متد )‪ ،sum(x, n‬مجموع سری را محاسبه مینماید و در آن قرار میدهد‪ ،‬در پایان‪ ،‬مقددار ‪ s‬را بدا‬
‫پیغام مناسب نمایش میدهد‪.‬‬
‫متد )(‪ :mul‬پارامتر ‪( start‬شروع ضرب عدد ‪ 0‬یا ‪ 1‬است) و ‪ n‬را دریافت کرده‪ ،‬حاصلضرب اعدداد زوج ‪ 1‬تدا ‪n‬‬
‫(اگر ‪ strat = 2‬باشد) یا حاصلضرب اعداد فرد تا ‪( n‬اگر ‪ start = 1‬باشد) را برمیگرداند‪.‬‬
‫متد )(‪ ،sum‬پارامترهای ‪ x‬و ‪ n‬را دریافت کرده‪ ،‬با فراخوانی متدها )‪ pow(x, i‬تقسیمبر )‪ mul(1, i‬یا )‪ mul(2, i‬و‬
‫یک حلقه تکرار حاصل جمع سری را حساب کرده‪ ،‬برمیگرداند‪.‬‬
‫متد )(‪ :pow‬با دریافت پارامترهای ‪ x‬و ‪ n‬حاصل ‪ xn‬را برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫عددی ورودی‬ ‫‪x‬‬ ‫‪main‬‬

‫تعداد حمالت سری‬ ‫‪n‬‬

‫مجموع سری بعد از فراخوانی متد )‪sum(x, n‬‬ ‫‪S‬‬


513 C# ‫متد در‬

‫ که تعداد و جمالت را تعیین میکند‬n ‫پارامتر‬ n Sum

x ‫پارامتر‬ x

‫مجموع سری جمالت سری‬ S

‫شمارنده‬ i
xn ‫پارامتر پایه برای‬ x Pow

xn ‫پارامتر توان برای‬ n


‫ را نگهداری میکند‬xn p
n ‫ تا‬0 ‫شمارنده از‬ i
x ‫پارامتر‬ n Mul

‫حاصلضرب اعداد زوج یا فرد‬ p


2 ‫ تا‬0 ‫ شروع حاصلضرب از‬start
using System;
namespace p44 ‫ برای تولید اعداد‬2 ‫ شمارنده زوج یا فرد با گام‬i
{
class Program
{
static long mul(int start, int n)
{
long p = 1;
for (int i = start; i <= n; i += 2)
{
p *= i;
}
return p;
}
static float sum(float x, int n)
{
float s = 0;
for (int i = 1; i <= n; i++)
{
if (i % 2 == 0)
s += (float)pow(x, i) / mul(2, i);
else
s += (float)pow(x, i) / mul(1, i);
}
return s;
}
static float pow(float x, int n)
{
float p = 1.0f;
for (int i = 1; i <= n; i++) p *= x;
return p;
}
static void Main(string[] args)
‫فصل سوم‬ 514

{
int n;
Console.Write("Enter x:");
float x = Convert.ToSingle(Console.ReadLine());
Console.Write("Enter n:");
n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Sum is {0}", sum(x, n));
Console.ReadKey();
}
}
}

:‫ جمله سری زیر را نمایش میدهد‬n ‫ حاصل‬،‫ را خوانده‬n ‫ و‬x ‫ برنامهای که‬.36
𝐱 𝐱𝟐 𝐱𝟑 𝐱𝟒 𝐱𝟓
− + − + +⋯
𝟏 𝟐 𝟏∗𝟑 𝟐∗𝟒 𝟏∗𝟑∗𝟓
.‫ ضرب شده است‬-0 ‫ جمله در‬،sum ‫ فقط در جمالت زوج متد‬.‫متدها و متغیرهای این برنامه مانند برنامه قبلی است‬
using System;
namespace p45
{
class Program
{
static long mul(int start, int n)
{
long p = 1;
for (int i = start; i <= n; i += 2)
{
p *= i;
}
return p;
}
static float sum(float x, int n)
{
float s = 0;
for (int i = 1; i <= n; i++)
{
if (i % 2 == 0)
s += (float)pow(x, i) / mul(2, i) * -1;
else
s += (float)pow(x, i) / mul(1, i);
}
return s;
}
static float pow(float x, int n)
{
float p = 1.0f;
511 C# ‫متد در‬

for (int i = 1; i <= n; i++) p *= x;


return p;
}
static void Main(string[] args)
{
int n;
Console.Write("Enter x:");
float x = Convert.ToSingle(Console.ReadLine());
Console.Write("Enter n:");
n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Sum is {0}", sum(x, n));
Console.ReadKey();
}
}
}

:‫ جمله عبارت زیر را نمایش میدهد‬n/2 ‫ حاصل‬،‫ را خوانده‬n ‫ و‬x ‫ برنامهای که‬.37
𝐱𝟐 𝐱𝟒 𝒙𝟔
− + − +⋯
𝟐 𝟐∗𝟒 𝟐∗𝟒∗𝟔
.‫ است‬44 ‫متدها و متغیرهای این برنامه همانند برنامه سؤال‬
using System;
namespace p46
{
class Program
{
static long mul(int start, int n)
{
long p = 1;
for (int i = start; i <= n; i += 2)
{
p *= i;
}
return p;
}
static float sum(float x, int n)
{
float s = 0, sign = -1;
for (int i = 1; i <= n; i += 2)
{
s += (float)pow(x, i) / mul(2, i) * sign;
sign = -sign;
}
return s;
}
‫فصل سوم‬ ‫‪511‬‬

‫‪static float‬‬ ‫)‪pow(float x, int n‬‬


‫{‬
‫;‪float p = 1.0f‬‬
‫;‪for (int i = 1; i <= n; i++) p *= x‬‬
‫;‪return p‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int n‬‬
‫;)"‪Console.Write("Enter x:‬‬
‫;))(‪float x = Convert.ToSingle(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = Convert.ToInt32(Console.ReadLine‬‬
‫;))‪Console.WriteLine("Sum is {0}", sum(x, n‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .38‬برنامهای که دو مقدار عددی را خوانده‪ ،‬سپس توسط متدی به عدد اول یک واحد اضافه نماید و از عدد دوم‬
‫یک واحد کسر کرده‪ ،‬آنها را در برنامه اصلی نمایش میدهد‪.‬‬
‫در این برنامه دو متد به نامهای ‪ incDec‬و ‪ incDec1‬نوشتهشده است‪ .‬متد ‪ incDec‬که پارامترها را بهصورت ارسال‬
‫پارامتر به مقدار فراخوانی میکند‪ .‬در این صورت تغییرات پارامتری مجازی برای پارامتر واقعی ارسال نمیگردد‪ .‬اما‪،‬‬
‫متد ‪ incDec1‬دو پارامتر نوع ارجاع را میپذیرد و مقادیر تغییریافته آنها را به برنامه اصلی برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫عدد اول ورودی‬ ‫‪x‬‬ ‫‪main‬‬

‫عدد دوم ورودی‬ ‫‪y‬‬


‫;‪using System‬‬ ‫پارامتر اول با ارسال مقدار‬ ‫‪x‬‬ ‫‪incDec‬‬
‫‪namespace p47‬‬
‫{‬ ‫پارامتر دوم با ارسال مقدار‬ ‫‪y‬‬
‫‪class Program‬‬
‫{‬ ‫پارامتر اول با ارسال ارجاع‬ ‫‪x‬‬ ‫‪ineDec1‬‬
‫)‪static void incDec(int x,int y‬‬ ‫‪y‬‬
‫{‬
‫پارامتر دوم با ارسال ارجاع‬
‫;‪x++‬‬
‫;‪y--‬‬
‫}‬
‫)‪static void incDec1(ref int x, ref int y‬‬
‫{‬
‫;‪x++‬‬
‫;‪y--‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫متد در ‪511 C#‬‬

‫{‬
‫;‪int a, b‬‬
‫;)"‪Console.Write("Enter a:‬‬
‫;))(‪a = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter b:‬‬
‫;))(‪b = Convert.ToInt32(Console.ReadLine‬‬
‫;)‪incDec(a, b‬‬
‫;)‪Console.WriteLine("a = {0}\tb={1}",a, b‬‬
‫;)‪incDec1(ref a, ref b‬‬
‫;)‪Console.WriteLine("a = {0}\tb={1}", a, b‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .39‬برنامهای که ‪ x‬و ‪ k‬را خوانده‪ ،‬لگاریتم ‪ x‬در مبنای ‪ k‬را با یک متد محاسبه کرده‪ ،‬نمایش میدهد‪.‬‬
‫متد ‪ :main‬با یک پیغام مناسب ‪ k‬و ‪ n‬را خوانده‪ ،‬با فراخوانی متد )‪ log(n, k‬مقددار لگداریتم را محاسدبه کدرده‪،‬‬
‫نمایش میدهد‪.‬‬
‫متد )(‪ x ،loge‬را از نوع ‪ float‬دریافت میکند و از طریق سری لگاریتم ‪ x‬را محاسبه میکند‪.‬‬
‫متد )(‪ ،log‬مقدار ‪ x‬و ‪ k‬را بهعنوان پارامتر دریافت کرده‪ ،‬مقدار )‪ log(x‬بر )‪ log(k‬را برمیگرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫عدد ورودی‬ ‫‪n‬‬ ‫‪main‬‬

‫عدد ورودی‬ ‫‪k‬‬

‫پارامتر ورودی‬ ‫‪x‬‬ ‫‪loge‬‬


‫متغیر که ‪ x-1‬تقسیمبر ‪ x+1‬را برای محاسبه ‪ log‬نگهداری میکند‪.‬‬ ‫‪y‬‬

‫مقدار ‪ log‬در هر مرحله که در مرحله اول صفر است‪.‬‬ ‫‪1n1‬‬


‫مقدار ‪ log‬در هر مرحله بعد که در مرحله اول برابر با ‪ 2*y‬است‪.‬‬ ‫‪1n2‬‬
‫شمارنده که از ‪ 0‬تا ‪ 01111‬اعداد فرد را میشمارد‪.‬‬ ‫‪k‬‬
‫است که در مرحله اول ‪ p‬برابر ‪ p‬است‪.‬‬ ‫‪p*y2‬‬ ‫در هر مرحله‬ ‫‪p‬‬
‫پارامتر ورودی‬ ‫‪x‬‬ ‫‪log‬‬

‫پارامتر ورودی‬ ‫‪k‬‬


‫;‪using System‬‬
‫‪namespace p48‬‬
‫{‬
‫‪class Program‬‬
‫فصل سوم‬ ‫‪511‬‬

‫{‬
‫‪static‬‬ ‫)‪float loge(float x‬‬
‫{‬
‫;)‪float y = (x - 1) / (1 + x‬‬
‫;‪float ln1 = 0, ln2 = 2 * y‬‬
‫;‪float k = 1‬‬
‫;‪float p = y‬‬
‫)‪while (k < 10000‬‬
‫{‬
‫;‪ln1 = ln2‬‬
‫;‪k += 2‬‬
‫;‪p = p * y * y‬‬
‫;‪ln2 += 2 / k * p‬‬
‫}‬
‫;‪return ln2‬‬
‫}‬
‫)‪static float log(int x, int k‬‬
‫{‬
‫;)‪return loge(x) / loge(k‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int n, k‬‬
‫;)"‪Console.Write("Enter Logarithm of:‬‬
‫;))(‪n = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter base of:‬‬
‫;))(‪k = Convert.ToInt32(Console.ReadLine‬‬
‫;))‪Console.WriteLine(log(n, k‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .41‬برنامهای سه عدد را خوانده توسط متدی یکی از مقادیر زیر را برگرداند‪:‬‬


‫اگر سه عدد تشکیل مثلث را نمیدهند‪ ،‬صفر را برگرداند‪.‬‬
‫اگر سه عدد تشکیل مثلث قائمالزاویه را میدهند‪ ،‬عدد یک را برمیگرداند‪.‬‬
‫اگر سه عدد تشکیل مثلث متساویالساقین را میدهند‪ ،‬عدد ‪ 1‬را برمیگرداند‪.‬‬
‫اگر سه عدد تشکیل مثلث متساویاالضالع را میدهند‪ ،‬عدد ‪ 8‬را برمیگرداند‪.‬‬
‫وگرنه عدد ‪ -0‬را برمیگرداند‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬سه عدد را با نمایش پیغام مناسب میخواند و با فراخوانی متد )(‪ printMessage‬که پارامتر آن متدد‬
‫)‪ isTriangle(a, b, c‬است (یعنی‪ ،‬این متد یکی از مقادیر ‪ 8 ،1 ،0 ،4‬یا ‪ -0‬را برمیگرداند)‪ ،‬پیغدام مناسدب را نمدایش‬
‫میدهد‪.‬‬
‫متد در ‪511 C#‬‬

‫متد )(‪ ،isTraingle‬پارامترهای ‪ b ،a‬و ‪ c‬را بهعنوان اضالع مثلث دریافت کرده‪ ،‬اگر حاصل جمدع هدر دو ضدلع‬
‫بیشتر از ضلع سوم نباشد (یعنی‪ ،‬سه عدد تشکیل مثلث را نمیدهند) صفر را برمیگرداند‪ ،‬وگرنه‪ ،‬اگر هر سه ضلع برابر‬
‫باشند (یعنی‪ ،‬سه عدد تشکیل متساوی اضالع را میدهد) و متدد ‪ 8‬را برمدیگرداندد (در ایدن بخدش ‪ if‬از عملگدر &&‬
‫استفاده کرده که چک میکند مقادیر ‪ b ،a‬و ‪ c‬همه با هم برابر باشند تا ‪ 8‬را برگرداند)‪ ،‬وگرنه‪ ،‬اگر دو ضلع ‪ a‬با ‪ b‬یا ‪b‬‬
‫با ‪ c‬یا ‪ a‬با ‪ c‬برابر باشد‪ ،‬متد مقدار ‪ 1‬را برمیگرداند‪ ،‬وگرنه‪ ،‬اگر توان ‪ 1‬یک ضلع برابر با حاصدل جمدع تدوان ‪1‬هدای‬
‫اضالع دیگر باشد‪ ،‬متد ‪ 0‬را برمیگرداند‪.‬‬
‫متد )(‪ ،pirntMessage‬مقدار ‪ n‬را بهعنوان پارامتر دریافت کرده و با توجه مقدار ‪( n‬صدفرتا ‪ )8‬پیغدام مناسدب را‬
‫نمایش میدهد‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫اضالع مثلث‬ ‫‪a, b, c‬‬
‫‪Main‬‬
‫پارامترهای اول‪ ،‬دوم و سوم‬ ‫‪a, b, c‬‬ ‫‪IsTriangle‬‬
‫پارامتر که اعداد صفرتا سه را برای چاپ پیام مناسب دریافت میکند‪.‬‬ ‫‪n‬‬ ‫‪printMessage‬‬
‫;‪using System‬‬
‫‪namespace p49‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static int isTriangle(int a, int b, int c‬‬
‫{‬
‫;‪if (!(a + b > c && a + c > b && b + c > a)) return 0‬‬
‫;‪else if (a == b && b == c && a == c) return 3‬‬
‫;‪else if (a == b || b == c || a == c) return 2‬‬
‫|| ‪else if (a * a == b * b + c * c‬‬
‫)‪b * b == c * c + a * a || a * a + b * b == c * c‬‬
‫;‪return 1‬‬
‫;‪else return -1‬‬
‫}‬
‫)‪static void printMessage(int n‬‬
‫{‬
‫)‪switch (n‬‬
‫{‬
‫‪case 0:‬‬
‫;)"‪Console.Write("Not triangle‬‬
‫;‪break‬‬
‫‪case 1:‬‬
‫;)"‪Console.Write("right angled‬‬
‫;‪break‬‬
‫‪case 2:‬‬
‫;)"‪Console.Write("isosceles triangle‬‬
‫;‪break‬‬
‫‪case 3:‬‬
‫;)"‪Console.Write("equilateral triangle‬‬
‫;‪break‬‬
‫}‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫فصل سوم‬ ‫‪511‬‬

‫{‬
‫;‪int a, b, c‬‬
‫;)"‪Console.Write("Enter a:‬‬
‫;))(‪a = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter b:‬‬
‫;))(‪b = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter c:‬‬
‫;))(‪c = Convert.ToInt32(Console.ReadLine‬‬
‫;))‪printMessage(isTriangle(a, b, c‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .41‬برنامهای که اعداد ‪ n‬و ‪ b‬را خوانده‪ ،‬عدد ‪ n‬را به روش بازگشتی از مبنای ‪ 04‬به مبنای ‪ b‬تبدیل میکند (دقت‬
‫داشته باشید که ‪ ،b‬مبنای کوچکتر از ‪ 04‬است)‪.‬‬
‫متد ‪ :main‬با پیغام مناسب‪ ،‬دو عدد ‪ n‬و ‪ b‬را دریافت میکند و با فراخوانی متد ‪ ،convert‬عدد ‪ n‬را بده مبندای ‪b‬‬
‫تبدیل مینماید و نمایش میدهد‪.‬‬
‫متد )(‪ :convert‬پارامترهای ‪ n‬و ‪ b‬را دریافت میکند و تا زمانی کده ‪ n‬بدزرگتدر از صدفر باشدد‪ ،‬بدا فراخدوانی‬
‫)‪ ،convert(n/b, b‬یعنی تقسیم متوالی ‪ n‬بر ‪ b‬عدد ‪ n‬را به مبنای ‪ b‬تبدیل میکند و نمایش میدهد (برای تبدیل مبندا‬
‫از باقیمانده تقسیم متوالی ‪ n‬و ‪ b‬استفاده میکند)‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫عدد دریافتی‬ ‫‪n‬‬ ‫‪Main‬‬

‫مبنای که ‪ n‬باید به آن مبنا تبدیل شود‬ ‫‪b‬‬


‫پارامتر که عدد ورودی ‪ n‬را از متد ‪main‬‬ ‫‪n‬‬ ‫‪convert‬‬
‫دریافت میکند‪.‬‬
‫;‪using System‬‬ ‫پارامتری که مبنای ‪ b‬را از متد ‪main‬‬ ‫‪b‬‬
‫‪namespace p50‬‬
‫{‬ ‫دریافت میکند‪.‬‬
‫‪class Program‬‬
‫{‬
‫)‪static void convert(int n, int b‬‬
‫{‬
‫)‪if (n > 0‬‬
‫{‬
‫;)‪convert(n / b, b‬‬
‫; )‪Console.Write(n % b‬‬
‫}‬
‫}‬
515 C# ‫متد در‬

static void Main(string[] args)


{
int n, b;
Console.Write("Enter n:");
n = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter b:");
b = Convert.ToInt32(Console.ReadLine());
convert(n, b);
Console.ReadKey();
}
}
}

𝐝(𝐧)
(𝒆𝒂𝒙 ) :‫ام را محاسبه میکند‬n ‫ برنامهای که با روش بازگشتی مقدار مشتق‬.42
𝐝𝐧
(𝒆 )𝒏 =
𝒂𝒙
𝒂(𝒆𝒂𝒙 )𝒏−𝟏 :‫ رابطه بازگشتی مقابل به دست میآید‬،‫ مشتق بگیریم‬eax ‫ اگر از متد‬:‫توضیح‬
:‫وظایف متدها‬
‫ و یک پیغام مناسب حاصدل‬derivate() ‫ را خوانده و با فراخوانی متد‬n ‫ و‬x ،a ‫ با نمایش پیغام مناسب‬:main ‫متد‬
𝐝(𝐧)
.‫را نمایش میدهد‬ (𝒆𝒂𝒙 ) ‫عبارت‬
𝐝𝐧
𝐚𝐱 𝐧 𝒂𝒙 𝒏−𝟏
، (𝐞 ) = 𝒂(𝒆 ) ‫ بهصورت بازگشتی بدا تعریدف‬،‫ را دریافت کرده‬x ‫ و‬a ،n ‫ پارامترهای‬،derivate() ‫متد‬
.‫حاصل مشتق را محاسبه میکند و برمیگرداند‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫متغیرهای ورودی‬ a, x, n main

‫ دریافت میکند‬main ‫ را از متد‬n ‫پارامتری که مقدار‬ n derivate

‫ دریافت میکند‬main ‫ را از متد‬a ‫پارامتری که مقدار‬ a


using System; ‫ دریافت میکند‬main ‫ را از متد‬x ‫پارامتری که مقدار‬ x
namespace p51
{
class Program
{
static double derivate(float n, float a, float x)
{
if (n < 1) return (Math.Exp (a * x));
else return (a * derivate(n - 1, a, x));
}
static void Main(string[] args)
{
int n;
float a, x;
Console.Write("Enter a:");
a = Convert.ToSingle(Console.ReadLine());
‫فصل سوم‬ ‫‪511‬‬

‫;)"‪Console.Write("Enter x:‬‬
‫;))(‪x = Convert.ToSingle(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = Convert.ToInt32(Console.ReadLine‬‬
‫;))‪Console.Write("The answer is {0}", derivate(n, a, x‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .43‬برنامهی که ‪ tan ،cos ،sin‬زوایای مضرب پنج از ‪ 1‬تا ‪ 94‬را در خروجی با فرمت جدولبندی مناسب تا سه رقم‬
‫اعشار نمایش میدهد ‪ .‬برای محاسبه زوایا باید از درجه به رادیان تبدیل شوند‪ .‬برای این منظور از فرمول زیر استفاده‬
‫𝐑‬ ‫𝐃‬ ‫𝑫∗𝟓𝟏𝟒𝟏‪𝟑.‬‬
‫=‬ ‫=𝑹⇒‬ ‫میشود‪:‬‬
‫𝟓𝟏𝟒𝟏‪𝟑.‬‬ ‫𝟎𝟎𝟖𝟏‬ ‫𝟎𝟖𝟏‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬با یک حلقه تکرار از ‪ 1‬تا ‪ 94‬درج را با گام افزایش ‪ 1‬میشمارد تا اعداد مضرب ‪ 1‬بین ‪ 1‬تا ‪ 94‬را تولید‬
‫کند و سپس در داخل حلقه هر زاویه به درجه ‪ d‬را به رادیان تبدیل میکند و با فراخوانی متدها ‪ cos ،sin‬و ‪ tan1‬که‬
‫در فایل ‪ math.h‬قرار دارند‪ ،‬معادل سینوس‪ ،‬کسینوس و تانژانت آنها را نمایش میدهد‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫شمارندهای که زاویه به درجه از زاویه ‪ 5‬تا ‪ 91‬درجه را میشمارد که مضرب ‪5‬‬ ‫‪d‬‬ ‫‪main‬‬
‫هستند (یعنی‪ ،‬هر بار ‪ 5‬واحد به آن اضافه میکند‪).‬‬
‫زاویه به رادیان‬ ‫‪r‬‬

‫;‪using System‬‬
‫‪namespace p52‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪float r‬‬
‫)‪for (int d = 5; d <= 90; d += 5‬‬
‫{‬
‫;‪r = 3.1415f * d / 180‬‬
‫)‪Console.Write("Sin({0})= {1}",d,Math.Floor(Math.Sin(r‬‬
‫;)‪* 1000 + 0.5f) / 1000‬‬
‫‪Console.Write("\t\tCos({0})= {1} ", d,‬‬
‫;)‪Math.Floor(Math.Cos(r) * 1000 + 0.5f) / 1000‬‬
‫‪Console.Write("\t\tTan({0})= {1}", d,‬‬
‫;)‪Math.Floor(Math.Tan (r) * 1000 + 0.5f) / 1000‬‬
‫;)(‪Console.WriteLine‬‬
‫متد در ‪513 C#‬‬

‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫}‬

‫‪ .44‬برنامهای که ‪ 01‬جمله دنباله زیر را به کمک بازگشتی زیر نمایش میدهد‪:‬‬


‫‪F(1) = 2‬‬ ‫اگر ‪n == 1‬‬
‫وگرنه ‪F(n) = 2 * F(n-1) + 1‬‬
‫متد ‪ :main‬ابتدا یک پیغام مناسب نمایش میدهد‪ ،‬سپس با یک حلقه تکرار از ‪ 0‬تا ‪ 01‬میشدمارد و بدا فراخدوانی‬
‫متد )‪ 01 ،F(i‬جمله سری را تولید کرده‪ ،‬نمایش میدهد‪.‬‬
‫متد ‪ n ،f‬را دریافت کرده‪ ،‬با رابطه بازگشتی تعیینشده مقدار سری را برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫;‪using System‬‬
‫‪namespace p53‬‬ ‫شمارندهای که از ‪ 0‬تا ‪ 05‬را میشمارد تا ‪ 05‬عدد سری را تولید کند‪.‬‬ ‫‪i‬‬ ‫‪Main‬‬
‫{‬ ‫پارامتری که مقدار ‪ i‬را از متد ‪ main‬دریافت میکند‪.‬‬ ‫‪n‬‬ ‫‪f‬‬
‫‪class Program‬‬
‫{‬
‫)‪static long f(int n‬‬
‫{‬
‫;‪if (n == 1) return 2‬‬
‫;)‪else return (2 * f(n - 1) + 1‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Result is\t‬‬
‫)‪for (int i = 1; i <= 15; i++‬‬
‫{‬
‫;))‪Console.Write("{0}\t", f(i‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .45‬برنامهای که حاصل عبارت ‪ f(x) = 5x2-3x+4‬را برای مقادیر صحیح و اعشاری ‪ x‬با دو متد هم نام محاسبه‬
‫کرده و نمایش میدهد‪.‬‬
‫متد ‪ :main‬متغیرهای‪ x1‬و ‪ x2‬را به ترتیب از نوع صحیح و اعشاری تعریف میکند و با نمایش پیغامهدای مناسدب‬
‫آن ها را از ورودی میخواند و با فراخوانیهای متد همنام ‪( f‬یکبار برای عدد صحیح و یکبار بری عددد اعشداری)‬
‫مقادیر متد ‪ F‬را برای اعداد صحیح ‪ x1‬و ‪ x2‬نمایش میدهد‪.‬‬
‫فصل سوم‬ ‫‪514‬‬

‫متد همنام )(‪ ،F‬پارامتر ‪ x‬را دریافت کرده‪ ،‬حاصل متد را برمیگرداند‪ .‬این متدها هم نام که یکمرتبه پدارامتر ‪x‬‬
‫را از نوع اعشاری (‪ )float‬و بار دیگر آن را از نوع صحیح (‪ )int‬دریافت میکند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬

‫عدد صحیح که ‪ x‬را نگهداری میکند‪.‬‬ ‫‪x1‬‬ ‫‪main‬‬

‫عدد اعشاری که ‪ x‬را نگهداری میکند‪.‬‬ ‫‪x2‬‬

‫پارامتری که عدد اعشاری ‪ x2‬را از متد ‪ main‬دریافت میکند‪.‬‬ ‫‪x‬‬ ‫‪F‬‬

‫پارامتری که عدد صحیح ‪ x1‬را از متد ‪ main‬دریافت میکند‪.‬‬ ‫‪x‬‬ ‫همنام ‪F‬‬

‫;‪using System‬‬
‫‪namespace p54‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static float F(float x‬‬
‫{‬
‫;)‪return (5 * x * x - 3 * x + 4‬‬
‫}‬
‫)‪static int F(int x‬‬
‫{‬
‫;)‪return (5 * x * x - 3 * x + 4‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int x1‬‬
‫;‪float x2‬‬
‫;)"‪Console.Write("Enter x1:‬‬
‫;))(‪x1 = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter x2:‬‬
‫;))(‪x2 = float.Parse(Console.ReadLine‬‬
‫;))‪Console.WriteLine("F({0}):{1}", x1, F(x1‬‬
‫;))‪Console.WriteLine("F({0}):{1}", x2, F(x2‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .46‬برنامهای که قاعده و ارتفاع مثلث را خوانده‪ ،‬با استفاده دو متد همنام مساحت مثلث را حساب میکند‪ .‬مساحت‬
‫مثلث برابر باقاعده ضربدر نصف ارتفاع است‪ .‬در ضمن ارتفاع و قاعده میتوانند دو عدد صحیح یا دو عدد اعشاری‬
‫باشند‪.‬‬
‫متد در ‪511 C#‬‬

‫متد ‪ :main‬متغیرهای ‪( b‬قاعده با نوع صحیح)‪( b1 ،‬قاعده با نوع اعشاری)‪( h ،‬ارتفاع با نوع صحیح) و ‪( h1‬ارتفاع‬
‫با نوع اعشاری) را تعریف کرده‪ ،‬با پیغام مناسب آنها را خوانده و با فراخوانی متدها هم نام ‪ surface‬مساحت مثلدث‬
‫را یکبار با ارتفاع و قاعده صحیح و بار دیگر با قاعده و ارتفاع اعشاری محاسبه کرده‪ ،‬با پیغام مناسب نمایش میدهد‪.‬‬
‫متد )(‪ :suface‬پارامترهای ‪ x‬و ‪( y‬قاعده و ارتفاع) را دریافت کرده‪ ،‬حاصدلضدرب ‪ x‬در ‪( y‬قاعدده و ارتفداع) را‬
‫دریافت کرده‪ ،‬حاصلضرب ‪ x‬در ‪ y‬تقسیمبر‪ 1‬را برمیگرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫قاعده ورودی با نوع صحیح‬ ‫‪b‬‬ ‫‪main‬‬

‫ارتفاع ورودی با نوع اعشاری‬ ‫‪h‬‬

‫قاعده ورودی با نوع اعشاری‬ ‫‪b1‬‬

‫ارتفاع ورودی با نوع اعشاری‬ ‫‪h1‬‬


‫پارامتری که ‪ b‬یا ‪ b1‬را از متد ‪ main‬دریافت‬ ‫‪x‬‬ ‫‪surface‬‬
‫میکند‪.‬‬
‫‪y‬‬
‫پارامتری که ‪ h‬یا ‪ h1‬را از متد ‪ main‬دریافت‬
‫‪using‬‬ ‫;‪System‬‬
‫میکند‪.‬‬
‫‪namespace‬‬ ‫‪p55‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static float surface(float x, float y‬‬
‫{‬
‫;‪return x * y / 2‬‬
‫}‬
‫)‪static int surface(int x, int y‬‬
‫{‬
‫;‪return x * y / 2‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪float b, h‬‬
‫;‪float b1, h1‬‬
‫;)"‪Console.Write("Enter b:‬‬
‫;))(‪b = Convert.ToSingle(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter h:‬‬
‫;))(‪h = Convert.ToSingle(Console.ReadLine‬‬
‫;))‪Console.WriteLine("Surface is {0}", surface(b, h‬‬
‫;)"‪Console.Write("Enter b1:‬‬
‫;))(‪b1 = Convert.ToSingle(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter h1:‬‬
‫;))(‪h1 = Convert.ToSingle(Console.ReadLine‬‬
‫;))‪Console.Write("Surface is {0}", surface(b1, h1‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫فصل سوم‬ ‫‪511‬‬

‫‪ .47‬برنامه ای که کاراکتری را خوانده‪ ،‬بدون استفاده از عملگر ‪ +‬و ‪ if‬آن را به حروف کوچک تبدیل میکند و‬
‫نمایش میدهد‪ .‬این برنامه برای تبدیل حروف بزرگ و کوچک از یک متد استفاده میکند‪.‬‬
‫متد ‪ :main‬ابتدا کاراکتر ‪ ch‬را تعریف کرده‪ ،‬با نمایش یک پیغام مناسب کداراکتری را از ورودی خواندده در ‪ch‬‬
‫قرار میدهد و با فراخوانی متد )(‪ lower‬آن را به حرف کوچک تبدیل مینماید و با استفاده از پیغدام مناسدب آن را‬
‫نمایش میدهد‪.‬‬
‫متد )(‪ ،lower‬پارامتر ‪( ch‬کاراکتری که باید به حروف کوچک تبدیل شود) را دریافت کرده‪ ،‬اگر کداراکتر بدین‬
‫’‪ ‘A‬تا ’‪ ‘Z‬باشد‪ ،‬آن کاراکتر را با ‪ 81‬یا بیتی (|) مینماید تا به حرف کوچک تبدیل شود‪ ،‬وگرنه خدود کداراکتر ‪ ch‬را‬
‫برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫متغیر ورودی‬ ‫‪ch‬‬ ‫‪Main‬‬
‫;‪using System‬‬ ‫پارامتری که کاراکتر ورودی را از متد ‪ main‬میگیرد‬ ‫‪ch‬‬ ‫‪Lower‬‬
‫‪namespace p56‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static char lower(char ch‬‬
‫{‬
‫;)‪char ch1 = (char)((int)ch | 32‬‬
‫;)‪return ((ch >= 'A' && ch <= 'Z') ? ch1 : ch‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪char ch‬‬
‫;)"‪Console.Write("Enter a char:‬‬
‫;))(‪ch = Convert.ToChar(Console.ReadLine‬‬
‫;))‪Console.Write("Lower({0}): {1}", ch, lower(ch‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫متد در ‪511 C#‬‬

‫‪ .48‬برنامهای که یک کاراکتر را خوانده‪ ،‬با استفاده از عملگر ‪ )^( xor‬اگر حرف کوچک بود‪ ،‬آن را به حروف‬
‫بزرگ تبدیل کرده‪ ،‬یا اگر حرف بزرگ بود‪ ،‬آن را به حرف کوچک تبدیل نماید‪ .‬برای این منظور‪ ،‬از یک متد‬
‫استفاده نماید‪.‬‬
‫متد ‪ :main‬ابتدا کاراکتر ‪ ch‬را تعریف کرده‪ ،‬با یک پیغام مناسب کداراکتری را از ورودی خواندده‪ ،‬در آن قدرار‬
‫میدهد‪ .‬سپس با فراخوانی متد )(‪ reverse‬آن را به حرف بزرگ‪ ،‬کوچدک یدا بددون تغییدر برمدیگرداندد و نمدایش‬
‫میدهد‪.‬‬
‫متد )(‪،reverse‬کاراکتری را از طریق پارامتر ‪ ch‬دریافت کرده‪ ،‬اگر کاراکتر بین ’‪ ‘A‬تا ’‪‘Z‬یدا ’‪ ‘a‬تدا ’‪ ‘z‬باشدد‪،‬‬
‫آن کاراکتر را با ‪ 81‬یا انحصاری (‪ )xor‬میکند (یعنی‪ ،‬اگر بزرگ باشد‪ ،‬به کوچک تبددیل و اگدر کوچدک باشدد‪ ،‬بده‬
‫بزرگ تبدیل میکند) و برمیگرداند‪ .‬وگرنه‪ ،‬آن را بدون تغییر برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫کاراکتری که از ورودی خوانده میشود‬ ‫‪ch‬‬ ‫‪Main‬‬
‫;‪using System‬‬ ‫پارامتری که کاراکتر ‪ ch‬را از متد ‪ main‬دریافت میکند‪.‬‬ ‫‪ch‬‬ ‫‪reverse‬‬
‫‪namespace p57‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static char reverse(char ch‬‬
‫{‬
‫;)‪char ch1 = (char)((int)ch ^ 32‬‬
‫)'‪return (((ch >= 'A' && ch <= 'Z‬‬
‫;)‪|| (ch >= 'a' && ch <= 'z')) ? ch1 : ch‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪char ch‬‬
‫;)"‪Console.Write("Enter a char:‬‬
‫;))(‪ch = Convert.ToChar(Console.ReadLine‬‬
‫;))‪Console.Write("Reverse({0}): {1}", ch, reverse(ch‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .49‬برنامهای که ‪ x‬و ‪ n‬را خوانده‪ ،‬حاصل متد !‪ F(x, n) = xn‬را نمایش میدهد‪.‬‬
‫متد ‪ :main‬ابتدا متغیر ‪ n ،x‬و ‪ p‬را تعریف کرده‪ ،‬با استفاده از پیغام مناسب ‪ x‬و ‪ n‬را از کاربر دریافت میکند و بدا‬
‫فراخوانی متد )(‪ ،fact‬مقدار !‪ n‬را حساب کرده‪ ،‬در ‪ p‬قرار میدهد و در پایان‪ ،‬با اسدتفاده از متدد )(‪ pow‬موجدود در‬
‫‪ x ،math.h‬را بتوان ‪ p‬رسانده و نمایش میدهد‪.‬‬
‫متد )(‪ n :fact‬را بهعنوان پارامتر دریافت کرده و !‪ n‬را محاسبه میکند و برمیگرداند‪.‬‬
‫فصل سوم‬ ‫‪511‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫عدد ورودی‬ ‫‪x‬‬ ‫‪main‬‬

‫عدد ورودی‬ ‫‪n‬‬

‫!‪ n‬یعنی توان ‪x‬‬ ‫‪p‬‬

‫پارامتری که باید فاکتوریل آن محاسبه شود‪.‬‬ ‫‪n‬‬ ‫‪fact‬‬


‫;‪using System‬‬ ‫مقدار فاکتوریل را نگهداری میکند‬ ‫‪f‬‬
‫‪namespace p58‬‬
‫{‬ ‫شمارندهای که از ‪ 0‬تا ‪ n‬میشمارد‪.‬‬ ‫‪i‬‬
‫‪class Program‬‬
‫{‬
‫)‪static long fact(int k‬‬
‫{‬
‫;‪int f = 1‬‬
‫)‪for (int i = 1; i <= k; i++‬‬
‫;‪f = f * i‬‬
‫;‪return f‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int x, n‬‬
‫;‪long p‬‬
‫;)"‪Console.Write("Enter x:‬‬
‫;))(‪x = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = Convert.ToInt32(Console.ReadLine‬‬
‫;)‪p = fact(n‬‬
‫;))‪Console.WriteLine(Math.Pow((float)x, p‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫𝒏𝒙‬
‫𝟏=𝒌𝒏∑ = )‪F(x, n‬‬ ‫‪ .51‬برنامهای که ‪ x‬و ‪ n‬را خوانده‪ ،‬حاصل عبارت مقابل را نمایش میدهد‪:‬‬
‫!𝒌‬
‫متد ‪ :main‬ابتدا ‪ x‬و ‪ n‬را تعریف کرده‪ ،‬با پیغام مناسب دو عدد را خواندده‪ ،‬در ‪ x‬و ‪ n‬قدرار مدیدهدد‪ ،‬سدپس بدا‬
‫فراخوانی متد )(‪ ،sigma‬حاصل ∑ را محاسبه کرده‪ ،‬نمایش میدهد‪.‬‬
‫متد )(‪ n ،fact‬را بهعنوان پارامتر دریافت کرده‪ ،‬فاکتوریل ‪ n‬را محاسبه میکند و برمیگرداند‪.‬‬
‫متد )(‪ x ،sigma‬و ‪ n‬را بهعنوان پارامتر دریافت کرده‪ ،‬حاصل ∑ را محاسبه میکند و برمیگرداند‪.‬‬
511 C# ‫متد در‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫عدد ورودی‬ x main

‫عدد ورودی‬ n

‫عددی که باید فاکتوریل آن حساب شود‬ n fact

n ‫فاکتوریل‬ f

.‫ میشمارد‬n ‫ تا‬0 ‫شمارندهای که از‬ i

‫پارامتر ورودی‬ x sigma

‫پارامتر ورودی‬ n
using System; ‫مجموع سری‬ s
namespace p59
{ .‫ میشمارد‬n ‫ تا‬0 ‫شمارندهای که از‬ i
class Program
{
static double fact(int n)
{
double f = 1;
for (int i = 1; i <= n; i++)
{
f = f * i;
}
return f;
}
static double sigma(int x, int n)
{
double s = 0;
for (int i = 1; i <= n; i++)
{
s += Math.Pow((float)x, n) / fact(i);
}
return s;
}
static void Main(string[] args)
{
int x, n;
long p;
Console.Write("Enter x:");
x = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter n:");
n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Result is {0}", sigma(x,n));
Console.ReadKey();
}
}
}
‫فصل سوم‬ ‫‪111‬‬

‫‪ .51‬برنامهای که دو عدد صفر یا ‪ 0‬را خوانده‪ ،‬نتایج عملگرهای ‪ NOR ،NAND ،XOR ،OR ،AND‬را نمایش‬
‫میدهد‪ .‬در این برنامه متدهای برای برگشت نتایج عملگرهای ‪ NAND ،XOR ،OR ،AND‬و ‪ XOR‬پیادهسازی‬
‫شوند‪.‬‬
‫متد ‪ :main‬دو عدد ‪ a‬و ‪ b‬را تعریف کرده‪ ،‬با پیغام مناسب دو عدد را خوانده‪ ،‬اگر اعداد صفر یا یک نباشدد‪ ،‬یدک‬
‫پیغام نمایش میدهد‪ ،‬دوباره دو عدد دیگر میخواند و در پایان‪ ،‬با فراخوانی متدها موردنظر نتایج را نمایش میدهد‪.‬‬
‫متدها ‪ NAND ،XOR ،NOT ،NOR‬و غیره برای به دست آوردن نتایج عملگرهای بیانشده به کار میروند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫عدد ورودی اول صفر یا یک‬ ‫‪a‬‬ ‫‪main‬‬

‫عدد ورودی دوم صفر یا یک‬ ‫‪b‬‬


‫پارامتری که باید نقیض گردد را دریافت میکند‪.‬‬ ‫‪x‬‬ ‫‪not‬‬
‫;‪using System‬‬ ‫پارامتر وردی اول‬ ‫‪x‬‬ ‫‪and,or‬‬
‫‪namespace p60‬‬ ‫‪xor,nor‬‬
‫{‬ ‫پارامتر وردی دوم‬ ‫‪y‬‬ ‫‪nand‬‬
‫‪class Program‬‬
‫{‬
‫)‪static int NOT(int x‬‬
‫{‬
‫;‪if (x == 1) return 0‬‬
‫;‪else return 1‬‬
‫}‬
‫)‪static int AND(int x, int y‬‬
‫{‬
‫;‪if (x == 1 && y == 1) return 1‬‬
‫;‪else return 0‬‬
‫}‬
‫)‪static int OR(int x, int y‬‬
‫{‬
‫;‪if (x == 1 || y == 1) return 1‬‬
‫;‪else return 0‬‬
‫}‬
‫)‪static int XOR(int x, int y‬‬
‫{‬
‫;‪if ((x == 0 && y == 1) || (x == 1 && y == 0)) return 1‬‬
‫;‪else return 0‬‬
‫}‬
‫)‪static int NAND(int x, int y‬‬
‫{‬
‫;))‪return NOT(AND(x, y‬‬
‫متد در ‪115 C#‬‬

‫}‬
‫)‪static int NOR(int x, int y‬‬
‫{‬
‫;))‪return NOT(OR(x, y‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int a, b‬‬
‫;‪long p‬‬
‫) ; ;( ‪for‬‬
‫{‬
‫;)"‪Console.Write("Enter a:‬‬
‫;))(‪a = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter b:‬‬
‫;))(‪b = Convert.ToInt32(Console.ReadLine‬‬
‫)‪if (a > 1 || b > 1 || a < 0 || b < 0‬‬
‫;)"‪Console.WriteLine("Please Enter 0 or 1 for a and b‬‬
‫‪else‬‬
‫;‪break‬‬
‫}‬
‫;))‪Console.WriteLine("{0} AND {1} = {2}", a, b, AND(a, b‬‬
‫;))‪Console.WriteLine("{0} OR {1} = {2}", a, b, OR(a, b‬‬
‫;))‪Console.WriteLine("{0} XOR {1} = {2}", a, b, XOR(a, b‬‬
‫;))‪Console.WriteLine("{0} NAND {1} = {2}", a, b, NAND(a, b‬‬
‫;))‪Console.WriteLine("{0} NOR {1} = {2}", a, b, NOR(a, b‬‬
‫= )}‪Console.Write("( {0} NOR {0} XOR {1})) NAND {1‬‬
‫;))‪{2}", a, b, NAND(NOR(a, XOR(a, b)), b‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .52‬برنامهای که ‪ n‬را خوانده‪ ،‬تمام اعداد تام (کامل) کوچکتر یا مساوی ‪ n‬که مضرب ‪ 8‬هم باشند را نمایش‬
‫میدهد‪( .‬عددی تام است که مجموع مقسومهای کوچکتر از خودش برابر خودش باشد)‪.‬‬
‫متد ‪ :main‬ابتدا ‪ n‬را با نوع صحیح تعریف کرده‪ ،‬سپس با یک پیغام مناسب یک عدد را مدیخواندد و در ‪ n‬قدرار‬
‫میدهد‪ .‬در ادامه با یک حلقه تکرار از ‪ 0‬تا ‪ n‬را میشمارد و هر عددی که تام باشد (یعندی‪ ،‬نتیجده )‪ isPerfect(i‬غیدر‬
‫صفر باشد) و بر سه نیز بخشپذیر باشد‪ ،‬آن را نمایش میدهد‪.‬‬
‫متد )(‪ :isPerfect‬پارامتر ‪( n‬عددی که باید تعیین شود تام است یا نه) را دریافت کرده‪ ،‬ابتدا مجموع مقسومعلیه‪-‬‬
‫ها (‪ )sum‬را برابر بر صفر قرار میدهد و سپس از ‪ 0‬تا ‪ n-1‬میشمارد و هر عددی مقسومعلیه ‪ n‬باشد را بدا ‪ sum‬جمدع‬
‫میکند و در پایان‪ ،‬اگر ‪ sum‬برابر ‪ n‬باشد‪ true ،‬وگرنه ‪ false‬را برمیگرداند‪.‬‬
‫فصل سوم‬ ‫‪111‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬

‫عددی که از ورودی خوانده میشود‪.‬‬ ‫‪n‬‬ ‫‪Main‬‬


‫شمارندهای که از ‪ 0‬تا ‪ n‬را میشمارد‪.‬‬ ‫‪i‬‬
‫پارامتری که ‪ n‬را از ‪ main‬دریافت میکند‪.‬‬ ‫‪n‬‬ ‫‪isPerfect‬‬

‫مجموع مقسومعلیههای عدد ‪n‬‬ ‫‪sum‬‬

‫از ‪ 0‬تا ‪ n-1‬میشمارد‪.‬‬ ‫‪i‬‬


‫‪using‬‬ ‫;‪System‬‬
‫‪namespace‬‬ ‫‪p61‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static bool isPerfect(int n‬‬
‫{‬
‫;‪int sum = 0‬‬
‫)‪for (int i = 1; i < n; i++‬‬
‫;‪if (n % i == 0) sum += i‬‬
‫;)‪return (sum == n‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int n‬‬
‫;)"‪Console.Write("Enter a number:‬‬
‫;))(‪n = Convert.ToInt32(Console.ReadLine‬‬
‫;)" ‪Console.Write("Result is‬‬
‫)‪for (int i = 1; i <= n; i++‬‬
‫{‬
‫)‪if (isPerfect(i) == true && i % 3 == 0‬‬
‫;)‪Console.Write("\t{0}",i‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫متد بازگشتی که دو عدد ‪ x, y‬را خوانده‪ ،‬حاصل عبارت زیر را برمیگرداند‪:‬‬ ‫‪.53‬‬
‫اگر𝒙 یا𝒚 کوچکتر از صفر باشد 𝒚 ‪𝒙 −‬‬
‫{ = )𝒚 ‪𝑭(𝒙,‬‬
‫وگرنه)𝟏 ‪𝑭(𝒙 − 𝟏, 𝒚) + 𝑭(𝒙, 𝒚 −‬‬
‫برنامهای که از این متد بازگشتی استفاده میکند‪.‬‬
‫متد ‪ :main‬ابتدا ‪ x‬و ‪ y‬را با نوع صحیح تعریف کرده‪ ،‬با یدک پیغدام مناسدب دو عددد را مدیخواندد و سدپس بدا‬
‫فراخوانی متد ‪ F‬و یک پیغام مناسب خروجی را نمایش میدهد‪.‬‬
‫متد در ‪113 C#‬‬

‫متد ‪ :F‬پارامترهای ‪ x‬و ‪ y‬را دریافت کرده‪ ،‬متد بازگشتی را پیادهسازی میکند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬

‫عدد ورودی اول‬ ‫‪x‬‬ ‫‪Main‬‬


‫;‪using System‬‬ ‫‪y‬‬
‫‪namespace p62‬‬
‫عدد ورودی اول‬
‫{‬ ‫پارامتر مربوط به ‪x‬‬ ‫‪x‬‬ ‫‪F‬‬
‫‪class Program‬‬
‫{‬ ‫پارامتر مربوط به ‪y‬‬ ‫‪y‬‬
‫)‪static int F(int x, int y‬‬
‫{‬
‫;)‪if (x < 0 || y < 0) return (x - y‬‬
‫;))‪else return(F(x - 1, y) + F(x, y - 1‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int x, y‬‬
‫;)"‪Console.Write("Enter x:‬‬
‫;))(‪x = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter y:‬‬
‫;))(‪y = Convert.ToInt32(Console.ReadLine‬‬
‫;))‪Console.Write("F(x, y) is {0}", F(x, y‬‬
‫;)(‪Console.ReadKey‬‬

‫}‬
‫}‬
‫}‬

‫متد بازگشتی ‪ n‬را بهعنوان پارامتر دریافت کرده‪ ،‬تمام اعداد مضرب ‪ 8‬کوچکتر از ‪ n‬را نمایش میدهد‪ .‬برنامه‬ ‫‪.54‬‬
‫که از این متد استفاده میکند‪.‬‬
‫متد ‪ :main‬ابتدا ‪ n‬را تعریف کرده‪ ،‬با یک پیغام مناسب عددی را خوانده در آن قرار میدهد و با فراخوانی متد‬
‫)(‪ ،display‬تمام اعداد مضرب ‪ 8‬کوچکتر از ‪ n‬را نمایش میدهد‪.‬‬
‫متد ‪ n :display‬را بهعنوان پارامتر دریافت کرده‪ ،‬تمام اعداد مضرب ‪ 8‬کوچکتدر از ‪ n‬را بدهصدورت بازگشدتی‬
‫نمایش میدهد‪.‬‬
‫فصل سوم‬ ‫‪114‬‬

‫;‪using System‬‬
‫‪namespace p63‬‬ ‫هدف‬ ‫متغیر‬ ‫متد‬
‫{‬
‫‪class Program‬‬ ‫عدد ورودی که باید اعداد‬ ‫‪n‬‬ ‫‪Main‬‬
‫{‬ ‫مضرب ‪ 0‬کوچکتر از آن‬
‫)‪static void display(int n‬‬
‫{‬ ‫نمایش داده شوند‪.‬‬
‫;‪if (n < 3) return‬‬
‫پارامتر ورودی که ‪ n‬را از متد‬ ‫‪n‬‬ ‫‪Display‬‬
‫)‪else if (n % 3 == 0‬‬
‫;)‪Console.Write("\t{0}", n‬‬ ‫)(‪ main‬دریافت میکند‪.‬‬
‫;)‪display(n - 1‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int n‬‬
‫;)"‪Console.Write("Enter a number:‬‬
‫;))(‪n = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter y:‬‬
‫;)" ‪Console.Write("Display(n) is‬‬
‫;)‪display(n‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .55‬متد بازگشتی که عددی را بهعنوان پارامتر دریافت میکند و تمام اعداد فرد بین این دو عدد را نمایش‬
‫میدهد‪ .‬برنامهای که از این متد استفاده میکند‪.‬‬
‫متد ‪ :main‬ابتدا ‪ x‬و ‪ y‬با نوع ‪ int‬تعریف کرده‪ ،‬با پیغام مناسب دو عدد را میخواند و در آنهدا قدرار مدیدهدد‪.‬‬
‫سپس با فراخوانی متد )(‪ display‬اعداد فرد بین این دو عدد را نمایش میدهد‪.‬‬
‫متد )(‪ x :display‬و ‪ y‬را بهعنوان پارامتر دریافت کرده‪ ،‬بهصورت بازگشتی تمام اعداد فرد بدین ‪ x‬و ‪ y‬را نمدایش‬
‫میدهد‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫اولین عدد که میخواند‬ ‫‪x‬‬ ‫‪main‬‬

‫دومین عدد که میخواند‬ ‫‪y‬‬


‫;‪using System‬‬ ‫پارامتری که ‪ x‬را از ‪ main‬دریافت میکند‪.‬‬ ‫‪x‬‬ ‫‪display‬‬
‫‪namespace p64‬‬
‫{‬ ‫پارامتری که ‪ y‬را از ‪ main‬دریافت میکند‪.‬‬ ‫‪y‬‬
‫‪class Program‬‬
‫{‬
‫)‪static void display(int x, int y‬‬
‫{‬
‫)‪for (int i = x; i <= y; i++‬‬
‫متد در ‪111 C#‬‬

‫;)‪if (i % 2 != 0) Console.Write("\t{0}", i‬‬


‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int x, y‬‬
‫;)"‪Console.Write("Enter x:‬‬
‫;))(‪x = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter y:‬‬
‫;))(‪y = Convert.ToInt32(Console.ReadLine‬‬
‫;)" ‪Console.Write("Display(x, y) is‬‬
‫;)‪display(x, y‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .56‬موسسهای قصد دارد ‪ x‬درصد به حقوق کارمندانش اضافه کند‪ .‬متدی که ضریب افزایش حقوق و حقوق فعلی‬
‫کارمند را دریافت کرده‪ ،‬حقوق جدید را برمیگرداند‪ .‬برنامهای که برای ‪ n‬کارمند از این متد استفاده میکند‪.‬‬
‫متد ‪ :main‬ابتدا متغیرهای ‪ rate ،salary‬و ‪ n‬را تعریف کرده‪ ،‬سپس با یک پیغام مناسدب تعدداد کارمنددان و در‬
‫ادامه ضریب افزایش حقوق را میخواند و با یک حلقه تکرار ‪ n‬حقوق را میخواند و با فراخوانی متد )(‪newSalary‬‬
‫حقوق جدید را نمایش میدهد‪.‬‬
‫متد )(‪ :newSalary‬پارامترهای ‪( salary‬حقوق فعلی) و ‪( rate‬نرخ افزایش) را دریافت کرده‪ ،‬حقدوق جدیدد را‬
‫برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫حقوق فعلی کارکنان را نگه میکند‪.‬‬ ‫‪salary‬‬ ‫‪Main‬‬

‫ضریب افزایش حقوق‬ ‫‪rate‬‬

‫تعداد کارکنان‬ ‫‪n‬‬


‫شمارندهای که از ‪ 0‬تا ‪ n‬میشمارد تا حقوق جدید ‪ n‬کارمند را حساب کند‪.‬‬ ‫‪i‬‬
‫حقوق قبلی کارمند‬ ‫‪salary‬‬ ‫‪newSalary‬‬

‫نرخ افزایش حقوق‬ ‫‪rate‬‬

‫;‪using System‬‬
‫‪namespace p65‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static long newSalary(long salary, int rate‬‬
‫فصل سوم‬ ‫‪111‬‬

‫{‬
‫;)‪return (salary + salary * rate / 100‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int salary, rate, n‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter rate:‬‬
‫;))(‪rate = Convert.ToInt32(Console.ReadLine‬‬
‫)‪for (int i = 1; i <= n; i++‬‬
‫{‬
‫;)"‪Console.Write("Enter salary:‬‬
‫;))(‪salary = Convert.ToInt32(Console.ReadLine‬‬
‫‪Console.WriteLine("Result is {0}",‬‬
‫;))‪newSalary(salary, rate‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫متدی که دو عدد را بهعنوان پارامتر دریافت کرده‪ ،‬تعیین میکند چند عدد اول بین این دو عدد وجود‬ ‫‪.57‬‬
‫دارند‪ .‬این برنامه‪ ،‬متدی برای تعیین عدد اول دارد‪ .‬برنامهای که از این متدها استفاده میکند‪ “ .‬عدد اول است که‬
‫بر هیچ عدد کوچکتر از نصف خودش به جزء یک بخشپذیر نباشد”‪.‬‬
‫متد ‪ :main‬ابتدا ‪ x‬و ‪ y‬را با نوع ‪ int‬تعریف کرده‪ ،‬دو عدد از ورودی میخواند و در آنها قرار میدهد‪ .‬سپس با‬
‫فراخوانی متد )(‪ countPrime‬تعداد اعداد اول بین ‪ x‬و ‪ y‬را میشمارد و چاپ میکند‪.‬‬
‫متد )(‪ :isPrime‬عدد ‪ n‬را بهعنوان پارامتر دریافت کرده‪ ،‬تعیین میکند که اول است یا نه‪ .‬اگر اول باشدد‪ ،‬عددد‬
‫یک‪ ،‬وگرنه عدد صفر را برمیگرداند‪ .‬برای این منظور‪ n ،‬را بر اعداد کوچکتر از نصف خودش (به جزء یک) تقسدیم‬
‫میکند‪ ،‬اگر ‪ n‬بر یک عدد بخشپذیر باشد‪ ،‬پس اول نیست‪ ،‬متد صفر را برمیگرداند و اگر ‪ n‬بر هدیچ عدددی بخدش‪-‬‬
‫پذیر نباشد‪ ،‬تاریخ یک را برگشت میدهد‪.‬‬
‫متد )(‪ ،countPrime‬پارامترهای ‪ x‬و ‪ y‬را دریافت کرده‪ ،‬ابتددا تعدداد اعدداد اول (‪ )count‬را برابدر صدفر قدرار‬
‫میدهد‪ .‬سپس با شمارنده ‪ i‬و یک حلقه از ‪ x‬تا ‪ y‬پیمایش میکند‪ .‬در داخل حلقه با فراخوانی متد )‪ ،isPrime(i‬تعیین‬
111 C# ‫متد در‬

-‫ را برمدی‬count ‫ مقددار‬،‫ در پایدان‬.‫ یک واحد اضافه مدیکندد‬count ‫ به‬،‫ اگر اول باشد‬.‫ اول است یا نه‬i ‫میکند که‬
.‫گرداند‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫اولین عدد ورودی‬ x Main

‫دومین عدد ورودی‬ y

‫پارامتری که باید تعیین شود اول است یا خیر‬ n IsPrime

.‫ میشمارد‬n/2 ‫ تا‬2 ‫شمارندهای که از‬ i


.‫ دریافت میکند‬main ‫پارامتری که اولین عدد ورودی را از‬ x countPrime
.‫ دریافت میکند‬main ‫پارامتری که دومین عدد ورودی را از‬ y
y ‫ و‬x ‫تعداد اعداد اولین بین‬ count

.‫ میشمارد‬y ‫ تا‬x ‫شمارندهای که از‬ i


using System;
namespace p66
{
class Program
{
static int isPrime(int n)
{
for (int i = 2; i <= (int)n / 2; i++)
if (n % i == 0) return 0;
return 1;
}
static int countPrime(int x, int y)
{
int count = 0;
for (int i = x; i <= y; i++)
if (isPrime(i)==1) count++;
return count;
}
static void Main(string[] args)
{
int x, y, n;
Console.Write("Enter x:");
x = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter y:");
y = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Count is {0}", countPrime(x, y));
Console.ReadKey();
}
}
}
‫فصل سوم‬ ‫‪111‬‬

‫‪ .58‬متدی که تأثیر نیروی جاذبه بر اجسام در حال سقوط را محاسبه میکند‪ .‬برنامهای که زمان را دریافت کرده‬
‫(برحسب ثانیه) و این تأثیر را محاسبه مینماید و چاپ میکند‪ .‬این برنامه باید ارتفاع شیء سقوطکننده در هر ثانیه را‬
‫نمایش میدهد‪ .‬برای این منظور از فرمولهای زیر استفاده مینماید‪:‬‬
‫زمان = ‪ g = 9.80665, t‬فاصله و = ارتفاع‪ = ½ * g * t2‬فاصله‬

‫متد ‪ :main‬ابتدا ‪ t‬را تعریف کرده‪ ،‬سپس با یک پیغام مناسب عددی را از ورودی میخواند و در ‪ t‬قرار میدهدد‪.‬‬
‫در ادامه با فراخوانی متد )(‪ calculatePull‬ارتفاع را محاسبه کرده‪ ،‬نمایش میدهد‪.‬‬
‫متد )(‪ :calculatePull‬زمان (‪ )t‬را بهعنوان پارامتر گرفته‪ ،‬با فرمول بیانشده فاصدله (ارتفداع) را محاسدبه کدرده‪،‬‬
‫برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫زمان که از ورودی میخواند‪.‬‬ ‫‪t‬‬ ‫‪main‬‬

‫پارامتری که زمان را دریافت میکند‪.‬‬ ‫‪t‬‬ ‫‪calculatePull‬‬

‫ثابتی که تأثیر نیروی جاذبه بر اجسام در حال سقوط ا تعیین میکند‪.‬‬ ‫‪g‬‬

‫;‪using System‬‬
‫‪namespace p67‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static double calculatePull(int t‬‬
‫{‬
‫;‪const double g = 9.80665‬‬
‫;)‪return (0.5 * g * t * t‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int t‬‬
‫;)"‪Console.Write("Enter time:‬‬
‫;))(‪t = Convert.ToInt32(Console.ReadLine‬‬
‫;))‪Console.WriteLine("Higth is {0}",calculatePull(t‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫متد در ‪111 C#‬‬

‫‪ .59‬برنامهای که عدد ‪ n‬را خوانده‪ ،‬سپس یک عدد دیگر ‪ k‬را بخواند و حاصلضرب اعداد کوچکتر یا مساوی‬
‫عدد ‪ n‬که مضرب آن عدد ‪ k‬باشد را نمایش میدهد‪.‬‬
‫متد ‪ :main‬ابتدا متغیرهای ‪ n‬و ‪ k‬را تعریف کرده‪ ،‬با استفاده از یک پیغام مقدار آنها را از ورودی مدیخواندد و‬
‫سپس با فراخوانی متد )‪ ،divitionByk(n, k‬تمام اعداد کوچکتر از ‪ n‬مضرب ‪ k‬را نمایش میدهد‪.‬‬
‫متد )(‪ :divitionByk‬پارامترهای ‪ n‬و ‪ k‬را دریافت کرده‪ ،‬با استفاده از روش بازگشتی تمام اعداد کوچدکتدر یدا‬
‫مساوی ‪ n‬که بر ‪ k‬بخشپذیر باشند را نمایش میدهد‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬

‫عدد ورودی که خوانده میشود‪.‬‬ ‫‪n‬‬ ‫‪main‬‬

‫مضرب موردنظر‬ ‫‪k‬‬

‫پارامتری که ‪ n‬را از متد ‪ main‬دریافت میکند‪.‬‬ ‫‪n‬‬ ‫‪divitionByk‬‬

‫;‪using System‬‬ ‫پارامتری که مضرب ‪ k‬را از متد ‪ main‬دریافت میکند‪.‬‬ ‫‪k‬‬


‫‪namespace p68‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void divitionByk(long n, int k‬‬
‫{‬
‫;‪if (n == 0) return‬‬
‫;)‪if (n % k == 0) Console.Write(" {0}", n‬‬
‫;)‪divitionByk(n - 1, k‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪long n‬‬
‫;‪int k‬‬
‫;)"‪Console.Write("Enter k:‬‬
‫;))(‪k = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = long.Parse(Console.ReadLine‬‬
‫;)‪Console.Write("Division by {0} is ", k‬‬
‫;)‪divitionByk(n, k‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫فصل سوم‬ 151

‫ میتوانیم طول ضلع سوم را با فرمول زیر‬،‫ باشد‬Alpha ‫) از مثلث و زاویه بین این دو ضلع‬B, C( ‫ اگر دو ضلع‬.61
:‫محاسبه کنیم‬
A2 = B2 + C2 – 2 * B * C * COS (Alpha)
.‫ را محاسبه میکند و نمایش میدهد‬A ‫ با استفاده از متدی مقدار‬،‫ را خوانده‬Alpha ‫ و‬C ،B ‫برنامهای که‬
‫ با پیغدام مناسدب سده عددد را خواندده در آنهدا قدرار‬،‫ را تعریف کرده‬alpha ‫ و‬c ،b ‫ ابتدا سه متغیر‬:main ‫متد‬
.‫ را محاسبه میکند و نمایش میدهد‬A ‫ مقدار ضلع‬calculateA() ‫میدهد و با فراخوانی‬
.‫ را محاسبه میکند و برمیگرداند‬a ‫ ضلع‬،‫ را دریافت کرده‬alpha ‫ و‬c ،b ‫ سه پارامتر‬:calculateA() ‫متد‬
using System;
namespace p69
{
class Program
{
static double calculateA(float b, float c, float alpha)
{
return (Math.Sqrt(Math.Sqrt(b) + Math.Sqrt(c) –
2 * b * c * Math.Cos(alpha)));
}
static void Main(string[] args)
{
float b, c, alpha;
Console.Write("Enter b:");
b = float.Parse(Console.ReadLine());
Console.Write("Enter c:");
c = float.Parse(Console.ReadLine());
Console.Write("Enter alpha:");
alpha = float.Parse(Console.ReadLine());
Console.WriteLine("Result is {0}",
calculateA(b, c, alpha));
Console.ReadKey();
}
}
}
‫متد در ‪155 C#‬‬

‫برنامهای که دو عدد‪ ،‬سپس یک کاراکتر را خوانده‪ ،‬اگر کاراکتر ‪ R‬یا ‪ r‬باشد‪ ،‬مساحت مستطیل را با یک متد‬ ‫‪.61‬‬
‫محاسبه میکند‪ .‬چنانچه کاربر کاراکتر ‪ T‬یا ‪ t‬را وارد نماید‪ ،‬مساحت مثلث را با فرمول ارتفاع * نصف قاعده محاسبه‬
‫مینماید‪ .‬درنهایت مساحت مستطیل یا مثلث را نمایش میدهد‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬ابتدا متغیرهای ‪ b ،a‬و ‪ ch‬را تعریف کرده‪ ،‬دو عدد و یک کاراکتر را میخواند‪ ،‬در این متغیرهدا قدرار‬
‫میدهد‪ .‬سپس‪ ،‬اگر کاربر ‪ r‬یا ‪ R‬را وارد کرده باشد‪ ،‬متد )(‪ areaR‬را فراخوانی میکند تا مساحت مستطیل را حسداب‬
‫کرده و نمایش دهد‪ .‬در غیر این صورت‪ ،‬چنانچه کاربر کاراکتر ‪ t‬یا ‪ T‬را وارد کند‪ ،‬متد ‪ areaT‬را فراخوانی میکندد‬
‫تا مساحت مثلث را حساب کرده‪ ،‬نمایش میدهد‪ .‬در غیر این صورت‪ ،‬پیغام خطای را نمایش میدهد‪.‬‬
‫متد )(‪ :areaR‬پارامترهای ‪ a‬و‪( b‬طول و عرض) را دریافت کرده‪ ،‬حاصلضرب آن ها را برمیگرداندد (مسداحت‬
‫مستطیل برابر با حاصلضرب طول در عرض است)‪.‬‬
‫متد )(‪ ،areaT‬پارامترهای ‪ a‬و ‪( b‬قاعده و ارتفاع) را دریافت کرده‪ ،‬مساحت مثلث را برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫عدد ورودی طول مستطیل یا ارتفاع مثلث‬ ‫‪a‬‬ ‫‪main‬‬

‫عدد ورودی عرض مستطیل یا قاعده مثلث‬ ‫‪b‬‬

‫کاراکتر ورودی‬ ‫‪ch‬‬


‫پارامتری که طول مستطیل را از متد ‪ main‬دریافت میکند‪.‬‬ ‫‪n‬‬ ‫‪areaR‬‬
‫پارامتری که عرض مستطیل را از متد ‪ main‬دریافت میکند‪.‬‬ ‫‪b‬‬

‫;‪using System‬‬ ‫پارامتری که ارتفاع مثلث را از متد ‪ main‬دریافت میکند‪.‬‬ ‫‪a‬‬ ‫‪areaT‬‬
‫‪namespace p70‬‬
‫پارامتری که قاعده مثلث را از متد ‪ main‬دریافت میکند‪.‬‬ ‫‪b‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static float areaR(float a, float b‬‬
‫{‬
‫;)‪return (a * b‬‬
‫}‬
‫)‪static float areaT(float a, float b‬‬
‫{‬
‫;)‪return (a * b / 2‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪float a, b‬‬
‫;‪char ch‬‬
‫;)"‪Console.Write("Enter a:‬‬
‫;))(‪a = float.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter b:‬‬
‫;))(‪b = float.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter a char:‬‬
‫;))(‪ch = char.Parse(Console.ReadLine‬‬
‫)'‪if (ch == 'r' || ch == 'R‬‬
‫فصل سوم‬ ‫‪151‬‬

‫;))‪Console.Write("Rectangle area is {0}", areaR(a, b‬‬


‫)'‪else if (ch == 't' || ch == 'T‬‬
‫;))‪Console.Write("Traingle area is {0}", areaT(a, b‬‬
‫‪else‬‬
‫;)"‪Console.Write("Error in input‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .62‬فرض کنید اساتید دارای حقوق کمتر از ‪ 0444444‬تومان ‪ 4/1‬درصد اضافهحقوق میگیرند‪ ،‬ولی اساتید بین‬
‫‪ 0444444‬تا ‪ 1444444‬تومان ‪ 01‬درصد و اساتید با حقوق بیشتر ‪ 04‬درصد اضافهحقوق میگیرند‪ .‬متدی که‬
‫اضافهحقوق استاد را محاسبه میکند‪ .‬برنامهای که حقوق استادی را خوانده‪ ،‬اضافهحقوق و حقوق جدید استاد را‬
‫نمایش میدهد‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬متغیرهای ‪ pay‬و ‪ ePay‬را تعریف کرده‪ ،‬با یک پیغام مناسب حقوق استاد را خواندده و بدا فراخدوانی‬
‫)(‪ ،calExteraPay‬اضافهحقوق استاد را محاسبه کرده‪ ،‬در ‪ ePay‬قرار میدهد و در پایدان‪ ،‬بدا نمدایش پیغدام مناسدب‬
‫‪ ePay‬و ‪ ePay + pay‬را نمایش میدهد‪.‬‬
‫متد )(‪ ،calExteraPay‬حقوق فعلدی اسدتاد را بدهعندوان پدارامتر ‪ pay‬دریافدت کدرده‪ ،‬اضدافهحقدوق اسدتاد را‬
‫برمیگرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫حقوق استاد‬ ‫‪Pay‬‬ ‫‪Main‬‬

‫;‪using System‬‬
‫‪ Epay‬اضافهحقوق استاد‬
‫‪namespace p71‬‬ ‫‪ Pay‬پارامتری که حقوق استاد را از ‪ main‬دریافت میکند‪.‬‬ ‫‪calExterapay‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static long calExteraPay(long pay‬‬
‫{‬
‫;)‪if (pay <= 4000000) return (pay * 15 / 100‬‬
‫)‪if (pay > 4000000 && pay <= 7000000‬‬
‫;)‪return (pay * 12 / 100‬‬
‫)‪if (pay > 7000000‬‬
‫;)‪return (pay * 10 / 100‬‬
‫;‪return 0‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪long pay, ePay‬‬
‫متد در ‪153 C#‬‬

‫;)"‪Console.Write("Enter pay:‬‬
‫;))(‪pay = long.Parse(Console.ReadLine‬‬
‫;)‪ePay = calExteraPay(pay‬‬
‫}‪Console.Write("Extera pay is {0‬‬ ‫‪pay+ePay is {1}",‬‬
‫;)‪ePay,pay + ePay‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫𝒎𝑪 را برگرداند‪ ،‬نمایش میدهد‪:‬‬


‫برنامهای که ‪ n‬و ‪ m‬را خوانده‪ ،‬توسط متد بازگشتی 𝒏‬ ‫‪.63‬‬
‫اگر𝟎 = = 𝒎 یا 𝒏 = = 𝒎 𝟏‬

‫𝒎𝑪‬
‫= 𝒏‬
‫𝒏‬ ‫اگر 𝟎 = = 𝒎‬
‫𝟏‪𝒏−‬‬ ‫𝟏‪𝒏−‬‬
‫وگرنه )𝟏 ‪{ ( 𝒎 ) + (𝒎 −‬‬
‫متد ‪ :main‬ابتدا متغیرهای ‪ m‬و ‪ n‬را تعریف کرده‪ ،‬با نمایش پیغدام مناسدب دو عددد را خواندده‪ ،‬در ‪ m‬و ‪ n‬قدرار‬
‫میدهد‪ .‬سپس با فراخوانی )(‪ ،C_mn‬مقدار متد را برمیگرداند و نمایش میدهد‪.‬‬
‫𝐦𝑪 را به روش بازگشتی حسداب مدینمایدد و برمدی‪-‬‬ ‫متد )(‪ ،C_mn‬پارامترهای ‪ m‬و ‪ n‬را دریافت کرده‪ ،‬مقدار 𝐧‬
‫گرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫عدد ورودی‬ ‫‪m‬‬ ‫‪main‬‬

‫عدد ورودی‬ ‫‪n‬‬

‫;‪using System‬‬ ‫پارامتری که ‪ m‬را از متد ‪ main‬دریافت میکند‬ ‫‪m‬‬ ‫‪C_mn‬‬


‫‪namespace p72‬‬ ‫‪n‬‬
‫{‬
‫پارامتری که ‪ n‬را از متد ‪ main‬دریافت میکند‬
‫‪class Program‬‬
‫{‬
‫)‪static int C_mn(int m, int n‬‬
‫{‬
‫)‪if (m == 0 || n == 0‬‬
‫;)‪return (1‬‬
‫)‪else if (m == 1‬‬
‫;)‪return (n‬‬
‫‪else‬‬
‫;))‪return (C_mn(m, n - 1) + C_mn(m - 1, n - 1‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int n, m‬‬
‫;)"‪Console.Write("Enter m:‬‬
‫;))(‪m = int.Parse(Console.ReadLine‬‬
‫فصل سوم‬ 154

Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
Console.Write("Result is {0}",C_mn(m, n));
Console.ReadKey();
}
}
}

‫ اگر عدد‬،‫ بهعنوانمثال‬.‫ برنامهای که عددی را خوانده با استفاده از متد بازگشتی مغلوب آن را نمایش میدهد‬.64
.‫ را نمایش میدهد‬1118 ‫ مغلوب آن یعنی‬،‫ باشد‬8111
‫ قدرار مدیدهدد بدا‬n ‫ در‬،‫ سپس با یک پیغام مناسب عدددی را خواندده‬،‫ را تعریف کرده‬n ‫ ابتدا متغیر‬:main ‫متد‬
.‫ نمایش میدهد‬،‫ آن را مغلوب کرده‬reverse() ‫فراخوانی متد‬
.‫ آن را مغلوب میکند و برمیگرداند‬،‫ را دریافت کرده‬n ‫ پارامتر‬،reverse() ‫متد‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫عدد ورودی‬ n main

.‫ دریافت میکند‬main ‫ را از متد‬n ‫پارامتری که‬ n reverse

using System; ‫ بهعالوه در هر مرحله‬+01 ‫ در مبنای‬n ‫بخش صحیح لگاریتم‬ p


namespace p73
{
class Program
{
static int reverse(int n)
{
int p;
if (n < 10)
return (n);
else
{
p =(int) Math.Floor(Math.Log10 ((double)n) + 1);
return ((n % 10) * (int ) Math.Pow(10,p-1) +
reverse(n / 10));
}
}
static void Main(string[] args)
{
int n;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
Console.Write("Result is {0}", reverse(n));
Console.ReadKey();
}
}
‫متد در ‪151 C#‬‬

‫}‬

‫‪ .65‬برنامهای که ‪ n‬و ‪ m‬را خوانده‪ ،‬توسط یک متد بازگشتی )‪ A(m, n‬را محاسبه میکند و نمایش میدهد‬
‫()‪ A(m, n‬بهصورت زیر محاسبه میشود‪.‬‬
‫𝟏‪𝒏+‬‬ ‫اگر𝟎 == 𝒎‬

‫= )𝒏 ‪𝑨(𝒎,‬‬ ‫)𝟏 ‪𝑨 (𝒎 − 𝟏,‬‬ ‫وگرنه 𝟎 == 𝒏‬

‫وگرنه))𝟏 ‪{ 𝑨(𝒎 − 𝟏, 𝑨(𝒎, 𝒏 −‬‬


‫متد ‪ :main‬ابتدا متغیرهای ‪ n‬و ‪ m‬را تعریف کرده‪ ،‬با پیغام دو عدد را خوانده‪ ،‬در ‪ m‬و ‪ n‬قرار میدهد‪ .‬سدپس‪ ،‬بدا‬
‫فراخوانی متد )(‪ ،A‬حاصل عبارت بازگشتی را نمایش میدهد‪.‬‬
‫متد )(‪ ،A‬پارامترهای ‪ m‬و ‪ n‬را دریافت کرده‪ ،‬با روش بازگشتی حاصل متد را برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫عدد ورودی‬ ‫‪m‬‬ ‫‪main‬‬

‫عدد ورودی‬ ‫‪n‬‬

‫;‪using System‬‬ ‫‪ m‬پارامتری که ‪ m‬را از ‪ main‬دریافت میکند‬ ‫‪A‬‬


‫‪namespace p74‬‬
‫{‬ ‫‪ n‬پارامتری که ‪ n‬را از ‪ main‬دریافت میکند‬
‫‪class Program‬‬
‫{‬
‫)‪static int A(int m, int n‬‬
‫{‬
‫)‪if (m == 0‬‬
‫;)‪return (n + 1‬‬
‫)‪else if (n == 0‬‬
‫;))‪return (A(m - 1, 1‬‬
‫‪else‬‬
‫;)))‪return (A(m - 1, A(m, n - 1‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int m, n‬‬
‫;)"‪Console.Write("Enter m:‬‬
‫;))(‪m = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬
‫;))‪Console.Write("Result is {0}", A(m, n‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫فصل سوم‬ ‫‪151‬‬

‫برنامهای که ‪ n‬و ‪ m‬را خوانده‪ ،‬توسط یک متد بازگشتی )‪ Q(m, n‬را محاسبه میکند و نمایش میدهد‪:‬‬ ‫‪.66‬‬
‫𝟏‬ ‫وگرنه𝟏 == 𝒏 یا 𝟏 == 𝒎 باشد‬
‫اگر 𝑛 < 𝒎 ‪.‬باشد)𝒏 ‪𝑸 (𝒎,‬‬
‫= )𝒏 ‪𝑸(𝒎,‬‬
‫اگر 𝒏 == 𝒎 باشد)𝟏 ‪𝟏 + 𝑸(𝒎, 𝒎 −‬‬

‫اگر𝑛 > 𝒎 باشد)𝒏 ‪{𝑸(𝒎. 𝒏 − 𝟏) + 𝑸(𝒎 − 𝒏,‬‬


‫متد ‪ :main‬ابتدا متغیرهای ‪ n‬و ‪ m‬را تعریف کرده‪ ،‬با پیغام مناسب دو عدد را خوانده‪ ،‬در ‪ m‬و ‪ n‬قدرار مدیدهدد‪.‬‬
‫سپس با فراخوانی متد )(‪ Q‬نتیجه را برمیگرداند‪.‬‬
‫متد )(‪:Q‬پارامترهای ‪ m‬و ‪ n‬را دریافت کرده‪ ،‬با روش بازگشتی حاصل متد را برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬

‫عدد ورودی‬ ‫‪m‬‬ ‫‪main‬‬

‫عدد ورودی‬ ‫‪n‬‬ ‫‪Q‬‬

‫;‪using System‬‬ ‫پارامتری که ‪ m‬را از ‪ main‬دریافت میکند‬ ‫‪m‬‬


‫‪namespace p75‬‬
‫{‬ ‫پارامتری که ‪ n‬را از ‪ main‬دریافت میکند‬ ‫‪n‬‬
‫‪class Program‬‬
‫{‬
‫)‪static int Q(int m, int n‬‬
‫{‬
‫)‪if (m == 1 || n == 1‬‬
‫;)‪return (1‬‬
‫)‪if (m < n‬‬
‫;))‪return (Q(m, m‬‬
‫)‪if (m == n‬‬
‫;))‪return (1 + Q(m, m - 1‬‬
‫)‪if (m > n‬‬
‫;))‪return (Q(m, n - 1) + Q(m - n, n‬‬
‫;‪return 0‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int m, n‬‬
‫;)"‪Console.Write("Enter m:‬‬
‫;))(‪m = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬
‫;))‪Console.Write("Result is {0}", Q(m, n‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫متد در ‪151 C#‬‬

‫}‬
‫}‬

‫‪ .67‬برنامهای که مشتق متد ‪ x2 + 1‬را در نقطه ‪ x‬محاسبه میکند‪ .‬در این برنامه به ازای ‪ h‬کوچک میتوان نوشت‪:‬‬
‫) 𝟎𝐱(𝐟 ‪𝐟 (𝐱𝟎 + 𝐡) −‬‬
‫𝟎→ 𝐤𝐦𝐢𝐥 = ) 𝟎𝐱(́𝐟‬
‫𝐡‬
‫متد ‪ :main‬ابتدا متغیر ‪ x‬را تعریف کرده‪ ،‬یدک عددد را مدیخواندد و در ‪ x‬قدرار مدیدهدد‪ .‬بدا فراخدوانی متدد‬
‫)(‪ ،f_prime‬مقدار مشتق ‪ x2+1‬را در نقطه ‪ x‬محاسبه میکند و چاپ مینماید‪.‬‬
‫‪2‬‬
‫متد )(‪ :f_prime‬پارامتر ‪ x‬را دریافت کرده‪ ،‬با جایگذاری این مقدار در متدد )(‪ ،f‬مشدتق ‪ x +1‬را در نقطده ‪x0‬‬
‫محاسبه کرده‪ ،‬برمیگرداند‪.‬‬
‫متد )(‪ x :f‬را بهعنوان پارامتر دریافت کرده‪ ،‬حاصل عبارت ‪ x2+1‬را برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫عدد ورودی‬ ‫‪x‬‬ ‫‪main‬‬

‫مقدار ‪ 101110‬را نگهداری میکند‪.‬‬ ‫‪n0‬‬ ‫‪f_prime‬‬

‫پارامتری که مقدار ‪ x‬را از متد ‪ main‬دریافت میکند‪.‬‬ ‫‪n0‬‬

‫نتیجه مشتق را نگهداری میکند‪.‬‬ ‫‪n‬‬


‫;‪using System‬‬ ‫پارامتری که مقدار ‪ x0‬را از متد ‪ f_prime‬دریافت میکند‪.‬‬ ‫‪x‬‬ ‫‪f‬‬
‫‪namespace p76‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static float f(float x‬‬
‫{‬
‫;))‪return ( (float )(Math.Pow(x, 2) + 1‬‬
‫}‬
‫)‪static float f_prime(float x0‬‬
‫{‬
‫;‪float res‬‬
‫;‪float h = 0.0001f‬‬
‫;‪res = (f(x0 + h) - f(x0)) / h‬‬
‫;‪return res‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪float x‬‬
‫;)"‪Console.Write("Enter x:‬‬
‫;))(‪x = float.Parse(Console.ReadLine‬‬
‫;))‪Console.Write( f_prime(x‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫فصل سوم‬ 151

}
}

.‫ با فرمول زیر محاسبه میکند‬x ‫ در نقطه‬xsinx +1 ‫ برنامهای که مشتق دوم متد‬.68


𝒇′ (𝒙𝟎 + 𝒉) − 𝒇′ (𝒙𝟎 ) 𝒇′ (𝒙𝟎 + 𝒉) − 𝒇′ (𝒙𝟎 )
𝐟 " (𝒙𝟎 )
= 𝒍𝒊𝒎𝒉→𝟎 =
𝒉 𝒉
‫ را‬xsin(x) ‫ مقددار مشدتق دوم‬،f_second() ‫ ولدی متدد‬،‫ مانند برنامه قبلی است‬f_prime() ‫ و‬f() ،main() ‫متدها‬
.‫برمیگرداند‬

‫هدف‬ ‫متغیر‬ ‫متد‬

‫متغیر ورودی‬ x main


.‫ را نگهداری میکند‬101110 ‫مقدار‬ h f_prime

.‫ دریافت میکند‬f-second ‫ را از متد‬x0 ‫پارامتری که مقدار‬ x0

.‫نتیجه مشتق را نگهداری میکند‬ res

.‫ دریافت میکند‬f-prime ‫ را از متد‬x0 ‫پارامتری که مقدار‬ x f

using System; .‫ دریافت میکند‬main() ‫ را از متد‬x ‫پارامتری که مقدار‬ X0 f-second


namespace p77
{
class Program
{
static double f(double x)
{
return (x * Math.Sin (x) + 1);
}
static double f_prime(double x0)
{
double res;
double h = 0.0001f;
res = (f(x0 + h) - f(x0)) / h;
return res;
}
static double f_second(double x0)
{
double res;
float h = 0.0001f;
res= (f_prime(x0 + h) - f_prime(x0)) / h;
return res;
}
static void Main(string[] args)
{
double x;
151 C# ‫متد در‬

Console.Write("Enter x:");
x = double.Parse(Console.ReadLine());
Console.Write(f_second(x));
Console.ReadKey();
}
}
}

:‫ حاصل سری زیر را نمایش میدهد‬،‫ را خوانده‬n ‫ و‬x ‫ برنامهای که‬.13


x n 1
1 2 n
 x 
n
   x1 
1    1      1  
 1   2   n 
using System;
namespace p78
{
class Program
{
static double pow(double x, int n)
{
double p = 1;
for (int i = 1; i <= n; i++) p *= x;
return p;
}
static void Main(string[] args)
{
double x, sum = 0;
Console.Write("Enter x:");
x = double.Parse(Console.ReadLine());
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
double p1 = pow(x, n - i + 1);
double p2 = pow(1 + p1 / i, i);
sum += p2;
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}
‫فصل سوم‬ 111

‫ حاصدل عبدارت زیدر را محاسدبه مدیکندد و نمدایش‬،‫ را دریافدت کدرده‬a ‫ و‬n ،x ‫ برنامهای که سه عدد‬.19
:‫میدهد‬

x  a n  n!
x  a n 
n!
x1a n1   
n!
x n a n n
!n   ! 1!n  1! n!n  n !
using System;
namespace p79
{
class Program
{
static double pow(double x, int n)
{
double p = 1;
for (int i = 1; i <= n; i++) p *= x;
return p;
}
static double fact(int n)
{
double f = 1;
for (int i = 1; i <= n; i++) f *= i;
return f;
}
static void Main(string[] args)
{
double a, x, sum =0;
Console.Write("Enter x:");
x = double.Parse(Console.ReadLine());
Console.Write("Enter a:");
a = double.Parse(Console.ReadLine());
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
sum = fact(n) * pow(x, n);
for (int i = 0; i <= n; i++)
{
double p1 = fact(n - i) * pow(x, i) * pow(a, n - i);
double p2 = fact(i) * fact(n - i);
sum = sum + p1 + p2;
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}

:‫ حاصل سری زیر را نمایش میدهد‬،‫ را خوانده‬n ‫ و‬x ‫ برنامهای که اعداد صحیح‬.34
115 C# ‫متد در‬

xn x ( n 1) x  n 1
n!  n  1!  n  1!
1 1  1x 1
1
x
n  2  n  2 
 n  2 !  n  2 !
x x

2  2x 2  2x

x n  n 
n  n !  x n  n  n  n !
n  nx n  nx
using System;
namespace p80
{
class Program
{
static double pow(double x, int n)
{
double p = 1;
for (int i = 1; i <= n; i++) p *= x;
return p;
}
static double fact(int n)
{
double f = 1;
for (int i = 1; i <= n; i++) f *= i;
return f;
}
static void Main(string[] args)
{
double x, sum = 0;
Console.Write("Enter x:");
x = double.Parse(Console.ReadLine());
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
sum = fact(n) * pow(x, n);
for (int i = 1; i <= n; i++)
{
double p1=fact(n - i)*pow(x, n - i)/ (i - i / x);
double p2=fact(n + i)* pow(x, n + i)/ (i + i / x);
sum = sum + p1 + p2;
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();

}
}
}
‫فصل سوم‬ ‫‪111‬‬

‫‪ .1‬برنامهای که تمامی جفتهای اعداد متحابه از یک تا عدد خواندهشده را نمایش‬ ‫پروژه برنامهنویسی‬
‫میدهد‪ .‬دو عدد صحیح متحابه گویند‪ ،‬اگر مجموع مقسومعلیههای هر یک بهجز خود عدد با عدد دوم برابر باشد‪.‬‬
‫بهعنوانمثال‪ ،‬مقسومعلیههای ‪ 114‬که از ‪ 114‬کوچکتر هستند‪ ،‬عبارت انداز‪ 0 ،1 ،0 ،1 ،04 ،11 ،004 ،11 :‬که مجموع‬
‫آنها عدد ‪ 103‬میشود و مقسومعلیههای ‪ 103‬که کوچکتر از ‪ 103‬هستند‪ ،‬برابر با ‪ 0 ،1 ،0 ،10 ،001‬که مجموع‬
‫آنها ‪ 114‬است‪ .‬پس این دو عدد متحابه میباشند‪.‬‬
‫متد ‪ :main‬ابتدا متغیرهای ‪ n ،i‬و ‪ sum‬را تعریف کرده‪ ،‬با یک پیغدام مناسدب ‪ n‬را از ورودی دریافدت مدیکندد‪.‬‬
‫برنامه از ‪ 8‬تا ‪ n‬را شمارش میکند (با استفاده از یک حلقه)‪ ،‬در داخل حلقه مجموع مقسومعلیههای ‪ i‬را بدا فراخدوانی‬
‫متد ‪ sumDiv‬محاسبه کرده‪ ،‬در ‪ sum‬قرار میدهد‪ .‬اکنون‪ ،‬اگر مجموع مقسومعلیدههدای ‪ sum‬مسداوی ‪ i‬و ‪ i‬مخدالف‬
‫‪ suum‬باشد‪ ،‬آن عدد متحابه است و با پیغام مناسب عدد ‪ i‬و ‪ sum‬را نمایش میدهد‪.‬‬
‫متد )(‪ n ،sumDiv‬را بهعنوان پارامتر دریافت کرده‪ ،‬مجموع مقسومعلیههدای آن را محاسدبه مدیکندد و برمدی‪-‬‬
‫گرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬

‫عدد خواندهشده‬ ‫‪n‬‬ ‫‪main‬‬

‫شمارندهای که از ‪ 0‬تا ‪ n‬میشمارد‪.‬‬ ‫‪i‬‬

‫مجموع مقسومعلیههای ‪i‬‬ ‫‪sum‬‬

‫پارامتری که ‪ i‬را از ‪ main‬میگیرد‪.‬‬ ‫‪n‬‬ ‫‪sumDiv‬‬


‫;‪using System‬‬ ‫مجموع مقسومعلیههای ‪ n‬را محاسبه میکند‪.‬‬ ‫‪sum‬‬
‫‪namespace Project1‬‬
‫{‬ ‫شمارندهای که از ‪ 0‬تا ‪ n-1‬میشمارد‪.‬‬ ‫‪i‬‬
‫‪class Program‬‬
‫{‬
‫)‪static int sumDiv(int n‬‬
‫{‬
‫;‪int sum = 0‬‬
‫)‪for (int j = 1; j < (int)n / 2 + 1; j++‬‬
‫;‪if (n % j == 0) sum += j‬‬
‫;‪return sum‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int i, n, sum‬‬
‫;)"‪Console.Write( "Enter n:‬‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬
‫)‪for (i = 3; i <= n; i++‬‬
‫{‬
‫;)‪sum = sumDiv(i‬‬
‫)‪if (i == sumDiv(sum) && i != sum‬‬
‫متد در ‪113 C#‬‬

‫‪Console.WriteLine( "Numbers {0} and {1} are‬‬


‫;)‪friendly", i, sum‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫پروژه برنامهنویسی ‪ .2‬برنامهای که مقداری را از یک مبنا دریافت کرده‪ ،‬به مبنای دیگر تبدیل میکند (مبناها‬
‫میتوانند بین ‪ 1‬تا ‪ 01‬باشند)‪ .‬این پروژه مبنای مبدأ‪ ،‬عددی در آن مبنا (چنانچه کاربر مقدار را خارج از مبنا وارد‬
‫کند‪ ،‬جلوی او را میگیرد) و مبنای مقصد را از کاربر دریافت میکند‪.‬‬
‫متد ‪ :main‬متغیرها را تعریف کرده‪ ،‬با فراخوانی متدها )(‪ ،readNum() ،readBase‬مبنای مبدأ‪ ،‬عدد مبنای مبدأ‬
‫و مبنای مقصد را میخواند‪.‬‬
‫متد ‪ ،print‬یک کاراکتر را دریافت کرده‪ ،‬با توجه به مبنا آن کاراکتر را در آن مبنا نمایش میدهد‪.‬‬
‫متد )(‪ ،DecToMBase‬یک عدد )‪ (x‬و مبنای ‪ m‬را دریافت کرده‪ ،‬عدد ‪ x‬را از مبنای ‪ 04‬به مبنای ‪ m‬تبدیل می‪-‬‬
‫کند‪.‬‬
‫متد )(‪ ،readNum‬یک کاراکتر را بهعنوان مبنا دریافت کرده و با توجه بده مبندای عدددی در آن مبندا از کداربر‬
‫دریافت میکند‪ ،‬اگر کاربر عدد را نادرست وارد کند‪ ،‬بهعنوانمثال‪ ،‬در مبنای ‪ ،3‬اجازه تایپ مقددار بدیش از ‪ 1‬داده‬
‫نمیشود)‪ .‬جلوی ورود عدد را میگیرد‪.‬‬
‫متد )(‪ ،readBase‬یک عدد را خوانده‪ ،‬اگر عدد بین ‪ 1‬تا ‪ 01‬باشد آن را برمیگرداند‪ ،‬وگرنه پیغام خطای‬
‫صادر کرده و دوباره عدد را میگیرد‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬

‫عدد خواندهشده در یک مبنا‬ ‫‪x‬‬ ‫‪main‬‬

‫مبنای مبدأ‬ ‫‪oBase‬‬

‫مبنای مقصد‬ ‫‪dBase‬‬

‫عددی که باید به مبنای ‪ m‬تبدیل شود‬ ‫‪x‬‬ ‫‪DecTomBase‬‬

‫مبنای مقصد را تعیین میکند‬ ‫‪m‬‬

‫هر بار ‪i‬‬ ‫‪p‬‬

‫شمارنده توان از صفرتا‬ ‫‪i‬‬


‫فصل سوم‬ 114

m ‫ به توان‬i-1 ‫ تقسیمبر‬x ‫قسمت صحیح‬ k

i-1 ‫ به توان‬m ‫ بر‬x ‫باقیمانده تقسیم صحیح‬ x

‫ را میشمارد‬p-1 ‫از یک تا‬ j

.‫ بر اساس مبنا آن را نمایش میدهد‬،‫پارامتری که کاراکتری را دریافت کرده‬ c print

.‫پارامتری که مبنا مبدأ را میگیرد‬ base readNum

‫عدد تبدیلشده به مبنای ورودی‬ bNum

‫کاراکتر خواندهشده در هر مرحله‬ ch

‫مبنای خواندهشده‬ base readBase

using System;
namespace Project2
{
class Program
{
static void print1(char c)
{
if ((c >= 0) && (c <= 9))
Console.Write((uint)c);
else
Console.Write((char)((int)'A' + (int)c - 10));
}
/*******************************
function print
echo a digit in screen
*******************************/
static void print(char c)
{
if ((c >= 0) && (c <= 9))
Console.Write((uint)(c));
else
Console.Write((char)((int)'A' + (int)c - 10));
}
/********************************
conver base 10 to m
********************************/
static void DecToMBase(ulong x, char m)
{
long p = 0, i, k;
while (x >= m)
for (i = 0; ; i++)
if (x < Math.Pow(m, i))
{
k = (long)(Math.Floor(x / Math.Pow(m, i –
1)));
x %= (ulong)(Math.Ceiling(Math.Pow(m, i –
1)));
111 C# ‫متد در‬

for (int j = 1; j < p - i; j++)


print1((char)0);
print1((char)k);
p = i;
break;
}
//end of while loop
for (int j = 1; j < p - 1; j++)
print1((char)0);
print1((char)x);
}
/********************************
read number in n base
********************************/
static ulong readNum(char base1)
{
ulong num = 0;
int i = 0;
char ch;
for (; ; )
{
ConsoleKeyInfo con = Console.ReadKey();
ch = con.KeyChar;
if ((int)ch == 13) break;
if ((ch >= '0') && (ch <= base1 + '0' - 1)
&& (base1 <= 10))
{
num *= base1;
num += (ulong)((int)ch - (int)'0');
}
else if (((ch >= '0') && (ch <= '9')) &&
((base1 >= 10) && (base1 <= 16)))
{
num *= base1;
num += ((ulong)((int)ch - (int)'0'));
}
else if ((ch >= 'A') && (ch <= 'A' + base1 - 11)
&& (base1 >= 11) && (base1 <= 16))
{
num *= base1;
num += (ulong)((int)ch - (int)'A' + 10);
}
else if ((ch >= 'a') && (ch <= 'a' + base1 - 11)
&& (base1 >= 10) && (base1 <= 16))
{
num *= base1;
num += (ulong)((int)ch - (int)'a' + 10);
}
else if (ch == 13) ;
else
ch = '\a';
//Console.Write(ch);
‫فصل سوم‬ 111

i++;
}
Console.WriteLine();
return num;
}
/********************************
read base ( 2 <= base <= 16)
********************************/
static int readBase()
{
int base1 = 0;
base1 = int.Parse(Console.ReadLine()); ;
while (!((base1 >= 2) && (base1 <= 16)))
{
Console.Write("Base not suport enter again :");
base1 = int.Parse(Console.ReadLine()); ;
}
return base1;
}
static void Main(string[] args)
{
ulong x;
int oBase,dBase;
Console.Write("Enter n base :");
oBase=readBase();
Console.Write("Enter your number in {0}:", oBase);
x = readNum((char)oBase);
Console.Write("Enter m base :");
dBase=readBase();
DecToMBase(x, (char)dBase);
Console.ReadKey();
}
}
}

:‫برنامهای که ابتدا منوی زیر را نشان میدهد‬ .3 ‫پروژه برنامهنویسی‬


1. Calculate one
2. Calculate two
3. Calculate three
4. Exit
SELECT (1 to 4):
:‫ حاصل عبارت زیر را محاسبه میکند و نمایش میدهد‬،‫ را وارد کند‬0 ‫اگر کاربر عدد‬
𝐧
𝐱 𝐧 (𝒏)𝟓 (𝒏)𝒙+𝟐 𝐱𝐢 𝐢𝐱 𝐱𝐧

𝐱! 𝐧! (𝐱 + 𝐧)! 𝐱! 𝐧! (𝐧 + 𝟐)!
𝐢=𝟏
‫متد در ‪111 C#‬‬

‫اگر کاربر عدد ‪ 1‬را وارد کند‪ ،‬حاصل عبارت زیر را محاسبه میکند و نمایش میدهد‪:‬‬
‫𝟕𝒙 𝟓𝒙 𝟑𝒙‬ ‫𝒏𝒙‬
‫‪𝒙−‬‬ ‫‪+ − + ⋯±‬‬
‫!𝟕 !𝟓 !𝟑‬ ‫!𝒏‬
‫اگر کاربر عدد ‪ 8‬را وارد کند‪ ،‬حاصل عبارت زیر را محاسبه میکند و نمایش میدهد‪:‬‬
‫𝒙‬
‫𝟑‪((𝒙)𝒏 )𝟑 (𝒏)𝒙+‬‬ ‫𝒙𝒏 𝒙𝒊 𝒊𝒙‬
‫∑‬ ‫… ‪𝒊 = 𝟐, 𝟒,‬‬
‫!)𝟐 ‪𝒏! + (𝒙 + 𝒏 +‬‬ ‫!)𝒙 ‪(𝒙 + 𝒊)! + (𝒏 +‬‬
‫𝟐=𝒊‬
‫اگر کاربر عدد ‪ 0‬را وارد کند‪ ،‬برنامه خاتمه یابد‪.‬‬
‫متد ‪ :main‬متغیرهای ‪ sum ،n ،x‬و ‪ set‬را تعریف میکند‪ ،‬با فراخوانی متد )(‪ menu‬و با توجه بده انتخداب کداربر‬
‫(یکی از مقادیر ‪ 0‬تا ‪ )0‬متدها )(‪ sum2() ،sum1‬و ‪ sum3‬فراخوانی کرده تا مجموع یکی ازسریها را محاسبه کندد و‬
‫نمایش دهد‪.‬‬
‫متد )(‪ x ،pow‬و ‪ n‬را دریافت کرده‪ x ،‬به توان ‪ n‬را برمیگرداند‪.‬‬
‫متد )(‪ n ،fact‬را بهعنوان پارامتر دریافت کرده‪ ،‬فاکتوریل ‪ n‬را برمیگرداند‪.‬‬
‫متد )(‪ ،menu‬منوی موردنظر را نمایش داده و از کاربر میخواهد یکی از گزینههای ‪ 0‬تا ‪ 0‬را وارد کند و گزینده‬
‫انتخابشده توسط کاربر را برمیگرداند‪.‬‬
‫متد )(‪ ،sum1‬پارامترهای ‪ x‬و ‪ n‬را دریافت کرده‪ ،‬حاصل سری اول را محاسبه میکند و برمیگرداند‪.‬‬
‫متد )(‪ ،sum2‬پارامترهای ‪ x‬و ‪ n‬را دریافت کرده‪ ،‬حاصل سری دوم را محاسبه میکند و برمیگرداند‪.‬‬
‫متد ‪ x ،sum3‬و ‪ n‬را بهعنوان پارامتر دریافت کرده‪ ،‬حاصل سری سوم را محاسبه مینماید و برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫اولین ورودی‬ ‫‪x‬‬ ‫‪Main‬‬

‫دومین ورودی‬ ‫‪n‬‬

‫گزینه انتخابشده‬ ‫‪sel‬‬

‫مجموع یکی از سری‬ ‫‪sum‬‬

‫پارامتری که پایه توان را دریافت میکند‪.‬‬ ‫‪x‬‬ ‫‪Pow‬‬

‫پارامتری که توان را دریافت میکند‬ ‫‪n‬‬

‫توان محاسبهشده‬ ‫‪p‬‬

‫شمارندهای که از ‪ 0‬تا ‪ n‬میشمارد‬ ‫‪i‬‬

‫پارامتری که فاکتوریل آن باید محاسبه شود‬ ‫‪n‬‬ ‫‪Fact‬‬

‫شمارندهای از ‪ 0‬تا ‪ n‬میشمارد‬ ‫‪i‬‬

‫فاکتوریل محاسبهشده‬ ‫‪f‬‬

‫گزینه انتخابشده توسط کاربر‬ ‫‪sel‬‬ ‫‪Menu‬‬

‫پارامتر ورودی‬ ‫‪x‬‬ ‫‪sum1‬‬

‫پارامتر ورودی‬ ‫‪n‬‬

‫مجموع سری‬ ‫‪Sum‬‬


‫فصل سوم‬ 111

using System; ‫ را میشمارد‬n ‫ تا‬0‫شمارنده از‬ I


namespace project3
{ ‫پارامتر ورودی‬ x sum2
class Program
{ ‫پارامتر ورودی‬ n
static double
pow(double x, int n)
‫ مجموع سری‬sum
{ ‫ عالمت یکی در میان مثبت و منفی میشود‬sign
double p = 1;
for (int i = 1; i ‫ را میشمارد‬n ‫ تا‬0 ‫شمارندهای که اعداد زوج‬ i
<= n; i++)
p = p * x; ‫پارامتر ورودی‬ x sum3
return p; N
}
‫پارامتر ورودی‬
static double ‫ مجموع سری‬Sum
fact(int n)
{ ‫ را میشمارد‬n ‫ تا‬0 ‫شمارندهای که اعداد زوج‬ I
double f = 1;
for (int i = 1; i
<= n; i++)
f = f * i;
return f;
}
static int menu()
{
int sel;
Console.Write("1: Calculate one ");
Console.Write("\t\t2: Calculate two ");
Console.Write("\n3: Calculate three ");
Console.Write("\t\t4: Exit ");
Console.Write("\tSelect 1 to 4 :");
sel=int.Parse(Console.ReadLine());
return sel;
}
static double sum1(double x, int n)
{
double sum = 0;
for (int i = 1; i <= n; i++)
{
sum = sum + (pow(x, i) * pow(i, (int)x) * pow(x, n))
/ (fact((int)x) * fact(n) * fact(n + 2));
}
sum = sum * pow(x, (int)n) * pow(n, 5) * pow((int)x,
(int)x + 2)
/ (fact((int)x) + fact(n) * fact((int)x + n));
return sum;
}
static double sum2(double x, int n)
{
double sum = 0;
int sign = 1;
for (int i = 1; i <= n; i += 2)
111 C# ‫متد در‬

{
sum = sum + pow(x, i) / fact(i) * sign;
sign = -sign;
}
return sum;
}
static double sum3(double x, int n)
{
double sum = 0;
for (int i = 2; i <= n; i += 2)
{
sum =sum+(pow(x,i) * pow(i, (int)x) * pow(n, (int)x))
/ (fact((int)x + i) + fact(n +(int) x));
}
sum = sum * pow (pow(x, n), 3) * pow(n, (int)x + 3) /
(fact(n) + fact((int)x + n + 2));
return sum;
}
static void Main(string[] args)
{
int n;
double sum = 0, x=0;
while (1==1)
{
int sel = menu();
if (sel == 4) break;
Console.Write("\tEnter x:");
x = double.Parse(Console.ReadLine());
Console.Write("\tEnter n:");
n = int.Parse(Console.ReadLine());
switch (sel)
{
case 1:
sum = sum1(x, n);
break;
case 2:
sum = sum2(x, n);
break;
case 3:
sum = sum3(x, n);
break;
}
Console.Write("\tSum is {0}" , sum);
Console.WriteLine("\n----------------------------" );
}
}
}
}
‫فصل سوم‬ ‫‪131‬‬

‫فرض کنید که سیستم را برای یک بنگاه معامالت ملکی مینویسد‪ .‬در این سیستم قرار‬ ‫پروژه برنامهنویسی ‪.4‬‬
‫است‪ ،‬منوی با ‪ 1‬گزینه نمایش داده شود تا کاربر با انتخاب یکی از گزینهها شکل زمین فروختهشده را انتخاب کند‪.‬‬
‫زمینها به شکلهای مربع‪ ،‬مستطیل‪ ،‬مثلث و دایره هستند‪ .‬پس از انتخاب شکل زمین توسط کاربر‪ ،‬قیمت هر متر زمین‬
‫و درصد حق السهم فروشنده دریافت میگردد و در ادامه با توجه به نوع انتخابشده کاربر‪ ،‬اطالعات زمین دریافت‬
‫میگردد و مبلغی که خریدار باید پرداخت کند را نمایش میدهد‪ .‬این برنامه تا زمانی ادامه مییابد که کاربر در‬
‫منوی ظاهرشده گزینه ‪ 1‬را انتخاب نماید‪.‬‬
‫متد ‪ :main‬ابتدا متغیر ‪ price‬را تعریف کرده‪ ،‬سپس در داخل یک حلقه بینهایت متد )(‪ Menu‬را فراخوانی می‪-‬‬
‫کند و نتیجه این متد را در متغیر ‪ sel‬قرار میدهد و اگر گزینه انتخابشده کاربر ‪ 1‬باشد‪ ،‬برنامه خاتمه مییابد‪ ،‬وگرنده‬
‫با توجه به انتخاب کاربر‪ ،‬یکی از متدها )(‪( Square‬اگر کاربر گزینه ‪ 0‬را انتخداب کدرده باشدد)‪( Rectangle() ،‬اگدر‬
‫کاربر گزینه ‪ 1‬را انتخاب کرده باشد)‪( Triangle() ،‬اگر کاربر گزینه ‪ 8‬را انتخاب کرده باشد) یا )(‪( Circle‬اگر کداربر‬
‫گزینه ‪ 0‬را انتخاب کرده باشد) فراخوانی میکند‪.‬‬
‫متد )(‪ ،Broker‬قیمت فروش کل زمین را گرفته و بر اساس سهم بنگاهدار‪ ،‬مبلغی که به بنگاهدار تعلق میگیدرد را‬
‫برمیگرداند‪.‬‬
‫متد )(‪ ،Traingle‬پارامتر ‪( price‬قیمت هر متر زمین مثلثی شکل ) را دریافت کرده‪ ،‬سپس با پیغام مناسب سه ضلع‬
‫مثلددث را مددیخوانددد و در متغیرهددای ‪ b ،a‬و ‪ c‬قددرار مددیدهددد و در ادامدده مسدداحت مثلددث را بددا فرمددول‬
‫)𝒄 ‪ √𝒑(𝒑 − 𝒂)(𝒑 − 𝒃)(𝒑 −‬حساب میکند و مساحت )‪ (s‬را در قیمت هر متر زمین (‪ )price‬ضرب کرده تا قیمت‬
‫زمین مثلثی به دست آید و در پایان‪ ،‬حق السهم بنگاه را با فراخوانی متد )(‪ Broker‬حساب مینماید و با قیمت زمدین‬
‫جمع مینماید و نمایش میدهد‪.‬‬
‫متد )(‪ ،Square‬مانند متد )(‪ Triangle‬عمل میکند‪ ،‬با این تفاوت که برای محاسبه قیمت زمین مساحت مربدع را‬
‫حساب میکند‪.‬‬
‫متد )(‪ ،Rectangle‬مانند متد )(‪ Triangle‬عمل میکند با این تفاوت که بهجای محاسبه مساحت مثلث‪ ،‬مسداحت‬
‫مستطیل را حساب میکند‪.‬‬
‫متد )(‪ ،Circle‬مانند متد )(‪ Traingle‬عمل میکند‪ .‬با این تفاوت که بهجای محاسبه مساحت مثلث مساحت دایره‬
‫را حساب میکند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫متد در ‪135 C#‬‬

‫درصد حق السهم بنگاهدار‬ ‫‪rate‬‬ ‫سراسری‬


‫قیمت فروش واقعی زمین بدون حق السهم بنگاهدار‬ ‫‪sell‬‬ ‫‪Broker‬‬

‫پارامتری که قیمت هر متر زمین مثلثی شکل را از متد ‪ main‬دریافت میکند‪.‬‬ ‫‪price‬‬ ‫‪Triangle‬‬

‫اضالع مثلث‬ ‫‪a, b, c‬‬

‫محیط مثلث تقسیمبر ‪2‬‬ ‫‪p‬‬

‫مساحت مثلث‬ ‫‪s‬‬

‫قیمت زمین بهعالوه حق السهم بنگاهدار‬ ‫‪k‬‬

‫پارامتری که قیمت هر متر زمین مربعی شکل را از متد ‪ main‬دریافت میکند‪.‬‬ ‫‪price‬‬ ‫‪Square‬‬

‫ضلع مربع‬ ‫‪a‬‬

‫مساحت مربع‬ ‫‪s‬‬

‫قیمت زمین بهعالوه حق السهم بنگاهدار‬ ‫‪k‬‬


‫پارامتری که قیمت هر متر زمین مستطیلی شکل را از متد ‪ main‬دریافت می‪-‬‬ ‫‪price‬‬ ‫‪Rectangle‬‬
‫کند‪.‬‬
‫طول زمین‬ ‫‪a‬‬

‫عرض زمین‬ ‫‪b‬‬

‫مساحت زمین‬ ‫‪s‬‬

‫قیمت زمین بهعالوه حق السهم بنگاهدار‬ ‫‪k‬‬

‫پارامتری که قیمت هر متر زمین دایره شکل را از متد ‪ main‬دریافت میکند‪.‬‬ ‫‪price‬‬ ‫‪Circle‬‬

‫شعاع زمین دایرهای‬ ‫‪r‬‬

‫مساحت زمین دایرهای‬ ‫‪S‬‬

‫قیمت زمین بهعالوه حق السهم بنگاهدار‬ ‫‪K‬‬

‫گزینه که کاربر انتخاب کرده است‬ ‫‪sel‬‬ ‫‪Menu‬‬


‫قیمت هر متر زمین‬ ‫‪price‬‬ ‫‪Main‬‬

‫مقدار متد )(‪ menu‬برمیگرداند (گزینهی که کاربر انتخاب کرده است)‪.‬‬ ‫‪sel‬‬

‫;‪using System‬‬
‫‪namespace project4‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫;‪static int rate‬‬
‫)‪static long Broker(double sell‬‬
‫{‬
‫;‪return (long) sell * rate / 100‬‬
‫فصل سوم‬ 131

}
static void Traingle(int price)
{
long a, b, c;
Console.Write("Enter a:");
a = long.Parse(Console.ReadLine());
Console.Write("Enter b:");
b = long.Parse(Console.ReadLine());
Console.Write("Enter c:");
c = long.Parse(Console.ReadLine());
long p = (a + b + c) / 2;
long s = (long)Math.Sqrt(p* (p - a) * (p - b) * (p - c));
long kol = s * price + Broker(s * price);
Console.Write(kol);
}
static void Square(int price)
{
long a;
Console.Write("Enter a:");
a = long.Parse(Console.ReadLine());
long s = a * a;
long kol = (long)s * price + Broker(s * price);
Console.Write(kol);
}
static void Rectangle(int price)
{
long a, b;
Console.Write("Enter a:");
a = long.Parse(Console.ReadLine());
Console.Write("Enter b:");
b = long.Parse(Console.ReadLine());
long s = a * b;
long kol = s * price + Broker(s * price);
Console.Write(kol);
}
static void Circle(int price)
{
long r;
Console.Write("Enter r:");
r = long.Parse(Console.ReadLine());
double s1 = r * r * 3.14f;
long s = (long)s1;
long kol = s * price + Broker(s * price);
Console.Write(kol);
}
static int Menu()
{
int sel;
for (; ; )
{
Console.WriteLine("\n");
Console.WriteLine("\t\t1: Square");
133 C# ‫متد در‬

Console.WriteLine("\t\t2: Rectangle");
Console.WriteLine("\t\t3: Traingle");
Console.WriteLine("\t\t4: Circle");
Console.WriteLine("\t\t5: Exit");
Console.Write("\t Select 1 .. 5:");
sel = int.Parse(Console.ReadLine());
if (sel >= 1 && sel <= 5) break;
}
return sel;
}
static void Main(string[] args)
{
int price;
while (true == true)
{
int sel = Menu();
if (sel == 5) break;
Console.Write("Enter price:");
price = int.Parse(Console.ReadLine());
Console.Write("Enter rate:");
rate = int.Parse(Console.ReadLine());
switch (sel)
{
case 1:
Square(price);
break;
case 2:
Rectangle(price);
break;
case 3:
Traingle(price);
break;
case 4:
Circle(price);
break;
}
}

}
}
}
‫فصل سوم‬ ‫‪134‬‬
‫فصل‬
‫آرایهها و رشتهها‬
‫‪4‬‬
‫‪ .1‬برنامهای که عددی صحیح را از ورودی خوانده‪ ،‬تمام اعداد اول قبل از آن را با استفاده از تعریف زیر تعییی‬
‫کرده‪ ،‬به خروجی میبرد‪ .‬عددی اول است که بر هیچ عدد اول قبل از خودش قابل قسمت نباشد‪.‬‬
‫وظایف متدها‬
‫متد ‪ :main‬متغیر برنامه را تعریف کرده‪ ،‬متد ‪ prim‬را فراخوانی میکند‪.‬‬
‫متد ‪ :prim‬تشخیص میدهد عددی اول است یا خیر؟ اگر عدد اول باشد‪ ،‬یک را برمیگرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫عدد خواندهشده‬ ‫‪n‬‬
‫آرایهای از اعداد اول‬ ‫‪p‬‬
‫شمارنده‬ ‫‪i‬‬ ‫‪main‬‬
‫;‪using System‬‬
‫‪namespace p1‬‬ ‫تعداد اعداد اول‬ ‫‪tedad‬‬
‫{‬
‫‪class Program‬‬ ‫شمارنده‬ ‫‪i‬‬ ‫‪prim‬‬
‫{‬
‫)‪static int prim(int[] a, int tedad, int num‬‬
‫{‬
‫;‪int i‬‬
‫)‪for (i = 0; i < tedad; i++‬‬
‫)‪if (num % a[i] == 0‬‬
‫;)‪return (0‬‬
‫;‪a[tedad] = num‬‬
‫;)‪return (1‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int n, i, tedad = 0‬‬
‫;]‪int[] p = new int[300‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = Convert.ToInt32(Console.ReadLine‬‬
‫)‪for (i = 2; i <= n; i++‬‬
‫;‪if (prim(p, tedad, i) == 1) tedad++‬‬
‫;)" ‪Console.Write("Primary is‬‬
‫)‪for (i = 0; i < tedad; i++‬‬
‫;)]‪Console.Write(" {0}", p[i‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .2‬برنامهای که شماره دانشجویی تعدادی از دانشجویان را از ورودی خوانده‪ ،‬در آراییه قیرار مییدهید‪ .‬سیس‬
‫عناصر آرایه را به روش انتخابی مرتب میکند‪ .‬مرتبسازی آرایه به روش انتخابی به ای صیور انجیام مییشیود‪:‬‬
‫کوچکتری عنصر آرایه پیداشده‪ ،‬جای آن با عنصر اول آرایه عوض میشود‪ .‬در مرحله بعد بقیه عناصر آرایه برای‬
‫یافت کوچکتری عنصر آرایه جستجو میشود و جای آن بیا عنصیر دوم آراییه عیوض مییشیود‪ .‬ایی رونید تیا‬
‫آرایهها و رشتهها‬ ‫‪632‬‬

‫مرتبسازی کامل آرایه ادامه مییابد‪ .‬پ از مرتبسازی نتیجه را در خروجی چاپ میکند‪ .‬ایی برنامیه سیه متید‬
‫دارد که عبار اند از‪ :‬متدی برای خواندن عناصر آرایه‪ ،‬متدی برای مرتبسازی و متدی برای چاپ عناصر آرایه‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬متغیرهای برنامه را تعرییف کیرده‪ ،‬تعیداد دانشیجویان را مییخوانید‪ .‬سیس متیدها ‪،readarray‬‬
‫‪ select_sort‬و ‪ writearray‬را فراخوانی میکند‪.‬‬
‫متد ‪ :readarray‬شمارههای دانشجویی را میخواند و در آرایه قرار میدهد‪.‬‬
‫متد ‪ :select_sort‬شمارههای دانشجویی موجود در آرایه را مرتب میکند‪.‬‬
‫متد ‪ :writearray‬شمارههای دانشجویی موجود در آرایه را چاپ میکند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫آرایهای برای نگهداری شماره دانشجویان‬ ‫‪id‬‬ ‫‪main‬‬
‫تعداد دانشجویان‬ ‫‪n‬‬
‫شمارنده‬ ‫‪i‬‬
‫شمارنده‬ ‫‪i‬‬ ‫‪readarray‬‬
‫شمارندهها‬ ‫‪i, j‬‬ ‫‪select_sort‬‬
‫;‪using System‬‬ ‫متغیر کمکی‬ ‫‪temp‬‬
‫‪namespace p2‬‬ ‫بزرگترین عدد‬ ‫‪max‬‬
‫{‬
‫‪class Program‬‬ ‫شمارنده‬ ‫‪i‬‬ ‫‪writearray‬‬
‫{‬
‫)‪static void readarray(int[] id, int n‬‬
‫{‬
‫;‪int i‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫{‬
‫;)‪Console.Write("Enter id[{0}];", i + 1‬‬
‫; ;))(‪id[i] = int.Parse(Console.ReadLine‬‬
‫}‬
‫}‬
‫)‪static void select_sort(int[] id, int n‬‬
‫{‬
‫;‪int i, j, max, temp‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫{‬
‫;‪max = i‬‬
‫)‪for (j = i + 1; j < n; j++‬‬
‫;‪if (id[max] > id[j]) max = j‬‬
‫;]‪temp = id[i‬‬
‫;]‪id[i] = id[max‬‬
‫;‪id[max] = temp‬‬
‫}‬
‫}‬
‫)‪static void writearray(int[] id, int n‬‬
‫{‬
‫;‪int i‬‬
‫;)" ‪Console.Write("Sorted output‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫;)]‪Console.Write("\t{0}", id[i‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int n‬‬
‫;]‪int[] id = new int[100‬‬
632 ‫فصل چهارم‬

Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); ;
readarray(id, n);
select_sort(id, n);
writearray(id, n);
Console.ReadKey();
}
}
}

‫ آنها را بهطور مرتب در آرایهای قرار میدهد ( دقت داشته‬،‫ برنامهای که تعدادی عدد را از ورودی خوانده‬.3
‫ را بیه خروجیی‬،‫ آراییه مرتیبشیده‬، ‫ سس‬.)‫ بهطور صعودی مرتب شوند‬،‫باشید که اعداد در موقع گرفت در آرایه‬
.‫میبرد‬
using System; ‫هدف‬ ‫متغیر‬
namespace p3
{ ‫آرایهای از اعداد‬ A
class Program N
{
‫تعداد اعداد‬
static void ‫شمارندهها‬ i, j, l Main(string[]
args)
{ ‫عدد خواندهشده‬ num
int i,j,l,n,num;
int[] a = new int[100];
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); ;
for (i = 0; i < n; i++)
{
Console.Write("Enter a[{0}]:", i+1);
num = int.Parse(Console.ReadLine()); ;
for (j = 0; j < i; j++)
if (a[j] > num)
break;
for (l = i; l > j; l--) a[l] = a[l - 1];
a[j] = num;
}
Console.WriteLine("Result is : ");
for (i = 0; i < n; i++)
Console.Write(" {0}", a[i]);
Console.ReadKey();
}
}
}
‫آرایهها و رشتهها‬ ‫‪632‬‬

‫‪ .4‬برنامهای که دو رشته ‪ S2‬و ‪ S1‬را از ورودی خوانده‪ ،‬رشته ‪ S1‬را در رشته ‪ S2‬جستجو میکند‪ .‬در ای برنامیه‪،‬‬
‫خواندن رشتهها توسط متد اصلی و جستجوی رشته توسط متدی انجام میشود‪.‬‬
‫وظایف متدها‪:‬‬
‫متد‪ :main‬دو رشته را خوانده‪ ،‬با فراخوانی متد ‪ ،search_string‬رشته اول را در رشته دوم جستجو میکند‪.‬‬
‫سس ‪ ،‬پیغام مناسب چاپ مینماید‪.‬‬
‫متد ‪ :search_string‬رشته اول را در رشته دوم جستجو میکند‪ .‬اگر رشته اول در رشته دوم باشد‪ ،‬مکان شروع‬
‫رشته اول در رشته دوم‪ ،‬وگرنه صفر را برمیگرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫رشته اول‬ ‫‪s1, s2‬‬ ‫‪Main‬‬
‫عمل وقوع رشته ‪ s2‬در رشته ‪s1‬‬ ‫‪location‬‬
‫;‪using System‬‬
‫‪namespace p4‬‬ ‫شمارندهها‬ ‫‪i, j‬‬ ‫‪search_string‬‬
‫{‬ ‫شمارنده از مکان اولین تساوی‬ ‫‪k‬‬
‫‪class Program‬‬
‫{‬
‫)‪static int search_string(char[] s1, char[] s2‬‬
‫{‬
‫;‪int i, j, k‬‬
‫)‪for (i = 0; i < s2.Length; i++‬‬
‫{‬
‫;‪k = i‬‬
‫;‪j = 0‬‬
‫)]‪while(j<s1.Length && k<s2.Length && s1[j]== s2[k‬‬
‫{‬
‫;‪j++‬‬
‫;‪k++‬‬
‫}‬
‫)‪if (j == s1.Length‬‬
‫;)‪return (i + 1‬‬
‫)‪if (j == s1.Length && k == s2.Length‬‬
‫;)‪return (i + 1‬‬
‫}‬
‫;‪return 0‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪string s1, s2‬‬
‫;‪int location‬‬
‫;)"‪Console.Write("Enter string 1:‬‬
‫;)(‪s1 = Console.ReadLine‬‬
‫‪632‬‬ ‫فصل چهارم‬

‫;)"‪Console.Write("Enter string 2:‬‬


‫;)(‪s2 = Console.ReadLine‬‬
‫;]‪char[] ss1 = new char[s1.Length‬‬
‫;)‪s1.CopyTo(0, ss1, 0, ss1.Length‬‬
‫;]‪char[] ss2 = new char[s2.Length‬‬
‫;)‪s2.CopyTo(0, ss2, 0, ss2.Length‬‬
‫;)‪location = search_string(ss1, ss2‬‬
‫)‪if (location != 0‬‬
‫;)‪Console.Write("Found in location {0}", location‬‬
‫‪else‬‬
‫;)" ‪Console.Write("Not found‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .5‬برنامهای که با خواندن تعدادی عدد از ورودی‪ ،‬آنها را در آرایهای قرار میدهد‪ .‬سس ‪ ،‬کلیه عناصر آرایه را‬
‫بر عنصر وسط تقسیم میکند‪ .‬اگر عنصر وسط صفر باشد‪ ،‬بر عنصر بعد از عنصر وسط تقسیم مینماید‪ .‬اگیر ایی عنصیر‬
‫صفر باشد‪ ،‬بر عنصر قبل از عنصر وسط تقسیم میکند‪ .‬اگر ای عنصر صفر باشد‪ ،‬برای پیدا کردن عنصری غیر از صیفر‬
‫و انجام تقسیم‪ ،‬به روند قبلی ادامه میدهد‪ .‬اگر همه عناصر آرایه صفر باشند‪ ،‬پیام مناسبی صادر میکند‪.‬‬
‫توضیح‪ :‬پ از قرار دادن عناصر در آرایه‪ ،‬اندی وسط را محاسبه کرده‪ ،‬عنصر وسط را پیدا مینماید‪ .‬اگر صفر‬
‫نبود‪ ،‬عمل تقسیم را انجام میدهد‪ .‬ای شمارنده به اندی وسط اضافه میشود تا اگر مثبت بود‪ ،‬عنصر بعد از عنصر‬
‫وسط و اگر منفی بود‪ ،‬عنصر قبل از عنصر وسط موردبررسی قرار گیرد تا عمل تقسیم انجام شود‪ .‬اگر عنصر غیر صفری‬
‫در آرایه پیدا شود‪ action ،‬فراخوانی میشود تا تمام عناصر آرایه را بر آن عنصر تقسیم کند‪ .‬اگر همه عناصر صفر‬
‫باشند‪ ،‬برنامه پیام مناسبی صادر میکند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫تعداد عناصر آرایه‬ ‫‪n‬‬ ‫‪main‬‬
‫آرایهای با ‪ 011‬عنصر‬ ‫‪a‬‬
‫عنصر وسط‬ ‫‪mid‬‬
‫شمارنده‬ ‫‪i‬‬
‫;‪using System‬‬ ‫عالمت (برای تعیین عنصر قبل‬ ‫‪sign‬‬
‫‪namespace p5‬‬
‫{‬ ‫و بعد به کار میرود)‬
‫شمارنده‬ ‫‪i‬‬ ‫‪action‬‬
‫‪class Program‬‬
‫{‬
‫)‪static void action(int[] a, int loc, int n‬‬
‫{‬
‫;‪int i‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫‪Console.Write("\n{0} / {1} = {2}", a[i], a[loc],‬‬
‫;)]‪(float)a[i] / a[loc‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int i, mid, n, sign = -1‬‬
‫;]‪int[] a = new int[100‬‬
‫آرایهها و رشتهها‬ ‫‪642‬‬

‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬
‫;‪mid = n / 2‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫{‬
‫;)‪Console.Write("Enter a[{0}]:", i + 1‬‬
‫;))(‪a[i] = int.Parse(Console.ReadLine‬‬
‫}‬
‫)‪for (i = 0; i <= mid; i++‬‬
‫{‬
‫)‪if (a[mid + (sign * i)] != 0‬‬
‫{‬
‫;)‪action(a, mid + (sign * i), n‬‬
‫;‪break‬‬
‫}‬
‫;‪if (sign == 1) i--‬‬
‫;‪sign = -sign‬‬
‫}‬
‫)‪if (i > mid‬‬
‫;)"‪Console.Write("All element are zero‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .6‬کارخانهای دارای ‪ 5‬ردیف شغلی است که به کارمندان در مقابل ‪ 44‬ساعت کار در هفته‪ ،‬ماهانه مطابق جدول‬
‫زیر حقوق ثابتی پرداخت میشود‪ .‬درصورتیکه کارمندی بیش از ‪ 164‬ساعت در ماه کار کند اضافهکاری بیه ازای‬
‫هر ساعت مطابق به آنچه که در جدول مشخص شد‪ ،‬پرداخت میگردد‪ .‬اگر کارمندی کمتر از ‪ 164‬ساعت در میاه‬
‫کار کند‪ ،‬به ازا هر ساعت مبلغی مطابق جدول از حقوق وی کسر میشود‪.‬‬
‫برنامه ای که شماره کارمندی‪ ،‬ردیف شغلی و ساعت کارکرد در ماه برای هر کارمند را خوانده‪ ،‬دریافتی آنها را‬
‫چاپ میکند‪ .‬برای خاتمه برنامه بهجای شماره کارمندی ‪ -999‬وارد میشود‪.‬‬
‫هر ساعت اضافهکاری هر ساعت کمکاری‬ ‫حقوق ثابت‬ ‫نوع تخصص‬ ‫ردیف شغلی‬
‫‪ 444‬و ‪6‬‬ ‫‪ 444‬و ‪5‬‬ ‫‪ 444‬و ‪ 444‬و ‪1‬‬ ‫مهندس ارشد‬ ‫‪4‬‬
‫‪ 444‬و ‪5‬‬ ‫‪ 444‬و ‪4‬‬ ‫‪ 444‬و ‪044‬‬ ‫مهندس ساده‬ ‫‪1‬‬
‫‪ 444‬و ‪4‬‬ ‫‪ 444‬و ‪3‬‬ ‫‪ 444‬و ‪644‬‬ ‫تکنسی‬ ‫‪2‬‬
‫‪ 444‬و‪3‬‬ ‫‪544‬و‪2‬‬ ‫‪444‬و‪544‬‬ ‫کارگر ماهر‬ ‫‪3‬‬
‫‪544‬و‪2‬‬ ‫‪444‬و‪2‬‬ ‫‪444‬و‪464‬‬ ‫کارگر ساده‬ ‫‪4‬‬
642 ‫فصل چهارم‬

‫هدف‬ ‫متغیر‬
‫ستون‬3 ‫سطر و‬5 ‫جدولی با‬ table
‫شماره کارمندی‬ code
‫ردیف شغلی‬ radif
‫ساعات کارکرد‬ hh
‫ساعات تأخیر‬ t
‫ساعات اضافهکار‬ e
‫مبلغ تأخیر‬ t_mablag
‫پایه‬ base
using System;
namespace p6 ‫مبلغ اضافهکار‬ e_mablag
{ pay
class Program
‫قابل پرداخت‬
{
static void Main(string[] args)
{
long[,] table = new long[5, 3]
{{1000000,5000,6000},
{800000,4000,5000},
{600000,3000,4000},
{500000,2500,3000},
{460000,2000,2500}};
int code, radif, hh, t, e;
long t_mablag, e_mablag, pay, base1;
for (; ; )
{
t = 0;
e = 0;
Console.Write("Enter code:");
code = int.Parse(Console.ReadLine());
if (code == -999) break;
Console.Write("Enter radif:");
radif = int.Parse(Console.ReadLine());
Console.Write("Enter hour:");
hh = int.Parse(Console.ReadLine());
if (radif > 4 || radif < 0)
{
Console.Write("Enter radif between 0 to 4");
continue;
}
if (hh > 160)
e = hh - 160;
else
t = 160 - hh;
base1 = table[radif, 0];
e_mablag = table[radif, 1] * e;
t_mablag = table[radif, 2] * t;
pay = base1 + e_mablag - t_mablag;
Console.Write("Code is {0}\thour is {1}", code, hh);
Console.Write("\nbase is {0}\te_mablag is
{1}\tt_mablag is {2}\tPay{3}", base1,
e_mablag, t_mablag, pay);
Console.WriteLine();
‫آرایهها و رشتهها‬ ‫‪646‬‬

‫}‬
‫}‬
‫}‬
‫}‬

‫‪ .7‬برنامهای که ‪ n‬عدد را خوانده‪ ،‬در آرایهای قرار میدهد و توسط متدی عناصر آن را معکوس (از آخری عدد‬
‫به اولی عدد) کرده‪ ،‬به برنامه برگرداند و برنامه آن را نمایش میدهد (برنامه‪ ،‬برای دریافت داده‪ ،‬معکوس کردن و‬
‫چاپ عناصر آرایه از متدها جداگانه استفاده میکند)‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬ابتدا تعداد عدد را میخواند‪ ،‬با فراخوانی متد ‪ input‬تعدادی عدد را از ورودی خوانده‪ ،‬متد‬
‫‪ convert‬آنها را معکوس میکند و با فراخوانی ‪ print‬اعداد معکوس شده را چاپ میکند‪.‬‬
‫متد ‪ :input‬تعدادی عدد را خوانده و در آرایه قرار میدهد‪.‬‬
‫متد ‪ :convert‬اعداد موجود در آرایه را معکوس میکند‪.‬‬
‫متد ‪ :print‬عناصر موجود در آرایه را چاپ میکند‪.‬‬

‫هدف‬ ‫نام‬ ‫متد‬

‫;‪using System‬‬ ‫‪ n‬تعداد اعداد‬ ‫‪main‬‬


‫‪namespace p7‬‬ ‫‪ num‬آرایهای از اعداد‬
‫{‬
‫‪class Program‬‬ ‫‪ i‬شمارنده‬ ‫‪input‬‬
‫{‬
‫)‪static void input(int[] a, int n‬‬ ‫‪ temp‬متغیر کمکی‬ ‫‪convert‬‬
‫{‬
‫;‪int i‬‬ ‫‪ i‬شمارنده‬
‫)‪for (i = 0; i < n; i++‬‬ ‫‪ i‬شمارنده‬ ‫‪print‬‬
‫{‬
‫;)‪Console.Write("Enter number [{0}]:", i + 1‬‬
‫;))(‪a[i] = Convert.ToInt32(Console.ReadLine‬‬
‫}‬
‫}‬
‫)‪static void convert(int[] a, int n‬‬
‫{‬
‫;‪int i, temp‬‬
‫)‪for (i = 0; i < n / 2; i++‬‬
‫{‬
‫;]‪temp = a[i‬‬
‫;]‪a[i] = a[n - i - 1‬‬
‫;‪a[n - i - 1] = temp‬‬
‫‪643‬‬ ‫فصل چهارم‬

‫}‬
‫}‬
‫)‪static void print(int[] a, int n‬‬
‫{‬
‫;‪int i‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫"(‪Console.Write‬‬ ‫;)]‪{0}", a[i‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int n‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪n = int.Parse(Console.ReadLine‬‬
‫;]‪int[] num = new int[n‬‬
‫;)‪input(num, n‬‬
‫;)"‪Console.Write("Input is\t‬‬
‫;)‪print(num, n‬‬
‫;)‪convert(num, n‬‬
‫;)"‪Console.Write("\nConvert is\t‬‬
‫;)‪print(num, n‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .0‬فرض کنید که در قسمت تخلفا ماشی ها در اداره راهنمایی رانندگی‪ 14 ،‬نوع تخلف منظیور گردیید و کید‬
‫تخلف از ‪ 4‬تا ‪ 9‬در نظر گرفته شد و هر تخلف جریمه خاصی دارد‪ .‬برای هر ماشی اطالعیاتی مثیل شیماره ماشیی ‪،‬‬
‫تعداد تخلفا و کد هر تخلف موجود است‪ .‬برنامهای که مبلغ جریمه را برای هر ماشیی محاسیبه مییکنید‪ .‬بیرای‬
‫خروج از برنامه کاربر بهجای شماره ماشی ‪ -999‬را وارد میکند‪.‬‬
‫توضیح ‪ :‬برای حل ای برنامه کد تخلف به همراه مبلغ جریمه را در آرایهای به نام ‪ code‬قراردادیم کیه ‪ 14‬سیطر‬
‫دارد‪ .‬در هر سطر مبلغ جریمه و کد تخلف نگهداری میشود‪.‬‬
‫;‪using System‬‬
‫‪namespace p8‬‬ ‫هدف‬ ‫متغیر‬
‫{‬
‫‪class Program‬‬
‫‪ table‬جدول مبالغ جریمه‬
‫{‬ ‫‪ number‬شماره ماشین‬
‫)‪static void Main(string[] args‬‬
‫{‬ ‫‪ code‬کد تخلف‬
‫]‪long[] table = new long[10‬‬
‫‪{ 1000, 2000, 3000, 4000,‬‬
‫‪ sum‬مجموع تخلفات هر ماشین‬
‫‪5000, 8000,‬‬ ‫‪ i‬شمارنده‬
‫;} ‪10000, 20000, 30000, 50000‬‬
‫;‪int number, code, n, i‬‬ ‫‪ n‬تعداد تخلف هر ماشین‬
‫;‪double sum = 0.0‬‬
‫) ; ;( ‪for‬‬
‫{‬
‫آرایهها و رشتهها‬ 644

Console.Write("Enter number:");
number = Convert.ToInt32(Console.ReadLine());
if (number == -999) break;
Console.Write("Enter n:");
n = Convert.ToInt32(Console.ReadLine());
sum = 0.0;
for (i = 1; i <= n; i++)
{
Console.Write("Enter code {0}:", i);
code = Convert.ToInt32(Console.ReadLine());
;
if (code >= 0 && code < 10)
sum += (float)table[code];
else
{
i--;
Console.WriteLine("Enter code between 0 to 9");
continue;
}
}
Console.WriteLine("*** Number is {0}\t Sum is {1}
***", number, sum);
}
Console.ReadKey();
}
}
}

‫ قیرار مییدهید و‬S3 ‫ را خوانده و کاراکترها را یکدرمیان در رشته‬S2 ‫ و‬S1 ‫ برنامه ای که رشته های‬.9
‫ (رشیته نتیجیه) و‬S3 ،)‫ (رشته دوم‬S2 ،)‫ (رشته اول‬S1 ‫ در ای برنامه متغیرهای‬.‫ را نمایش میدهد‬S3 ‫رشته‬
.‫ (برای پیمایش کاراکترهای رشته اول و دوم) را داریم‬Count
using System;
namespace p9
{
class Program
642 ‫فصل چهارم‬

{
static void Main(string[] args)
{
Console.Write("Enter a string 1:");
string s1 = Console.ReadLine();
Console.Write("Enter a string 2:");
string s2 = Console.ReadLine();
string s3 = "";
int count = 0;
while (count < s1.Length && count < s2.Length)
{
s3 += s1[count];
s3 += s2[count];
count++;
}
if (count == s1.Length && count < s2.Length)
{
while (count < s2.Length)
{
s3 += s2[count];
count++;
}
}
else if (count == s2.Length && count < s1.Length)
{
while (count < s1.Length)
{
s3 += s1[count];
count++;
}
}

Console.Write("String : {0}", s3);


Console.ReadKey();
}
}
}

‫ به همراه شماره سطر در‬،‫ بزرگتری عنصر هر سطر را پیداکرده‬،‫ را خوانده‬4×4 ‫ برنامهای که عناصر آرایهای‬.14
.‫خروجی چاپ میکند‬
.‫ ستون پنجم آرایه برای نگهداری بزرگتری عنصر هر سطر در نظر گرفتهشده است‬:‫توضیح‬
‫آرایهها و رشتهها‬ 642

‫هدف‬ ‫متغیر‬ ‫متد‬


‫ ستون‬5 ‫ سطر و‬4 ‫آرایهای با‬ a Main
using System; ‫ شمارندهها‬i, j readarray
namespace p10
{ ‫ شمارندهها‬i, j findmax
class Program ‫ شمارندهها‬i, j writearray
{
static void readarray(int[,] a)
{
int i, j;
for (i = 0; i < 4; i++)
{
Console.Write("Enter row({0}):", i + 1);
string[] s = Console.ReadLine().Split(' ');
for (j = 0; j < 4; j++)
a[i, j] = Convert.ToInt32(s[j]);
}
}
static void findmaxrow(int[,] a)
{
int i, j;
for (i = 0; i < 4; i++)
{
a[i, 4] = a[i, 0];
for (j = 1; j < 4; j++)
if (a[i, 4] < a[i, j]) a[i, 4] = a[i, j];
}
}
static void writearray(int[,] a)
{
int i, j;
for (i = 0; i < 4; i++)
{
Console.WriteLine();
for (j = 0; j < 4; j++)
Console.Write("{0}\t", a[i, j]);
Console.Write("\t {0}", a[i, 4]);
}
}
static void Main(string[] args)
{
int[,] a = new int[4, 5];
readarray(a);
findmaxrow(a);
Console.Write("*********************result*****************");
writearray(a);
Console.ReadKey();
}
}
}
642 ‫فصل چهارم‬

.)strcpy ‫ برنامهای که رشتهای را در رشته دیگر کسی میکند (بدون استفاده از متد‬.11
:‫وظایف متدها‬
‫رشته اول و‬ ‫ سس‬.‫ رشته دوم را در رشته اول کسی میکند‬strcpy ‫ با فراخوانی‬،‫ دو رشته را خوانده‬:main ‫متد‬
.‫دوم را با پیغام مناسب چاپ میکند‬
.‫ یکرشته را در رشته دیگر کسی میکند‬:strcpy ‫متد‬

using System; ‫هدف‬ ‫متغیر‬ ‫متد‬


namespace p11
{ ‫ رشته مبدأ‬str1
class Program main
‫ رشته مقصد‬str2
{
public static ‫شمارنده‬ i strcpy string
strCopy(string des, string sou)
{
des = "";
int i;
for (i = 0; i < sou.Length; i++)
{
des += sou[i].ToString();
}
return des;
}
static void Main(string[] args)
{
string str1 = "";
string str2 = "";
Console.Write("Enter a string:");
str1 = Console.ReadLine();
str2 = strCopy(str2, str1);
Console.Write("Result is ");
Console.Write(str2);
Console.ReadKey();
}
}
}
‫آرایهها و رشتهها‬ ‫‪642‬‬

‫‪ .12‬ماتری جادویی یک ماتری ‪ N  N‬است که هر عنصر آن یک عدد صحیح ‪ 1‬تا ‪ N2‬است‪ .‬حاصل جمع هر‬
‫سطر‪ ،‬هر ستون و همچنی عناصر قطر همگی با یک دیگر مساویاند‪ .‬برای تولید ای ماتری بیهصیور زییر عمیل‬
‫میشود‪:‬‬
‫الف‪ .‬عدد یک در ستون میانی اولی سطر قرار میگیرد‪.‬‬
‫ب‪ :‬بهطور مورب به سمت چپ و باال حرکت میکنیم‪.‬‬
‫ج‪ :‬اگر ای خانه پر باشد‪ ،‬یکخانه بهطرف پائی حرکت میکنیم و عدد بعدی را در آن مکان مینویسیم‪.‬‬
‫د‪ .‬اگر درحرکت بهصور مورب‪ ،‬از محدوده ماتری خارج شویم‪ ،‬باید به آخری عنصر در آن سطر یا ستون‬
‫برگردیم‪.‬‬
‫هی‪ .‬اگر در محدوده سطر و ستون از هر دو خارج شویم‪ ،‬یکخانه به سمت پائی حرکت میکنیم‪.‬‬
‫برنامهای که ماتری جادویی را تولید کرده و چاپ مینماید (ماتری ‪ 5×5‬زیر را در نظر بگیرد)‪:‬‬
‫‪15‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪24‬‬ ‫‪17‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫‪16‬‬ ‫‪14‬‬ ‫‪7‬‬ ‫‪5‬‬ ‫‪23‬‬
‫ماتریس‬ ‫‪matrix‬‬
‫‪22‬‬ ‫‪24‬‬ ‫‪13‬‬ ‫‪6‬‬ ‫‪4‬‬
‫تعداد سطر و ستون‬ ‫‪n‬‬ ‫‪main‬‬
‫‪3‬‬ ‫‪21‬‬ ‫‪19‬‬ ‫‪12‬‬ ‫‪14‬‬
‫شماره سطر و ستون‬ ‫‪j,i‬‬ ‫‪fill_matrix‬‬
‫‪9‬‬ ‫‪2‬‬ ‫‪25‬‬ ‫‪10‬‬ ‫‪11‬‬ ‫شماره سطر و ستون خانه بعدی‬ ‫‪j1 , i1‬‬
‫‪ 0‬تا شمارنده‬ ‫‪n‬‬
‫;‪using System‬‬
‫‪namespace p12‬‬ ‫شمارنده ‪ 0‬برای نمایش ماتریس‬ ‫‪j,i‬‬ ‫‪disp_matrix‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫‪static void fill_matrix(int[,] matrix, int‬‬ ‫)‪n‬‬
‫{‬
‫;‪int i, j, i1, j1‬‬
‫;‪n--‬‬
‫;‪i = 0; j = n / 2‬‬
‫;‪matrix[i, j] = 1‬‬
‫;)‪for (int m = 1; m < (n + 1) * (n + 1‬‬ ‫)‪m++‬‬
‫{‬
‫;‪i1 = i - 1‬‬
‫;‪j1 = j - 1‬‬
‫;)‪test_range(ref i1, ref j1, n‬‬
‫)‪if (matrix[i1, j1] != 0‬‬
‫{‬
‫;‪i1 = i + 1; j1 = j‬‬
‫;)‪test_range(ref i1, ref j1, n‬‬
‫}‬
‫;‪matrix[i1, j1] = m + 1‬‬
‫;‪i = i1; j = j1‬‬
‫}‬
‫}‬
‫‪static void test_range(ref int i1, ref int‬‬ ‫)‪j1, int n‬‬
‫{‬
‫;‪if (i1 > n) i1 = 0‬‬
‫;‪if (i1 < 0) i1 = n‬‬
‫;‪if (j1 > n) j1 = 0‬‬
‫;‪if (j1 < 0) j1 = n‬‬
‫}‬
‫‪static void disp_matrix(int[,] matrix, int‬‬ ‫)‪n‬‬
‫{‬
‫)‪for (int i = 0; i < n; i++‬‬
‫{‬
642 ‫فصل چهارم‬

for (int j = 0; j < n; j++)


if (matrix[i, j] < 10)
Console.Write(" {0}", matrix[i, j]);
else if (matrix[i, j] < 100)
Console.Write(" {0}", matrix[i, j]);
else Console.Write(" {0}", matrix[i, j]);
Console.WriteLine();
}
}
static void Main(string[] args)
{
int n;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
int[,] matrix = new int[n, n];
fill_matrix(matrix, n);
disp_matrix(matrix, n);
Console.ReadKey();
}
}
}

.)Strcat ‫ برنامهای که رشتهای را به انتهای رشته دیگر الحاق میکند (بدون استفاده از متد‬.13
:‫وظایف متدها‬
، ‫ سس‬.‫ رشته دوم را به انتهای رشته اول الحاق میکند‬strcat ‫ با فراخوانی متد‬،‫ دو رشته را خوانده‬:main ‫متد‬
.‫رشته اول را چاپ میکند‬
.‫ رشتهای را به انتهای رشته دیگر الحاق میکند‬:strcat ‫متد‬
using System; ‫هدف‬ ‫نام‬ ‫متد‬
namespace p13
{ ‫ اولین رشته‬str1 Main
class Program
{ ‫ دومین رشته‬str2
static string
strcat(string s1, string ‫شمارنده‬ i Strcat s2)
{ ‫شمارنده‬ j
return (s1 + s2);
}
static void Main(string[] args)
{
string str1, str2;
Console.Write("Enter string1:");
str1 = Console.ReadLine();
Console.Write("Enter string2:");
‫آرایهها و رشتهها‬ 622

str2 = Console.ReadLine();
str1=strcat(str1, str2);
Console.Write("Result is {0}", str1);
Console.ReadKey();
}
}
}

‫ به متدی ارسال میکند و متد آن را بهطور معکوس به خروجی‬،‫ برنامهای که رشتهای را از ورودی خوانده‬.14
.‫میبرد‬
:‫وظایف متدها‬
.‫ نمایش میدهد‬،‫ آن را معکوس کرده‬convert ‫ با فراخوانی متد‬،‫ رشتهای را خوانده‬:main ‫متد‬
.‫ ای متد معکوس رشته را برمیگرداند‬:convert ‫متد‬
using System; ‫هدف‬ ‫متغیر‬ ‫متد‬
namespace p14
{ ‫ رشته خواندهشده‬str main
class Program
{ ‫ معادل عددی رشته‬num
static string Convert(string s) ‫ شمارنده برنامه‬i convert
{
int len = s.Length; ‫ طول رشته‬len
char [] s1=new
char[len];
s.CopyTo(0,s1,0, len);
for(int i=0; i < len /2; i++)
{
char temp = s1[i];
s1[i] = s1[len - i - 1];
s1[len-i-1]=temp;
}
s = "";
for (int i = 0; i < len; i++)
{
Console.Write(s1[i]);
s = s + s1[i].ToString();

}
return s;
}
static void Main(string[] args)
{
string str1;
Console.Write("Enter string1:");
str1 = Console.ReadLine();
str1 = Convert (str1);
Console.Write("Result is {0}", str1);
Console.ReadKey();
}
}
‫‪622‬‬ ‫فصل چهارم‬

‫}‬

‫‪ .15‬برنامهای که رشته عددی را که حاوی نقطه اعشار است از ورودی خوانده‪ ،‬آن را به عدد اعشاری تبدیل‬
‫کند‪ .‬بهعنوانمثال‪ ،‬رشته ”‪ “12.342‬را به ‪ 12.342‬تبدیل نماید‪ .‬ای برنامه‪ ،‬متدی برای خواندن رشته‪ ،‬متدی برای‬
‫تبدیل و متدی برای نوشت عدد در خروجی دارد‪ .‬پارامترها از طریق فراخوانی با ارجاع به متدها ارسال میشوند‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬متغیرهای برنامه را تعریف کرده‪ ،‬متدها را فراخوانی میکند‪.‬‬
‫متد ‪ :getstr‬یکرشته را میخواند‪.‬‬
‫متد ‪ :str_to_float‬یکرشته عددی را به عدد اعشاری تبدیل میکند‪.‬‬
‫متد ‪ :print‬عدد اعشاری را چاپ میکند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫رشته خواندهشده‬ ‫‪str‬‬ ‫‪Main‬‬
‫معادل عددی رشته خواندهشده‬ ‫‪num‬‬
‫طول رشته‬ ‫‪len‬‬ ‫‪str_to_float‬‬
‫مکان وجود نقطه در رشته (شمارنده)‬ ‫‪i‬‬
‫قسمت صحیح رشته بعد از تبدیل به عدد‬ ‫‪digit1‬‬
‫قسمت اعشاری رشته بعد از تبدیل به عدد‬ ‫‪digit2‬‬
‫توانهایی از ‪ 01‬و ‪( 1.0‬برای تبدیل رشته به عدد)‬ ‫‪pow‬‬
‫شمارنده‬ ‫‪j‬‬
‫;‪using System‬‬
‫‪namespace p15‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void str_to_float(char[] s, ref double result‬‬
‫{‬
‫;‪int len, i, j‬‬
‫;‪double digit1 = 0.0, digit2 = 0.0, pow = 1.0‬‬
‫; )‪for (i = 0; s[i] != '.' && i<s.Length ; i++‬‬
‫)‪for (j = i - 1; j >= 0; j--‬‬
‫{‬
‫;‪digit1 += (s[j] - 48) * pow‬‬
‫;‪pow *= 10‬‬
‫}‬
‫;‪pow = 0.1‬‬
‫)‪for (j = i + 1; j < s.Length ; j++‬‬
‫{‬
‫;‪digit2 += (s[j] - 48) * pow‬‬
‫;‪pow *= 0.1‬‬
‫}‬
‫آرایهها و رشتهها‬ ‫‪626‬‬

‫;‪result = digit1 + digit2‬‬


‫}‬
‫)‪static void print(double result‬‬
‫{‬
‫;)‪Console.Write(" ***** result is : {0}", result‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪string str‬‬
‫;‪double num = 0‬‬
‫;)"‪Console.Write("Enter string1:‬‬
‫;)(‪str = Console.ReadLine‬‬
‫;] ‪char [] str1=new char [str.Length‬‬
‫;)‪str.CopyTo(0, str1, 0, str.Length‬‬
‫;)‪str_to_float(str1, ref num‬‬
‫;)‪print(num‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .16‬برنامهای که بازی دوز را شبیهسازی میکند‪ .‬در ای بازی یک ماتری ‪ 3×3‬داریم که دو بازیک ‪ 1‬و ‪ 2‬بیاهم‬
‫بازی میکنند که هر یک از ای بازیکنان سه مهرهدارند (هر سه مهره شماره همان بازیک را دارد)‪ .‬بازیکنی برنیده‬
‫است که بتواند سریعتر مهرههای خود را بهصور سطری یا ستونی و یا قطری ردیف کند‪.‬‬
‫‪2‬‬ ‫بهعنوانمثال‪ ،‬در ماتری زیر بازیک شماره ‪ 2‬برنده است‪:‬‬
‫‪2 1‬‬ ‫وظایف متدها‪:‬‬
‫‪2 1 1‬‬ ‫‪.‬‬ ‫کند‬ ‫می‬ ‫خالی‬ ‫را‬ ‫دوز‬ ‫ی‬ ‫باز‬ ‫های‬ ‫خانه‬ ‫‪:‬‬‫‪init_matrix‬‬ ‫متد‬
‫متد ‪ :get_player_move‬شماره خانهای را میخواند که بازیک میخواهد مهره را به‬
‫آن انتقال دهد‪ .‬سس ‪ ،‬مهره را به آن خانه منتقل میکند‪.‬‬
‫متد ‪ :get_remove_player‬مهرهای را از خانهای حذف‪ ،‬به خانه جدید منتقل میکند‪.‬‬
‫متد ‪ :disp_matrix‬ماتریسی را نمایش میدهد‪.‬‬
‫متد ‪ :check‬تعیی میکند که آیا بازیکنی برندهشده است یا خیر؟‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫خانههای بازی ماتریس‬ ‫‪matrix‬‬ ‫سراسری‬
‫تعیین میکند که بازی ادامه یابد یا بازیکنی برنده شد‬ ‫‪done‬‬ ‫‪Main‬‬
‫تعیین میکند که آیا بازیکن مهرههای خود را قرار دهد یا ابتدا مهره را بردارد و سپس قرار دهد‬ ‫‪rep‬‬
‫شماره سطر و ستونی که باید مهره قرار گیرد‬ ‫‪x, y‬‬ ‫‪get_player_move‬‬
‫شماره بازیکن‬ ‫‪m‬‬
‫شماره سطر و ستونی که باید مهره برداشته شود‬ ‫‪x, y‬‬ ‫‪get_remove_player‬‬
‫شماره بازیکن‬ ‫‪m‬‬
‫شمارندهها‬ ‫‪i, j‬‬ ‫‪Init_matrix‬‬
‫شماره سطر ماتریس‬ ‫‪i‬‬ ‫‪disp_matrix‬‬
623 ‫فصل چهارم‬

‫شماره سطر ماتریس‬ i Check


using System;
namespace p16
{
class Program
{
public static char[,] matrix = new char[3, 3];
public static char check()
{
for (int i = 0; i < 3; i++)
{
if (matrix[i, 0] == matrix[i, 1] && matrix[i, 0] ==
matrix[i, 2])
{
return matrix[i, 0];
}
}
for (int i = 0; i < 3; i++)
{
if (matrix[0, i] == matrix[1, i] && matrix[0, i] ==
matrix[2, i])
{
return matrix[0, i];
}
}
for (int i = 0; i < 3; i++)
{
if (matrix[0, 0] == matrix[1, 1] && matrix[1, 1] ==
matrix[2, 2])
{
return matrix[0, 0];
}
}
for (int i = 0; i < 3; i++)
{
if (matrix[0, 2] == matrix[1, 1] && matrix[1, 1] ==
matrix[2, 0])
{
return matrix[0, 2];
}
}
return ' ';
}
public static void init_matrix()
{
int i;
int j;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
matrix[i, j] = ' ';
}
}
}
public static void get_player_move(int m)
{
int x;
‫آرایهها و رشتهها‬ 624

int y;
Console.SetCursorPosition(0, 1);
Console.Write("Enter player ");
Console.Write(m);
Console.Write(" [X,Y]:");
string input = "";
input = Console.ReadLine();
string[] inputs = new string[2];
inputs= input.Split(' ');
x = int.Parse(inputs[0]);
y = int.Parse(inputs[1]);
bool test = (x > 3 || y > 3 || x < 0 || y < 0);
x--;
y--;
if (matrix[x, y] != ' ' || test != false)
{
Console.Write(" Invalid move ,try again ");
Console.Write("\n");
get_player_move(m);
}
else
{
if (m == 1)
{
matrix[x, y] = '1';
}
else
{
matrix[x, y] = '2';
}
}
}
public static void get_remove_player(int m)
{
int x;
int y;
Console.SetCursorPosition(0, m + 19);
Console.Write("Enter remove player");
Console.Write(m);
Console.Write(" [X,Y]:");
string input = "";
input = Console.ReadLine();
string[] inputs = new string[2];
inputs = input.Split(' ');
x = int.Parse(inputs[0]);
y = int.Parse(inputs[1]);
bool test = (x > 3 || y > 3 || x < 0 || y < 0);
x--;
y--;
if (matrix[x, y] != 48 + m || test != false)
{
Console.Write(" Invalid move ,try again ");
Console.Write("\n");
get_player_move(m);
}
else
{
matrix[x, y] = ' ';
}
622 ‫فصل چهارم‬

get_player_move(m);
}
public static void disp_matrix()
{
Console.SetCursorPosition(0, 5);
for (int i = 0; i < 3; i++)
{
Console.Write(" ");
Console.Write(matrix[i, 0]);
Console.Write(" | ");
Console.Write(matrix[i, 1]);
Console.Write(" | ");
Console.Write(matrix[i, 2]);
if (i != 2)
{
Console.Write("\n");
Console.Write("---|---|---");
Console.Write("\n");
}
}
Console.Write("\n");
}
static void Main(string[] args)
{
char done;
int rep = 0;
Console.Clear();
Console.Write("\n");
done = ' ';
init_matrix();
disp_matrix();
do
{
if (rep < 3)
{
get_player_move(1);
}
else
{
get_remove_player(1);
}
disp_matrix();
done = check();
if (done != (sbyte)' ')
{
break;
}
if (rep < 3)
{
get_player_move(2);
}
else
{
get_remove_player(2);
}
disp_matrix();
done = check();
rep++;
} while (done == ' ');
‫آرایهها و رشتهها‬ ‫‪622‬‬

‫)'‪if (done == '1‬‬


‫{‬
‫;)"!‪Console.Write("player1 won‬‬
‫;)"‪Console.Write("\n‬‬
‫}‬
‫‪else‬‬
‫{‬
‫;)"!!! ‪Console.Write("player2‬‬
‫;)"‪Console.Write("\n‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .17‬هر عدد زوج بزرگتر از ‪ 6‬برابر با مجموع دو عدد اول کوچکتر از خودش است‪ .‬برنامهای که چنید عیدد‬
‫زوج بزرگتر از ‪ 6‬را میخواند‪ .‬مجموع دو عدد اولی که برابر بیا اعیداد خوانیدهشیده باشید را پییداکرده چیاپ‬
‫مینماید (برنامه تا زمانی که کاربر بخواهد ادامه مییابد)‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :prim‬اعداد اول کوچکتر از عدد خواندهشده‪ ،‬را در آرایه قرار میدهد‪.‬‬
‫متد ‪ :find_two_numbers‬دو عدد اولی را پیدا میکند که مجموع آنها برابر با عدد خواندهشده باشد‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫عدد خواندهشده در هر مرحله‬ ‫‪n‬‬ ‫‪main‬‬
‫از کاربر میپرسد که آیا ادامه دهد یا خیر‬ ‫‪done‬‬
‫آرایه عدد اول‬ ‫‪p‬‬
‫شماره اولین و دومین اندیس عدد اول‬ ‫‪i, j‬‬
‫تعداد عدد اول‬ ‫‪tedad‬‬
‫شمارنده‬ ‫‪i‬‬ ‫‪prim‬‬
622 ‫فصل چهارم‬

‫شمارندههایی برای پیدا کردن دو عدد اول‬ i, j find_two_numbers

using System;
namespace p17
{
class Program
{
static int prim(int[] a, int tedad, int num)
{
int i;
for (i = 0; i < tedad; i++)
if (num % a[i] == 0)
return (0);
a[tedad] = num;
return (1);
}
static void find_two_numbers(int[] p, ref int n1, ref int
n2, int tedad, int n)
{
int i, j;
for (i = 0; i < tedad - 1; i++)
for (j = i + 1; j < tedad; j++)
if ((p[i] + p[j]) == n)
{
n1 = p[i];
n2 = p[j];
return;
}
}
static void Main(string[] args)
{
int[] p=new int[400];
int i = 0, j = 0, tedad = 0, n = 0;
char done = 'Y';
do
{
tedad = 0;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
if (n % 2 == 1)
{
Console.Write("Enter a even number\n");
continue;
}
for (i = 2; i <= n; i++)
if (prim(p, tedad, i) == 1) tedad++;
find_two_numbers(p, ref i, ref j, tedad - 1, n);
Console.WriteLine("{0} = {1} + {2}", n, i, j);
Console.Write("You want to continue(y/n):");
done = char.Parse(Console.ReadLine());
} while (done != 'n' && done != 'N');
}
}
‫آرایهها و رشتهها‬ ‫‪622‬‬

‫}‬

‫‪ .10‬برنامهای که رشته عددی را که حاوی نقطه اعشار است از ورودی خوانده‪ ،‬آن را به صورتی که گفته شد به‬
‫عدد اعشاری تبدیل میکند‪ .‬بهعنوانمثال‪ ،‬رشته ’‪ ‘1245.452‬را به عدد ‪ 452.1245‬تبدیل میکند‪ .‬برنامه‪ ،‬متدی‬
‫برای خواندن رشته‪ ،‬متدی برای تبدیل و متدی برای نوشت عدد در خروجی دارد‪ .‬پارامترها از طریق فراخوانی‬
‫با ارجاع به متدها ارسال میشوند‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬متغیرهای برنامه را تعریف میکند و سس رشته را خوانده‪ ،‬با روشی که گفته شد به عدد اعشاری‬
‫تبدیل کرده‪ ،‬چاپ مینماید‪.‬‬
‫متد ‪ :getstr‬رشته را میخواند‪.‬‬
‫متد ‪ :str_to_float‬رشته را بهصور معکوس به عدد اعشاری تبدیل میکند‪.‬‬
‫متد ‪ :print‬عدد اعشاری ایجادشده‪ ،‬را چاپ میکند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫رشته خواندهشده‬ ‫‪str‬‬ ‫‪main‬‬
‫عدد معادل رشته خواندهشده‬ ‫‪num‬‬
‫طول رشته‬ ‫‪len‬‬ ‫‪str_to_float‬‬
‫مکان وجود نقطه اعشار‬ ‫‪i‬‬
‫قسمت صحیح رشته بعد از تبدیل به عدد‬ ‫‪digit1‬‬
‫قسمت اعشاری رشته بعد از تبدیل به عدد‬ ‫‪digit2‬‬
‫توانهایی از ‪ 01‬و ‪ 1.0‬برای تبدیل رشته به عدد‬ ‫‪pow‬‬
‫شمارنده‬ ‫‪j‬‬

‫;‪using System‬‬
‫‪namespace p18‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫‪public static void str_to_float(string s,ref double‬‬
‫)‪result‬‬
‫{‬
622 ‫فصل چهارم‬

int len;
int i;
int j;
double digit1 = 0.0;
double digit2 = 0.0;
double pow;
len = s.Length;
for (i = 0; s[i] != '.' && i < len; i++)
{
; //i=strchr(s,'.');
}
pow = 0.1;
for (j = 0; j < i; j++)
{
digit2 += (s[j] - 48) * pow;
pow *= 0.1;
}
pow = 1.0;
for (j = len - 1; j > i; j--)
{
digit1 += (s[j] - 48) * pow;
pow *= 10.0;
}
result = digit1 + digit2;
}
static void Main(string[] args)
{
string str = "";
double num=0;
Console.Write("Enter a strig (a.b):");
str = Console.ReadLine();
str_to_float(str, ref num);
Console.Write("\n");
Console.Write(" ***** result is : ");
Console.Write(num);
Console.ReadKey();
}
}
}

.‫ برنامهای که از ای متد استفاده میکند‬، ‫ سس‬.)‫ متدی که طول رشته را برمیگرداند (با استفاده از اشارهگر‬.19
.‫ متدی برای محاسبه طول رشته و متدی برای چاپ طول رشته دارد‬،‫ متدی برای خواندن رشته‬،‫برنامه‬
:‫وظایف متدها‬
‫ طول آن را محاسبه و چاپ‬،‫ رشته را خوانده‬،‫ متغیرهای برنامه را تعریف میکند و با فراخوانی متدها‬:main ‫متد‬
.‫مینماید‬
.‫ رشتهای را میخواند‬:getstr ‫متد‬
.‫ طول رشتهای را برمیگرداند‬:strlen ‫متد‬
.‫ طول رشته را چاپ میکند‬:print ‫متد‬
‫آرایهها و رشتهها‬ 622

using System; ‫هدف‬ ‫متغیر‬ ‫متد‬


namespace p19
{ ‫رشته خواندهشده‬ str
class Program Main
{ ‫ طول رشته‬len
static int strLen(string
s) ‫شمارنده‬ i Strlen
{ ‫ پارامتر‬len Print
return s.Length;
}
static void print(int len)
{
Console.Write("Len is {0}", len);
}
static void Main(string[] args)
{
string str;
Console.Write("Enter string1:");
str = Console.ReadLine();
print(strLen(str));
Console.ReadKey();
}
}
}

.‫ برنامهای که از ای متد استفاده میکند‬، ‫ سس‬.‫ یک عدد را برمیگرداند‬n ‫ متدی که توان‬.24


:‫وظایف متد‬
‫ عدد اول را به توان‬pow ‫ با فراخوانی متد‬،‫ دو عدد را خوانده‬.‫ متغیرهای برنامه را تعریف میکند‬:main ‫متد‬
.‫ سس نتیجه را چاپ میکند‬،‫عدد دوم رسانده‬
.‫ برمیگرداند‬،‫ یک عدد را به توان عددی دیگر رسانده‬:pow ‫متد‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫پایه‬ base1 main
using System; ‫توان‬ power
namespace p20
{ ‫نتیجه‬ Result pow
class Program ‫شمارنده‬ I
{
public static double pow(ref float b, ref int n)
{
int i;
double result = 1.0;
if (n > 0)
{
for (i = 1; i <= n; i++)
{
result *= b;
}
}
else
{
622 ‫فصل چهارم‬

for (i = n; i < 0; i++)


{
result *= (float)1 / b;
}
}
return (result);
}
static void Main(string[] args)
{
float base1;
int power;
Console.Clear();
Console.Write("Enter base :");
base1 = float.Parse(Console.ReadLine());
Console.Write("Enter power :");
power = int.Parse(Console.ReadLine());
Console.Write(base1);
Console.Write(" ^ ");
Console.Write(power);
Console.Write("=");
Console.Write(pow(ref base1, ref power));
Console.ReadKey();
}
}
}

.‫ رشته دوم و سوم را به انتهای رشته اول متصل میکند‬،‫ برنامهای که سه رشته را خوانده‬.21
:‫وظایف متدها‬
‫ رشته دوم و سوم را به انتهای رشته اول متصل میکند و‬concat ‫ با فراخوانی‬،‫ سه رشته را خوانده‬:main ‫متد‬
.‫رشته اول را نمایش میدهد‬
.‫ رشته دوم و سوم را به رشته اول متصل میکند‬:concat ‫متد‬
‫هدف‬ ‫متغیر‬
using System; ‫اولین رشته‬ str1
namespace p21
{ ‫دومین رشته‬ str2
class Program ‫سومین رشته‬ str3
{
static string strCat(string s1, string s2, string s3)
{
return s1 + s2 + s3;
}
static void Main(string[] args)
{
string str1,str2, str3;
Console.Write("Enter string1:");
str1 = Console.ReadLine();
Console.Write("Enter string2:");
str2 = Console.ReadLine();
Console.Write("Enter string3:");
str3 = Console.ReadLine();
‫آرایهها و رشتهها‬ ‫‪626‬‬

‫;)‪str1 = strCat(str1, str2, str3‬‬


‫;)‪Console.WriteLine("String1 is {0}", str1‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .22‬برنامهای که رشتهای را خوانده‪ ،‬اعمال زیر را انجام میدهد‪:‬‬


‫الف‪ .‬کلیه حروف بزرگ رشته را به حروف کوچک تبدیل میکند‪.‬‬
‫ب‪ .‬کلیه ارقام رشته را شمارش میکند و مجموع ارقام موجود در رشته را چاپ میکند‪.‬‬
‫ج‪ :‬تعداد حروف رشته را شمارش میکند‪.‬‬
‫برنامه‪ ،‬برای هر یک از ای درخواستها متدی دارد و کلیه پارامترهای متد را با ارجاع ارسال مینماید‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬متغیرهای برنامه را تعریف میکند‪ .‬سس ‪ ،‬متدها را فراخوانی کرده‪ ،‬نتیجه را چاپ میکند‪.‬‬
‫متد ‪ :lower‬کلیه حروف بزرگ رشته را به حروف کوچک تبدیل میکند‪.‬‬
‫متد ‪ :countdigit‬کلیه ارقام موجود در رشته را میشمارد (پارامتر اول رشته و پارامتر دوم تعداد رقم است) و‬
‫مجموع ای ارقام را محاسبه میکند‪.‬‬
‫متد ‪ :countchar‬کلیه کاراکترهای الفبای رشته را میشمارد (پارامتر اول رشته و پارامتر دوم تعداد حروف الفبا‬
‫است)‪.‬‬
‫هدف‬ ‫متغیر‬
‫رشته خواندهشده‬ ‫‪Str‬‬
‫;‪using System‬‬ ‫مجموع ارقام‬ ‫‪Sum‬‬
‫‪namespace p22‬‬ ‫تعداد ارقام موجود در رشته‬ ‫‪Digit‬‬
‫{‬
‫‪class Program‬‬ ‫تعداد حروف موجود در رشته‬ ‫‪alchar‬‬
‫{‬
‫)‪static void countdigit(string s, ref int t, ref int s1‬‬
‫{‬
‫)‪foreach (char ch in s‬‬
‫{‬
‫) ‪if (char.IsDigit(ch) == true‬‬
‫{‬
‫;‪s1 += (int)ch - 48‬‬
‫;‪t++‬‬
‫}‬
‫}‬
‫}‬
‫)‪static void countchar(string s, ref int t‬‬
‫{‬
‫)‪foreach (char ch in s‬‬
‫{‬
‫;‪if (char.IsLower(ch)== true ) t++‬‬
‫}‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫‪623‬‬ ‫فصل چهارم‬

‫;‪string str‬‬
‫;‪int sum = 0, digit = 0, alchar = 0‬‬
‫;)"‪Console.Write("Enter a string:‬‬
‫;)(‪str = Console.ReadLine‬‬
‫;)(‪str= str.ToLower‬‬
‫;)‪countdigit(str, ref digit, ref sum‬‬
‫;)‪countchar(str, ref alchar‬‬
‫;)‪Console.WriteLine("String is :{0}", str‬‬
‫‪Console.WriteLine("Count digit is:{0}\t sum is:{0}",‬‬
‫;)‪digit, sum‬‬
‫‪Console.WriteLine("Count char('a'..'z') is:{0}",‬‬
‫;)‪alchar‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .23‬برنامهای که میزان میانگی بارش باران را در سال قبل میگیرد و سس میزان واقعی بارش باران را در ‪12‬‬
‫ماهگرفته‪ ،‬در آرایهای قرار میدهد (برای خواندن میزان واقعی بارش باران در ‪ 12‬ماه از یک متد استفاده میکند)‪.‬‬
‫سس ‪ ،‬با یک متد دیگر اختالف بارش باران در هرماه را با میانگی بارش باران در سال قبل محاسبه کرده‪ ،‬نمایش‬
‫میدهد‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬با یک پیام میانگی بارش باران در سال قبل را خوانده و با فراخوانی متد ‪ read‬بارش باران را در‬
‫هرماه میخواند‪ .‬سس با فراخوانی متد ‪ print‬اختالف بارش باران هرماه را با میانگی در سال قبل چاپ میکند‪.‬‬
‫متد ‪ :read‬بارش هرماه را خوانده در آرایهای به نام ‪ month‬قرار میدهد‪.‬‬
‫متد ‪ :print‬دو پارامتر به نامهای ‪( `month‬بارش باران در هرماه) ‪( aver‬میانگی ساالنه بارش سال قبل) را‬
‫گرفته‪ ،‬اختالف میانگی بارش سال قبل و بارش باران در هرماه را نمایش میدهد‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫آرایهای که بارش باران ‪ 01‬ماهه را نگهداری میکند‬ ‫‪month‬‬ ‫‪Main‬‬
‫میانگین بارش باران سال قبل‬ ‫‪aver‬‬
‫بارش باران در هرماه‬ ‫‪month‬‬ ‫‪read‬‬
‫شمارنده حلقه‬ ‫‪i‬‬
‫بارش باران در هرماه‬ ‫‪month‬‬ ‫‪print‬‬
‫;‪using System‬‬
‫‪namespace p23‬‬ ‫‪ ver‬میانگین بارش باران در سال قبل‬
‫{‬
‫‪class Program‬‬ ‫‪ i‬شمارنده هرماه‬
‫{‬
‫)‪static void read(float[] month‬‬
‫{‬
‫;‪int i‬‬
‫)‪for (i = 0; i < 12; i++‬‬
‫{‬
‫;)‪Console.Write("Enter raining for month {0}:", i + 1‬‬
‫;))(‪month[i] = Convert.ToSingle(Console.ReadLine‬‬
‫آرایهها و رشتهها‬ ‫‪624‬‬

‫}‬
‫}‬
‫)‪static void print(float[] month, float aver‬‬
‫{‬
‫)‪for (int i = 0; i < 12; i++‬‬
‫‪Console.WriteLine("Differnt for month {0} is {1}",‬‬
‫;)‪i + 1, month[i] - aver‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;]‪float[] month = new float[12‬‬
‫;‪float aver‬‬
‫;)"‪Console.Write("Enter average:‬‬
‫;))(‪aver = float.Parse(Console.ReadLine‬‬
‫;)‪read(month‬‬
‫;)‪print(month, aver‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .24‬برنامهای که ‪ 5‬عدد را از ورودی خوانده‪ ،‬در آرایهای به نام ‪ S‬قرار میدهد‪ .‬ابتدا میانگی مقادیر را محاسبه‬
‫میکند (با یک متد)‪ .‬سس ‪ ،‬با استفاده از فرمول زیر انحراف معیار را محاسبه کرده‪ ،‬چاپ مینماید (برای محاسبه‬
‫𝑵∑√‬
‫)𝒂‪𝒊=𝟏(𝑺𝒊−‬‬
‫𝟐‬

‫= انحراف معیار‬ ‫انحراف معیار نیز از یک متد استفاده میکند)‪:‬‬


‫𝑵‬
‫‪ a‬میانگی اعداد و ‪ N‬تعداد اعداد است‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :read‬پنج عدد را خوانده‪ ،‬در پارامتر ‪( num‬آرایهای با پنج عنصر) قرار میدهد‪.‬‬
‫متد ‪ :average‬میانگی پنج عدد را برمیگرداند که بهعنوان پارامتر ‪ num‬میپذیرد‪.‬‬
‫متد ‪ :var‬واریان پنج عدد )‪ (num‬با میانگی ‪ a‬را برمیگرداند‪.‬‬
‫متد ‪ :main‬متدها ‪ average ،read‬و ‪ var‬را فراخوانی مینماید‪.‬‬
622 ‫فصل چهارم‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫پنج عدد ورودی‬ num read
N ‫ تا‬1 ‫شمارنده‬ i
‫پنج عدد بهعنوان پارامتر‬ num average
‫شمارنده‬ i
‫مجموع اعداد‬ sum
‫پنج عدد بهعنوان پارامتر‬ num var
using System;
namespace p24 ‫میانگین پنج عدد‬ a
{ ‫مجموع اعداد‬ sum
class Program
{ ‫شمارنده‬ i
static int N = 5;
static void read(float[] num) ‫پنج عدد ورودی‬ num main
{
int i;
for (i = 0; i < N; i++)
{
Console.Write("Enter number {0}:", i + 1);
num[i] = float.Parse(Console.ReadLine());
}
}
static float average(float[] num)
{
float sum = 0;
for (int i = 0; i < N; i++)
sum += num[i];
return (sum / N);
}
static float var(float[] num, float a)
{
float sum = 0;
for (int i = 0; i < N; i++)
sum += (num[i] - a) * (num[i] - a);
return ((float)Math.Sqrt(sum / N));
}
static void Main(string[] args)
{
float[] num = new float[N];
read(num);
Console.Write("Var is {0}", var(num, average(num)));
Console.ReadKey();
}
}
}
‫آرایهها و رشتهها‬ ‫‪622‬‬

‫‪ .25‬برنامهای که رشتهای را از ورودی میخواند‪ .‬تمام کلما چهارحرفی آن را با کلمه ”‪ “Love‬جایگزی‬


‫میکند‪ .‬مثالً رشته ”‪ “hate you, you doer‬به رشته ‪ love you, you love‬تبدیل میگردد‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :len‬طول رشته را برمیگرداند‪.‬‬
‫متد ‪ :nextWord‬طول کلمه بعدی رشته ‪ s‬که اندی شروع کلمه ‪ index‬را برمیگرداند‪.‬‬
‫متد ‪ :replaceLove‬در رشته ‪ s‬از شروع اندی ‪ index‬چهار کاراکتر بعدی را ‪ love‬قرار میدهد‪.‬‬
‫متد ‪ :main‬رشته را خوانده‪ ،‬کلما چهارحرفی را پیداکرده‪ ،‬برای جایگزی کردن متد ‪ replaceLove‬را‬
‫فراخوانی میکند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫پارامتر(رشتهای که باید طول آن برگردانده شود)‬ ‫‪s‬‬ ‫‪len‬‬
‫طول رشته‬ ‫‪i‬‬
‫رشته‬ ‫‪s‬‬ ‫‪nextWord‬‬
‫مکان شروع رشته که باید کلمه بعدی آن تعیین گردد‬ ‫‪index‬‬
‫طول کلمه فعلی‬ ‫‪i‬‬
‫رشته مربوطه‬ ‫‪s‬‬ ‫‪replaceLove‬‬
‫اندیس شروع جایگزین رشته‬ ‫‪index‬‬
‫رشته ‪Love‬‬ ‫‪love‬‬
‫شمارنده‬ ‫‪i‬‬
‫رشته ورودی‬ ‫‪s‬‬ ‫‪main‬‬
‫شمارنده کاراکتر فعلی رشته‬ ‫‪i‬‬
‫طول رشته‬ ‫‪wordLen‬‬

‫;‪using System‬‬
‫‪namespace p25‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static int len(char[] s‬‬
‫{‬
‫;‪return s.Length‬‬
‫}‬
‫)‪static int nextWord(char[] s, int index‬‬
‫{‬
‫;‪int i = 0‬‬
‫)‪for (i = 0; index + i < s.Length; i++‬‬
‫'‪if (s[i + index] == '.' || s[i + index] == ',‬‬
‫|| ' ' == ]‪|| s[i + index‬‬
‫‪622‬‬ ‫فصل چهارم‬

‫)'!' == ]‪s[i + index‬‬ ‫;‪break‬‬


‫;)‪return (i‬‬
‫}‬
‫)‪static void replaceLove(ref char[] s, int index‬‬
‫{‬
‫;} '‪char[] love = new char[4] { 'l', 'o', 'v', 'e‬‬
‫)‪for (int i = 0; i < 4; i++‬‬
‫;]‪s[i + index] = love[i‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int i = 0‬‬
‫;‪int wordLen‬‬
‫;)"‪Console.Write("Enter a string:‬‬
‫;)(‪string s1 = Console.ReadLine‬‬
‫;]‪char[] s = new char[s1.Length‬‬
‫;)‪s1.CopyTo(0, s, 0, s1.Length‬‬
‫;)‪int l = len(s‬‬
‫)‪while (i < l‬‬
‫{‬
‫;)‪wordLen = nextWord(s, i‬‬
‫;)‪if (wordLen == 4) replaceLove(ref s, i‬‬
‫;‪i += wordLen + 1‬‬
‫}‬
‫;)" ‪Console.Write("Result is‬‬
‫;)‪foreach (char ch in s) Console.Write(ch‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .26‬در یک دوره مسابقا ورزشی تعدادی تیم (حداکثر ‪ 144‬تیم) شرکت کردهاند‪ ،‬میخواهیم در انتهای مسابقه‬
‫گزارشی از مجموع امتیازا هر تیم را چاپ کنیم‪ .‬برنامهای که برای هر مسابقه در یک خط ورودی شامل آیتمهای‬
‫برنده و امتیاز کسبشده را میخواند و نتیجه را نمایش میدهد‪ .‬اگر بهجای تیم برنده ‪ -1‬وارد شد‪ ،‬برنامه خاتمه‬
‫مییابد‪.‬‬
‫ای برنامه‪ ،‬ابتدا آرایهای با ‪ 144‬عنصر تعریف می کند که هر عنصر آن مجموع امتیاز تیم مربوطیه اسیت‪ .‬سیس بیا‬
‫استفاده از یک حلقه شماره تیم و امتیاز را خوانده‪ ،‬امتیاز خواندهشده را با امتیاز تیم )]‪ (scoreTeam [team-1‬جمیع‬
‫می نماید (اگر کاربر شماره تیم را ‪ -1‬وارد کند‪ .‬از حلقه خارج میشود)‪ .‬در پایان‪ ،‬امتیاز تیمهای مختلیف را بیا حلقیه‬
‫‪ for‬نمایش میدهد‪.‬‬
‫هدف‬ ‫متغیر‬
‫;‪using System‬‬
‫‪namespace p26‬‬ ‫آرایهای است که مجموع امتیاز تیم را نگهداری میکند‪.‬‬ ‫‪scoreTeam‬‬
‫{‬
‫‪class Program‬‬ ‫شماره تیم‬ ‫‪team‬‬
‫{‬ ‫امتیاز تیم‬ ‫‪score‬‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;]‪int[] scoreTeam = new int[100‬‬
‫;‪int team, score‬‬
‫;‪for (int i = 0; i < 100; i++) scoreTeam[i] = 0‬‬
‫آرایهها و رشتهها‬ 622

while (1 == 1)
{
Console.Write("Enter team number:");
team = int.Parse(Console.ReadLine());
if (team == -1) break;
Console.Write("Enter team score:");
score = int.Parse(Console.ReadLine());
scoreTeam[team - 1] += score;
}
for (int i = 0; i < 100; i++)
if (scoreTeam[i] != 0)
Console.WriteLine("Score for team {0}:{1}",
(i + 1), scoreTeam[i]);
Console.ReadKey();
}
}
}

ACCURENCE ،‫ بهعنوانمثال‬.‫ تعداد تکرار هر حرف را نمایش میدهد‬،‫ برنامهای که یکرشته را خوانده‬.27
.‫ سه بار تکرار شده است‬C ‫را در نظر بگیرید که حرف‬
‫ کاراکترهای رشته خواندهشیده را پیمیایش‬for ‫ با استفاده از یک حلقه‬، ‫ سس‬.‫ رشته را میخواند‬،‫ای برنامه ابتدا‬
.‫ یک واحد به عنصر مربوط بیه آن کیاراکتر اضیافه مییکنید‬،‫ باشد‬z ‫ تا‬a ‫ یا‬Z ‫ تا‬A ‫ چنانچه رشته بی حروف‬.‫مینماید‬
‫ را‬،‫ باشید‬4 ‫ بزرگتیر از‬،‫ در پایان تعداد تکرار هر کاراکتر اگر‬.(ch [(int) S[i] – 65] ‫ یا‬Ch([(int)(S[i] – 32-65])
.‫نمایش میدهد‬
using System; ‫هدف‬ ‫متغیر‬
namespace p27
{ ‫شده‬ ‫خوانده‬ ‫رشته‬ s
class Program ‫ تعداد هر کاراکتر‬ch
{
static void Main(string[] args) ‫ام رشته‬i ‫ کاراکتر‬i
{
string s;
int[] ch = new int[26];
for (int i = 0; i < 26; i++) ch[i] = 0;
Console.Write("Enter a string:");
s = Console.ReadLine();
s = s.ToUpper();
foreach (char ch1 in s)
{
if (char.IsUpper(ch1))
ch[(int)ch1 - 65]++;
}
for (int i = 0; i < 26; i++)
622 ‫فصل چهارم‬

if (ch[i] > 0)
Console.WriteLine("Accurence {0} is {1}",
(char)(i + 65), ch[i]);
Console.ReadLine();
}
}
}

‫است که از دو‬ ‫است یا خیر؟ رشتهای متجان‬ ‫ برنامهای که یکرشته را خوانده تشخیص میدهد آیا متجان‬.20
.‫طرف یکی خوانده شود‬
:‫وظایف متدها‬
، ‫ سس‬.‫ متجان است یا خیر‬،‫ تشخیص میدهد‬isHomogeneous ‫ با فراخوانی متد‬،‫ رشته خوانده‬:main ‫متد‬
.‫پیام مناسب را چاپ میکند‬
.‫ برمیگرداند‬،‫ را حساب کرده‬s ‫ طول رشته‬:length ‫متد‬
.‫ را برمیگرداند‬4 ‫ وگرنه عدد‬،1 ‫ عدد‬،‫ اگر رشته متجان باشد‬:isHomogeneous ‫متد‬
‫هدف‬ ‫متغیر‬ ‫متد‬
using System;
namespace p28 ‫ رشته ورودی‬s main
{
class Program ‫ پارامتر ورودی‬s lenght
{
static int lenght(char[] s)
‫ طول رشته‬i
{ ‫ پارامتر ورودی‬s Ishomoge
return s.Length; neoue
} ‫ شمارنده‬i
static int isHomogeneous(char[] s)
{
int i;
int len = lenght(s);
for (i = 0; i < len / 2; i++)
if (s[i] != s[len - i - 1]) return 0;
return 1;
}
static void Main(string[] args)
{
string s1;
Console.Write("Enter a string:");
s1 = Console.ReadLine();
char[] s = new char[s1.Length];
s1.CopyTo(0, s, 0, s1.Length);
if (isHomogeneous(s) == 1)
Console.Write("String is Homogeneous");
else
‫آرایهها و رشتهها‬ ‫‪622‬‬

‫;)"‪Console.Write("String is not Homogeneous‬‬


‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .29‬برنامهای که حداکثر ‪ 14‬عدد را از ورودی خوانده‪ ،‬میگوید هر عدد چند بار تکرار شده است‪.‬‬
‫بهعنوانمثال‪ ،‬اگر ورودی بهصور زیر باشد‪:‬‬
‫‪70 100 143 100‬‬ ‫‪52 143‬‬ ‫‪72 100 143 70‬‬
‫خروجی زیر را چاپ میکند‪:‬‬
‫‪143 OCCURS 3 TIMES, AT POSITIONS 3 6 9‬‬
‫‪70‬‬ ‫‪OCCURS‬‬ ‫‪2 TIMES, AT POSITIONS 1 10‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬متغیرها را تعریف کرده‪ ،‬عددی را میخواند‪ .‬اگر عیدد در آراییه موجیود نباشید‪ ،‬آن را در آخیری‬
‫عنصر آرایه قرار میدهد و تعداد تکرار آنکه صفر میباشد‪ ،‬یک واحد اضافه مینماید‪ .‬ولی اگر عدد در آرایه موجود‬
‫باشد‪ ،‬تعداد تکرار مکانی که آن عدد وجود دارد را یک واحد اضافه کرده‪ ،‬آن عدد را به آخری عنصر اضافه میکند‪.‬‬
‫در پایان‪ ،‬متد ‪ print‬را فراخوانی میکند تا اطالعا را چاپ کند‪.‬‬
‫متد ‪ :find‬تشخیص میدهد که آیا عددی در لیست واردشده وجود دارد یا خیر? اگر موجود باشد‪ ،‬مکان آن را‬
‫برمیگرداند‪ ،‬وگرنه ‪ -1‬را برگشت خواهد داد‪.‬‬
‫متد ‪ :print‬عدد و تعداد تکرار عدد را چاپ میکند‪ .‬اگر تعداد تکرار بزرگتر از یک باشد‪ ،‬حلقه تکرار دوم‪،‬‬
‫مکانهای تکرار عدد را چاپ خواهد کرد‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫آرایهای که ‪ 01‬عدد خواندهشده را نگهداری میکند‬ ‫‪num‬‬ ‫‪main‬‬
‫تعداد تکرار اعداد خواندهشده است‬ ‫‪count‬‬
‫شمارنده‬ ‫‪i‬‬
‫شماره آخرین عنصر‬ ‫‪last‬‬
‫عدد خواندهشده فعلی‬ ‫‪a‬‬
‫آرایهای که اعداد خواندهشده را نگهداری میکند‪.‬‬ ‫‪num‬‬ ‫‪find‬‬
‫عددی که باید پیدا شود‪.‬‬ ‫‪a‬‬
‫اندیس آخرین عدد‬ ‫‪last‬‬
‫شمارنده‬ ‫‪i‬‬
‫آرایهای از اعداد خواندهشده‬ ‫‪num‬‬ ‫‪print‬‬
‫تعداد تکرار هر عدد‬ ‫‪count‬‬
‫تعداد اعداد خواندهشده‬ ‫‪last‬‬
‫شمارنده‬ ‫‪i‬‬
‫عدد فعلی که باید مکانهای تکرار آن چاپ شود‬ ‫‪a‬‬
622 ‫فصل چهارم‬

using System;
namespace p29
{
class Program
{
static int find(int[] num, int a, int last)
{
int i;
for (i = 0; i < last; i++)
if (num[i] == a) return i;
return -1;
}
static void print(int[] num, int[] count, int last)
{
int i;
for (i = 0; i < last; i++)
{
if (count[i] > 0)
{
Console.Write("{0} Occurs {1} Time(s) At
positions {2}", num[i], count[i], (i + 1));
int a = num[i];
for (int j = i + 1; j < last; j++)
if (num[j] == a)
Console.Write(" , {0}", (j + 1));
Console.WriteLine();
}
}
}
static void Main(string[] args)
{
int[] num = new int[10];
int[] count=new int[10] {0,0,0, 0, 0, 0, 0, 0, 0, 0 };
int i, last = 0, a;
for (i = 0; i < 10; i++)
{
Console.Write("Enter number {0}:", i + 1);
a = int.Parse(Console.ReadLine()); ;
int position = find(num, a, last);
if (position != -1)
{
count[position]++;
num[last++] = a;
}
else
{
count[last]++;
num[last++] = a;
}
}
print(num, count, last);
Console.ReadKey();
}
}
}
‫آرایهها و رشتهها‬ ‫‪626‬‬

‫‪ .34‬برنامهای ماتری [‪ A]3×4‬را از ورودی میخواند و ترانهاده آن را در ‪ B‬ذخیره میکند‪ .‬در ترانهاده باید‬
‫‪Bi,j=Aj,i‬‬ ‫برای هر ‪ i , j‬رابطه مقابل برقرار باشد‪:‬‬
‫ای برنامه‪ ،‬ابتدا متغیرهای موردنیاز را تعریف کرده‪ ،‬حلقه تودرتو اول‪ ،‬عناصر آرایه را میخواند‪ .‬حلقه تودرتو دوم‬
‫ترانهاده ماتری را محاسبه کرده‪ ،‬در آرایه ‪ b‬قرار میدهد و حلقه تودرتو سوم‪ ،‬ترانهاده ماتری را نمایش میدهد‪.‬‬
‫;‪using System‬‬ ‫هدف‬ ‫متغیر‬
‫‪namespace p30‬‬
‫{‬ ‫ماتریس اصلی‬ ‫‪a‬‬
‫‪class Program‬‬ ‫‪b‬‬
‫{‬ ‫ماتریس ترانهاده‬
‫;‪static int row = 3‬‬ ‫اندیس سطر‬ ‫‪i‬‬
‫;‪static int col = 4‬‬
‫)‪static void Main(string[] args‬‬ ‫اندیس ستون‬ ‫‪j‬‬
‫{‬
‫;]‪int[,] a = new int[row, col‬‬
‫;]‪int[,] b = new int[col, row‬‬
‫;‪int i, j‬‬
‫)‪for (i = 0; i < row; i++‬‬
‫{‬
‫‪Console.Write("Enter {0} number for row {1}:",‬‬
‫;)‪col, i + 1‬‬
‫;)' '(‪string[] s = Console.ReadLine().Split‬‬
‫)‪for (j = 0; j < col; j++‬‬
‫;)]‪a[i, j] = int.Parse(s[j‬‬
‫}‬
‫)‪for (i = 0; i < row; i++‬‬
‫)‪for (j = 0; j < col; j++‬‬
‫;]‪b[j, i] = a[i, j‬‬
‫)‪for (i = 0; i < col; i++‬‬
‫{‬
‫;)(‪Console.WriteLine‬‬
‫)‪for (j = 0; j < row; j++‬‬
‫}‪Console.Write("{0‬‬ ‫;)]‪", b[i, j‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫‪623‬‬ ‫فصل چهارم‬

‫‪ .31‬برنامهای که انداخت دو تاس را شبیهسازی مینماید‪ .‬ای برنامه برای انداخت تاسها از متد ‪ rand‬استفاده‬
‫میکند که عدد بی ‪ 1‬تا ‪ 6‬را تولید مینماید‪ .‬سس مجموع ای دو مقدار محاسبه میگردد‪ .‬ازآنجاییکه تاسها‬
‫مقادیر بی ‪ 1‬تا ‪ 6‬را نشان میدهند‪ ،‬پ مجموع ای دو مقدار بی ‪ 2‬تا ‪ 12‬است که مجموع ‪ ،7‬بیشتری دفعا و‬
‫مجموع ‪ 12‬کمتری دفعا پیش میآیند‪ .‬جدول زیر ترکیبا ممک برای ای دو تاس را نشان میدهد‪ .‬ای‬
‫برنامه‪ 36444 ،‬بار تاس میریزد و با استفاده از یک آرایه‪ ،‬تکبعدی تعداد دفعاتی را که هر یک از ای مجموعههای‬
‫ممک پیش میآیند‪ ،‬را ثبت میکند و سس تحقیق میکند که آیا تعداد مجموعههای حاصل معقول است (مثالً به‬
‫شش طریق‪ ،‬مجموع ‪ 7‬حاصل میشود‪ .‬بنابرای تقریباً ‪ 1 / 6‬همه پیشامدها باید ‪ 7‬باشد)‪.‬‬

‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬


‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬
‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬
‫‪3‬‬
‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬
‫‪4‬‬
‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪11‬‬
‫‪5‬‬
‫‪6‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪11‬‬ ‫‪11‬‬
‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪11‬‬ ‫‪11‬‬ ‫‪12‬‬
‫هدف‬ ‫متغیر‬
‫شماره پرتاب تاس ‪0‬‬ ‫‪tas1‬‬
‫شماره پرتاب تاس ‪1‬‬ ‫‪tas2‬‬
‫تعداد مجموعههای پرتابهای تولیدشده از پرتابهای تاس ‪ 0‬و تاس ‪1‬‬ ‫‪tas‬‬
‫تعداد مجموع پرتابهای که باید بعد از ‪ 30111‬بار ایجاد شود‪.‬‬ ‫‪count‬‬
‫شمارنده از ‪ 0‬تا ‪30111‬‬ ‫‪i‬‬
‫;‪using System‬‬
‫‪namespace p31‬‬ ‫‪ j‬شمارنده از ‪ 1‬تا ‪ 01‬برای چاپ مقادیر‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫‪int[] tas = new int[13] { 0, 0, 0, 0, 0, 0, 0, 0, 0,‬‬
‫;} ‪0, 0, 0, 0‬‬
‫‪int[] count = new int[13] { 0, 0, 1000, 2000, 3000,‬‬
‫;} ‪4000, 5000, 6000, 5000, 4000, 3000, 2000, 1000‬‬
‫;‪int tas1, tas2‬‬
‫;‪int i = 1‬‬
‫;)(‪Random r = new Random‬‬
‫)‪while (i <= 36000‬‬
‫{‬
‫آرایهها و رشتهها‬ ‫‪624‬‬

‫;)‪tas1 = r.Next(7‬‬
‫;)‪tas2 = r.Next(7‬‬
‫;‪tas[tas1 + tas2]++‬‬
‫;‪i++‬‬
‫}‬
‫;)"‪Console.WriteLine("j\tReal\tRandom\tDiffernt‬‬
‫;)"=======‪Console.WriteLine("==\t====\t=====\t‬‬
‫)‪for (int j = 2; j <= 12; j++‬‬
‫{‬
‫}‪Console.WriteLine("{0}\t{1‬‬ ‫‪\t{2}\t{3}", j,‬‬
‫;)]‪count[j], tas[j], count[j] - tas[j‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .32‬در هر سطر ورودی برای هر کاال دو عدد وجود دارد‪ .‬عدد اول شماره کاال و عدد دوم موجودی آن در‬
‫انبار است‪.‬‬
‫الف‪ .‬برنامهای که ای اطالعا را میخواند و در یک آرایه ذخیره میکند‪ .‬انتهای اطالعا با دو عدد ‪-1‬‬
‫مشخصشده است‪.‬‬
‫ب‪ :‬پ از ورود اطالعا اولیه تعدادی ورودی دیگر وجود دارد‪ .‬ای ورودیها عبار اند از‪ :‬شماره کاال‪ ،‬تعداد و‬
‫کاراکتری که مشخصکننده ای است که تعداد ورودی سفارش (کاراکتر ‪ s‬یا ‪ ) S‬یا خرید (کاراکتر ‪ p‬یا ‪ )P‬است‪.‬‬
‫برنامهای که اطالعا را خوانده‪ ،‬مقدار خروجی انبار هر کاال را نمایش میدهد‪ .‬اگر سفارش بیش از موجودی انبار‬
‫باشد‪ ،‬آن را انجام نمیدهد و پیام مناسبی چاپ میکند‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬متغیرهای برنامه را تعریف میکند‪ .‬سس متدها ‪ read1 ،read‬و ‪ print‬را فراخوانی میکند‪.‬‬
‫متد ‪ :read‬کد چند کاال و تعداد موجودی آنها را میخواند و در آرایه ‪ a‬قرار میدهد و تعداد کاالهای‬
‫خواندهشده را برمیگرداند‪.‬‬
‫متد ‪ :findNumber‬یک شماره‪ ،‬آرایه کاالها و تعداد عناصر آرایه را گرفته‪ ،‬تعیی میکند که کد کیاال در آراییه وجیود دارد ییا‬
‫خیر؟‬
‫متد ‪ :read1‬کد کاال‪ ،‬تعداد سفارش و نوع سفارش را در یک حلقه تکرار دریافت میکند و بر اساس نوع سفارش‪ ،‬تعداد سفارش را به‬
‫بعد ردیف کد کاال‪ ،‬اضافه یا کم میکند‪.‬‬
‫کاالها را چاپ میکند‪.‬‬ ‫متد ‪ :print‬اطالعا‬

‫هدف‬ ‫نام‬ ‫متد‬


‫‪622‬‬ ‫فصل چهارم‬

‫آرایه دوبعدی که بعد اول آن کد کاال و بعد دوم آن تعداد کاال است‪.‬‬ ‫‪a‬‬ ‫‪main‬‬
‫تعداد خواندهشده از ورودی‬ ‫‪tedad‬‬
‫عدد خواندهشده‬ ‫‪number‬‬ ‫‪read‬‬
‫تعداد عناصر آرایه‬ ‫‪cash‬‬
‫آرایه دوبعدی که کاالها را بهعنوان پارامتر دریافت میکند‪.‬‬ ‫‪a‬‬
‫تعداد عناصر آرایه‬ ‫‪tedad‬‬
‫آرایه دوبعدی بهعنوان پارامتر از نوع ارجاع‬ ‫‪a‬‬ ‫‪findnumber‬‬
‫عدد خواندهشده‬ ‫‪number‬‬
‫آرایه دوبعدی که کاالها را بهعنوان پارامتر دریافت میکند‪.‬‬ ‫‪a‬‬
‫تعداد عناصر آرایه‬ ‫‪tedad‬‬
‫شمارنده‬ ‫‪i‬‬ ‫‪read1‬‬
‫نوع سفارش (خرید یا فروش)‬ ‫‪typeorder‬‬
‫شماره کاالی مورد سفارش‬ ‫‪number‬‬
‫مکان کاالی به شماره ‪ number‬در آرایه ‪a‬‬ ‫‪locate‬‬
‫آرایه که کد کاالها را نگهداری میکند‪.‬‬ ‫‪a‬‬
‫شمارهای که باید در آرایه ‪ a‬جستجو گردد‬ ‫‪number‬‬
‫تعداد کاالهای موجود در آرایه ‪a‬‬ ‫‪tedad‬‬
‫شمارنده از ‪ 0‬تا تعداد کاالهای آرایه‬ ‫‪i‬‬
‫کاالهای موجود به همراه تعداد آنها‬ ‫‪a‬‬ ‫‪print‬‬
‫تعداد کاال‬ ‫‪tedad‬‬
‫شمارنده از ‪ 1‬تا تعداد کاالهای موجود‬ ‫‪i‬‬

‫;‪using System‬‬
‫‪namespace p32‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static int read(int[,] a‬‬
‫{‬
‫;‪int number, cash, tedad = 0‬‬
‫)‪while (1 == 1‬‬
‫{‬
‫;)"‪Console.Write("Enter number:‬‬
‫;))(‪number = int.Parse(Console.ReadLine‬‬
‫;‪if (number == -1) break‬‬
‫;)"‪Console.Write("Enter cash:‬‬
‫;))(‪cash = int.Parse(Console.ReadLine‬‬
‫;‪a[tedad, 0] = number‬‬
‫;‪a[tedad++, 1] = cash‬‬
‫}‬
‫;‪return tedad‬‬
‫}‬
‫)‪static int findNumber(int[,] a, int number, int tedad‬‬
‫{‬
‫آرایهها و رشتهها‬ 622

int i;
for (i = 0; i < tedad; i++)
if (a[i, 0] == number) return i;
return -1;
}
static void print(int[,] a, int tedad)
{
int i;
Console.WriteLine("number Cash ");
Console.WriteLine("\n======= ======");
for (i = 0; i < tedad; i++)
Console.WriteLine(" {0} {1}",a[i,0],a[i,1]);
}
static void read1(int[,] a, int tedad)
{
int number, order, locate;
char typeOrder;
while (1 == 1)
{
Console.Write("Enter number:");
number = int.Parse(Console.ReadLine());
if (number == -1) break;
Console.Write("Enter order:");
order = int.Parse(Console.ReadLine());
Console.Write("Enter typeOrder:");
typeOrder = char.Parse(Console.ReadLine());
switch (typeOrder)
{
case 'p':
case 'P':
locate = findNumber(a, number, tedad);
if (locate == -1)
Console.Write("Number not found\n");
else
a[locate, 1] += order;
break;
case 's':
case 'S':
locate = findNumber(a, number, tedad);
if (locate == -1)
Console.Write("\nNumber not found");
else if (a[locate, 1] >= order)
a[locate, 1] -= order;
else
Console.Write("\ncash is less then order");
break;
default:
Console.Write("typeOrder not found\n");
break;
}
}
}
static void Main(string[] args)
{
int[,] a = new int[100, 2];
int tedad;
tedad = read(a);
read1(a, tedad);
print(a, tedad);
‫‪622‬‬ ‫فصل چهارم‬

‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .33‬برنامهای که تعدادی کلمه را از ورودی خوانده‪ ،‬تعداد کلما ‪ 1‬تا ‪ 5‬کاراکتری‪ 6 ،‬تا ‪ 12‬کاراکتری و بیشتر‬
‫از ‪ 12‬کاراکتر را نمایش میدهد (تعداد کلما را از ورودی میخواند)‪.‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬متغیرهای برنامه را تعریف میکند رشته را خوانده و با فراخوانی متد ‪ ،split‬کلما رشته را جدا‬
‫مینماید و در متغیر ‪ s1‬قرار میدهد‪ .‬در ادامه‪ ،‬طول هر یک از کلما را با استفاده از حلقه محاسبه کرده‪ ،‬متغیر‬
‫مربوط به تعداد کلما را اضافه میکند‪ .‬در پایان‪ ،‬تعداد تکرار کلما بی ‪ 1‬تا ‪ 5‬حرف‪ ،‬بی ‪ 6‬تا ‪ 12‬حرف و بیشتر از‬
‫‪ 12‬حرف را چاپ میکند‪.‬‬
‫متد ‪ :lenght‬طول رشته را برمیگرداند‪.‬‬
‫متد ‪ :split‬کلما رشته را جدا کرده‪ ،‬در آرایه ‪ s1‬قرار میدهد‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫رشته خواندهشده‬ ‫‪s‬‬
‫کلمات رشته خواندهشده‬ ‫‪s1‬‬
‫شمارنده‬ ‫‪i‬‬
‫تعداد کلمات رشته خواندهشده‬ ‫‪word‬‬ ‫‪main‬‬
‫طول کلمات‬ ‫‪len‬‬
‫تعداد کلمات ‪ 0‬تا ‪ 5‬کاراکتری‬ ‫‪count1_5‬‬
‫تعداد کلمات ‪ 0‬تا ‪ 01‬کاراکتری‬ ‫‪count6_12‬‬
‫تعداد کلمات باالی ‪ 01‬کاراکتری‬ ‫_‪count12‬‬
‫رشتهای بهعنوان پارامتر که باید طول آن محاسبه شود‬ ‫‪s‬‬ ‫‪lenght‬‬
‫طول رشته‬ ‫‪i‬‬
‫رشتهای بهعنوان پارامتر که باید کلمات آن جدا شود‬ ‫‪s‬‬ ‫‪split‬‬
‫کلمات جداشده در این آرایه قرار میگیرد‬ ‫‪s1‬‬
‫آرایهها و رشتهها‬ ‫‪622‬‬

‫شمارندهای برای پیمایش رشته بهصورت کاراکتر به‬ ‫‪i‬‬


‫کاراکتر‬
‫تعداد کلمات‬ ‫‪word‬‬
‫شمارندهای برای پیمایش هر کلمه‬ ‫‪k‬‬
‫‪using‬‬
‫‪:‬‬ ‫;‪System‬‬
‫‪namespace p33‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪string s‬‬
‫;)"‪Console.Write("Enter a string:‬‬
‫;)(‪s = Console.ReadLine‬‬
‫;]‪string[] s1 = new string[s.Split(' ').Length‬‬
‫;)' '(‪s1 = s.Split‬‬
‫;‪int word = s1.Length‬‬
‫;‪int count1_5 = 0, count6_12 = 0, count12_ = 0‬‬
‫)‪for (int i = 0; i < word; i++‬‬
‫{‬
‫;)‪int len = (s1[i].Length‬‬
‫)‪if (len <= 5‬‬
‫;‪++count1_5‬‬
‫)‪else if (len <= 12‬‬
‫;‪++count6_12‬‬
‫‪else‬‬
‫;_‪++count12‬‬
‫}‬
‫‪Console.WriteLine("Count of word between 1 to 5 char‬‬
‫;)‪is {0}", count1_5‬‬
‫‪Console.WriteLine("Count of word between 5 to 12 char‬‬
‫;)‪is {0}", count6_12‬‬
‫‪Console.Write("\nCount of word more then 12 char is‬‬
‫;)_‪{0}", count12‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ p‬را محاسبه‬ ‫‪ .34‬برنامهای که چندجملهای زیر را در یک آرایه نمایش میدهد (سس ‪ x ،‬را میخواند) و عبار‬
‫کرده‪ ،‬چاپ مینماید (‪ n‬حداکثر ‪ 144‬باشد)‪p = anxn + an – 1xn-1 + …+a1x1 + a0 .‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬متغیرهای برنامه را تعریف کرده‪ x ،‬و ‪ n‬را میخواند و با فراخوانی متد ‪ read‬ضیرایب چندجملیهای‬
‫را خوانده‪ ،‬در ‪ a‬قرار میدهد‪ .‬سس ‪ ،‬مقدار ‪ sum‬را محاسبه کرده‪ ،‬چیاپ میینمایید و در پاییان‪ ،‬چندجملیهای را بیا‬
‫فراخوانی متد ‪ print‬نمایش میدهد‪.‬‬
‫متد ‪ :read‬مکان و ضرایب چندجملهای را خوانده‪ ،‬در آرایه ‪ a‬قرار میدهد‪ .‬برای خاتمه‪ ،‬بهجای مقدار مکان‬
‫باید عدد ‪ -1‬وارد شود‪.‬‬
‫‪622‬‬ ‫فصل چهارم‬

‫متد ‪ x :pow‬به توان ‪ n‬را محاسبه میکند‪.‬‬


‫چندجملهای چاپ میکند‪.‬‬ ‫متد ‪ :print‬ضرایب چندجملهای را گرفته‪ ،‬آن را بهصور‬
‫هدف‬ ‫نام‬ ‫متد‬
‫آرایهای که ضرایب چندجملهای را نگهداری میکند‪.‬‬ ‫‪a‬‬

‫تعداد ضرایب چندجملهای (حداکثر توان چندجملهای)‬ ‫‪n‬‬


‫‪x‬‬ ‫‪Main‬‬
‫عدد خواندهشده‬
‫مجموع حاصل‬ ‫‪sum‬‬
‫شمارنده‬ ‫‪i‬‬
‫آرایه بهعنوان پارامتر که ضرایب چندجملهای را خوانده به متد فراخوان برمیگرداند‪.‬‬ ‫‪a‬‬ ‫‪read‬‬
‫حداکثر توان ‪x‬‬ ‫‪n‬‬
‫مکان چندجملهای‬ ‫‪location‬‬
‫ضریب چندجملهای در مکان ‪location‬‬ ‫‪zarib‬‬
‫مقداری که باید توان آن به ‪ n‬حساب شود‬ ‫‪x‬‬ ‫‪pow‬‬
‫مقدار توان‬ ‫‪n‬‬
‫شماره از ‪ 0‬تا ‪n‬‬ ‫‪i‬‬
‫‪n‬‬ ‫‪pow1‬‬
‫توان محاسبهشده ( ‪)x‬‬
‫آرایه ضرایب چندجملهای‬ ‫‪a‬‬ ‫‪print‬‬
‫تعداد جمالت (حداکثر توان)‬ ‫‪n‬‬
‫شمارنده‬ ‫‪i‬‬

‫;‪using System‬‬
‫‪namespace p34‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void read(int[] a, int n‬‬
‫{‬
‫;‪int location, zarib‬‬
‫) ; ;( ‪for‬‬
‫{‬
‫;)"‪Console.Write("Enter location:‬‬
‫;))(‪location = int.Parse(Console.ReadLine‬‬
‫;‪if (location == -1) break‬‬
‫;)"‪Console.Write("Enter zarib:‬‬
‫;))(‪zarib = int.Parse(Console.ReadLine‬‬
‫)‪if (location < n‬‬
‫;‪a[location] = zarib‬‬
‫‪else‬‬
‫‪Console.Write("locatin less than equqal‬‬
‫;)‪{0}\n", n‬‬
‫}‬
‫}‬
‫)‪static double pow(double x, int n‬‬
‫{‬
‫;‪double pow1 = 1.0‬‬
‫;‪for (int i = 1; i <= n; i++) pow1 *= x‬‬
‫;‪return pow1‬‬
‫آرایهها و رشتهها‬ 622

}
static void print(int[] a, int n)
{
int i;
Console.Write("P = ");
for (i = n-1; i >= 0; i--)
if (a[i] != 0)
if (i != 0)
Console.Write(" {0}X^{1} + ", a[i], i);
else
Console.Write(" {0}X^{1} ", a[i], i);
}
static void Main(string[] args)
{
int n;
double x, sum = 0;
Console.Write("Enter x:");
x = double.Parse(Console.ReadLine());
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
int[] a = new int[n];
read(a, n);
for (int i = 0; i < n; i++)
if (a[i] != 0)
sum += a[i] * pow(x, i);
print(a, n);
Console.Write("\nSum is {0}", sum);
Console.ReadKey();
}
}
}

‫ تمام کلما آن را وارونه میکند و چاپ مینماید‬،‫ کلمهای را خوانده‬144 ‫ برنامهای که یکرشته حداکثر‬.35
ilA dna azeR ‫ بهصور‬Ali and Reza ،‫ بهعنوانمثال‬.)‫ (فاصله) قرار میگیرد‬blank ‫(بی کلما کاراکتر‬
.‫تبدیل میشود‬
‫‪622‬‬ ‫فصل چهارم‬

‫وظایف متدها‪:‬‬
‫متد ‪ :main‬رشته ‪ s‬را تعریف کرده‪ ،‬با متد ‪ gets‬آن را میخواند و با متد ‪ reverse‬آن را مغلوب مینماید‪ .‬در‬
‫پایان‪ ،‬رشته مغلوب شده را نمایش میدهد‪.‬‬
‫متد ‪ :length‬طول رشته ‪ s‬را محاسبه میکند‪.‬‬
‫متد ‪ :reverse‬رشته ‪ s‬را مغلوب نموده‪ ،‬در ‪ s‬قرار میدهد‪.‬‬
‫‪:‬‬ ‫هدف‬ ‫متغیر‬ ‫متد‬
‫رشته خواندهشده‬ ‫‪s‬‬ ‫‪main‬‬
‫;‪using System‬‬ ‫رشتهای که باید طول آن تعیین شود‬ ‫‪s‬‬ ‫‪lenght‬‬
‫‪namespace p35‬‬
‫{‬ ‫طول رشته‬ ‫‪i‬‬
‫‪class Program‬‬ ‫رشتهای که باید مغلوب گردد‪.‬‬ ‫‪s‬‬
‫{‬
‫‪static int‬‬ ‫شمارنده تا نصف طول رشته‬ ‫‪i‬‬
‫)‪lenght(char[] s‬‬ ‫‪reverse‬‬
‫{‬ ‫طول رشته‬ ‫‪len‬‬
‫;‪return s.Length‬‬ ‫متغیر کمکی برای تعویض محتویات دو مکان‬ ‫‪ch‬‬
‫}‬
‫)‪static string reverse(string s1‬‬
‫{‬
‫;‪int i‬‬
‫;‪char ch‬‬
‫;]‪char[] s = new char[s1.Length‬‬
‫;)‪s1.CopyTo(0, s, 0, s1.Length‬‬
‫;)‪int len = lenght(s‬‬
‫)‪for (i = 0; i < len / 2; i++‬‬
‫{‬
‫;]‪ch = s[i‬‬
‫;]‪s[i] = s[len - i - 1‬‬
‫;‪s[len - i - 1] = ch‬‬
‫}‬
‫;"" = ‪s1‬‬
‫)‪foreach(char ch1 in s‬‬
‫;)(‪s1=s1+ch1.ToString‬‬
‫;‪return s1‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪string s‬‬
‫;)"‪Console.Write("Enter a string:‬‬
‫;)(‪s = Console.ReadLine‬‬
‫;)‪s = reverse(s‬‬
‫;)‪Console.Write("Reverse is {0}", s‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .36‬برنامهای که یک مت را از ورودی خوانده‪ ،‬اعمال زیر را انجام میدهد‪:‬‬


‫الف‪ :‬درصد تکرار هر حرف را در مت پیدا میکند (حروف بی ‪ A‬تا ‪ Z‬و حروف کوچک را بزرگ در نظر بگیرید)‪.‬‬
‫آرایهها و رشتهها‬ ‫‪626‬‬

‫بافاصله از یکدیگر جدا میشوند (حداکثر ‪ 144‬کلمه داریم)‪.‬‬‫ب‪ :‬درصد تکرار هر کلمه را در مت پیدا میکند (کلما‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬رشته را خوانده‪ ،‬کلما را جدا میکند‪ ،‬تعداد کلما را با فراخوانی متد ‪ word_count‬محاسبه‬
‫مینماید‪ .‬سس ‪ ،‬تعداد کاراکترهای تکرار شده را با فراخوانی متد ‪ count_char‬میشمارد‪ ،‬درصد کاراکترهای‬
‫تکراری را با فراخوانی ‪ print_percent_char‬چاپ کرده‪ ،‬در پایان‪ ،‬با فراخوانی ‪ print_percent_word‬درصد‬
‫کلما را چاپ میکند‪.‬‬
‫متد ‪ :length‬طول رشته ‪ s‬را برمیگرداند‪.‬‬
‫متد ‪ :split‬کلما رشته را جدا میکند‪ ،‬در آرایه ‪ s1‬قرار میدهد‪.‬‬
‫متد ‪ :count_char‬تعداد تکرار هر کاراکتر را محاسبه میکند و در آرایه ‪ ch‬قرار میدهد‪.‬‬
‫متد ‪ :print_percent_char‬درصد تکرار هر کاراکتر را نمایش میدهد‪.‬‬
‫متد ‪ :find‬رشته ‪ s1‬را در رشته ‪ s‬از مکان ‪ start‬جستجو میکند‪ .‬تعداد کلما ‪ ،s1‬برابر ‪ word‬است‪.‬‬
‫متد ‪ :word_count‬تعداد تکرار هر کلمه را میشمارد‪.‬‬
‫متد ‪ :print_percent_word‬درصد تکرار هر کلمه را نمایش میدهد‪.‬‬
‫هدف‬ ‫نام‬ ‫متد‬
‫رشته خواندهشده‬ ‫‪s‬‬
‫کلمات جداشده‬ ‫‪s1‬‬
‫تعداد کاراکترهای ‪ A‬تا ‪Z‬‬ ‫‪ch‬‬ ‫‪main‬‬

‫آرایهای که تعداد هر کلمه را نگهداری میکند‪.‬‬ ‫‪word_count‬‬


‫تعداد کلمات‬ ‫‪words‬‬
‫رشتهای بهعنوان پارامتر که باید طول آن محاسبه شود‬ ‫‪s‬‬ ‫‪lenght‬‬
‫طول رشته‬ ‫‪i‬‬
‫رشتهای که باید کلمات آن جدا شوند (پارامتر)‬ ‫‪s‬‬ ‫‪split‬‬
‫آرایهای از رشته که کلمات جداشده در آن قرار میگیرند‬ ‫‪s1‬‬
‫شمارندهای که رشته ‪ s‬را پیمایش میکند‬ ‫‪i‬‬
‫تعداد کلمات رشته ‪ s‬را نگهداری میکند‬ ‫‪word‬‬
‫‪count_c‬‬
‫شمارندهای که کلمات را پیمایش میکند‬ ‫‪k‬‬ ‫‪har‬‬
‫رشتهای که باید تعداد هر کاراکتر آن تعیین شود‪.‬‬ ‫‪s‬‬
‫تعداد تکرار هر کاراکتر‬ ‫‪ch‬‬
‫شمارندهای که رشته ‪ s‬را پیمایش میکند‪.‬‬ ‫‪I‬‬
‫رشتهای که درصد تکرار کاراکترهای آن باید تعیین شود‪.‬‬ ‫‪s‬‬ ‫‪print_pe‬‬
‫‪rcent_ch‬‬
‫تعداد تکرار هر کاراکتر‬ ‫‪ch‬‬ ‫‪ar‬‬
‫طول رشته‬ ‫‪len‬‬
‫شمارنده برای هر کاراکتر در آرایه ‪ch‬‬ ‫‪i‬‬
‫کلمات جداشده بهعنوان پارامتر که باید در رشته ‪ s‬جستجو شود‬ ‫‪s1‬‬ ‫‪find‬‬
‫رشته اصلی که باید ‪ s1‬در آن جستجو گردد‬ ‫‪s‬‬
‫پارامتر شروع جستوجو در رشته ‪s‬‬ ‫‪start‬‬
623 ‫فصل چهارم‬

‫تعداد کاراکترهای جداشده‬ words


s ‫ در رشته‬s1 ‫تعداد تکرار رشته‬ count
s ‫شمارنده برای پیمایش رشته‬ i
.‫کلمات جداشده بهعنوان پارامتر که تعداد کلمات تکراری آن باید شمارش شود‬ s1 word_co
unt
.‫آرایهای که تعداد تکرار هر کلمه را نگهداری میکند‬ wordCount
.‫ را تعیین میکند‬s1 ‫تعداد کلمات آرایه‬ words
‫تعداد تکرار‬ count
‫شمارنده‬ i
‫شمارنده‬ j
.‫آرایهای از کلمات جداشده که باید درصد کلمات آن چاپ شود‬ s1 print_pe
rcent_w
‫ام در رشته‬i ‫تعداد تکرار کلمات‬ wordCount ord
‫تعداد کلمات بهعنوان پارامتر‬ words
‫شمارنده تعداد کلمات‬ i
using System;
namespace p36
{
class Program
{
private static void count_char(string s, int[] ch)
{
for (int i = 0; i< s.Length; i++)
{
if (s[i] >= 'a' && s[i] <= 'z')
{
ch[(int)(s[i]) - 32 - 65]++;
}
else if (s[i] >= 'A' && s[i] <= 'Z')
{
ch[(int)s[i] - 65]++;
}
}
}
private static void print_percent_char(string s, int[] ch)
{
int len = s.Length;
for (int i = 0; i < 27; i++)
{
if (ch[i] > 0)
{
Console.Write("\nPercent {0} is %", (char)(i +
97), (float)ch[i] * 100 / len);
}
}
}
private static void word_count(string[] s1, int[] wordCount,
int words)
{
int count;
for (int i = 0; i < words; i++)
‫آرایهها و رشتهها‬ 624

{
for (int j = i; j < words; j++)
{
count = find(s1, s1[i], j, words);
if (count != 0)
{
wordCount[i] = count;
}
}
}
}
private static void print_percent_word(string[] s1, int[]
wordCount, int words)
{
for (int i = 0; i < words; i++)
{
if (wordCount[i] > 0 && s1[i] != "")
{
Console.Write("\n percent {0} is % {1}", s1[i],
(float)wordCount[i] * 100 / words);
}
}
}
private static int find(string[] s1, string s, int start, int
words)
{
int count = 0;
for (int i = start; i < words; i++)
{
if (s1[i] == s)
{
if (i > start)
{
s1[i] = "";
}
count++;
}
}
return count;
}
static void Main(string[] args)
{
string s = "";
Console.Write("Enter a string:");
s = Console.ReadLine();
string[] s1 = s.Split(' ');
int[] ch = new int[27];
int[] wordCount = new int[100];
int words = s1.Length;
word_count(s1, wordCount, words);
count_char(s, ch);
Console.WriteLine("\n=====================");
Console.WriteLine("percent of characters");
Console.WriteLine("=====================");
print_percent_char(s, ch);
Console.WriteLine("\n=====================");
Console.WriteLine("percent of words ");
Console.WriteLine("=====================");
print_percent_word(s1, wordCount, words);
‫‪622‬‬ ‫فصل چهارم‬

‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .37‬برنامهای که تعدادی عدد را خوانده‪ ،‬تشخیص میدهد مرتبشده هستند یا خیر؟‬


‫وظایف متدها‪:‬‬
‫متد‪ :main‬ابتدا ‪ n‬را خوانده (تعداد عناصر آرایه) و با فراخوانی متد ‪ isSort‬تشخیص میدهد آیا ‪ n‬عدد‬
‫خواندهشده مرتب است یا خیر؟ و پیام مناسب چاپ میکند‪.‬‬
‫متد ‪ :isSort‬آرایه ‪ a‬و ‪( n‬تعداد عناصر آرایه) را بهعنوان پارامتر گرفته‪ ،‬اگر عناصر آرایه بهصور صعودی یا‬
‫نزولی مرتب باشند‪ ،‬عدد ‪ ،1‬وگرنه‪ ،‬عدد ‪ 4‬را برمیگرداند‪.‬‬
‫متد ‪ :read‬آرایه ‪( n ،a‬تعداد عناصر آرایه) را بهعنوان پارامتر میگیرد‪ n ،‬عدد را خوانده‪ ،‬در آرایه ‪ a‬قرار‬
‫میدهد‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫تعداد عدد‬ ‫‪n‬‬ ‫‪main‬‬
‫آرایهای که اعداد خواندهشده در آن قرار میگیرد‬ ‫‪num‬‬
‫آرایهای که باید تشخیص داده شود مرتب است یا خیر‪.‬‬ ‫‪a‬‬ ‫‪issort‬‬
‫تعداد عناصر آرایه‬ ‫‪n‬‬
‫آرایهها و رشتهها‬ 622

.‫شمارندهای که عناصر آرایه را پیمایش میکند‬ i

.‫آرایهای که اعداد خواندهشده را نگهداری میکند‬ a read


.‫تعداد عددی است که باید خوانده شود‬ n
.‫ تغییر میکند‬n-0 ‫ تا‬1 ‫شمارندهای است که از‬ i

using System;
namespace p37
{
class Program
{
static int isSort(int[] a, int n)
{
int i;
for (i = 0; i < n - 1 && a[i] == a[i + 1]; i++) ;
if (a[i] < a[i + 1])
{
for (i = i; i < n - 1; i++)
if (a[i] > a[i + 1]) return 0;
}
else
{
for (i = i; i < n - 1; i++)
if (a[i] < a[i + 1]) return 0;
}
return 1;
}
static void read(int[] a, int n)
{
int i;
Console.Write("Enter {0} numbers:", n);
string[] s = Console.ReadLine().Split(' ');
for (i = 0; i < n; i++)
a[i] = Convert.ToInt32(s[i]); ;
}
static void Main(string[] args)
{
int n;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
int[] num = new int[n];
read(num, n);
if (isSort(num, n) == 1)
Console.Write("Array is sorted.");
else Console.Write("Array is not sort.");
Console.ReadKey();
}
}
}
‫‪622‬‬ ‫فصل چهارم‬

‫‪ ،‬توسط متدی عنصر ‪ n‬را حذف میکند‪.‬‬ ‫برنامهای که ‪ n‬عدد را خوانده‪ ،‬در آرایه قرار میدهد‪ .‬سس‬ ‫‪.30‬‬
‫وظایف متدها‪:‬‬
‫با فراخوانی متد ‪ n ،read‬عنصر را خوانده‪ ،‬در آرایه قرار‬ ‫متد ‪ :main‬تعداد عناصر آرایه را میخواند‪ .‬سس‬
‫میدهد‪ .‬در ادامه‪ ،‬شماره عنصری که باید حذف شود را میخواند (اگر شماره عنصر بیشتر از تعداد عناصر آرایه یا‬
‫از خواندن شماره‬ ‫کوچکتر از صفر باشد‪ ،‬یک پیام چاپ میکند و خواندن شماره عنصر آرایه را ادامه میدهد)‪ .‬پ‬
‫عنصری که باید حذف شود‪ ،‬با فراخوانی متد ‪ ،removeIndex‬آن عنصر را از آرایه حذف میکند و در پایان‬
‫آرایه را نمایش میدهد (با فراخوانی متد ‪)print‬‬ ‫محتویا‬
‫متد ‪ :read‬تعدادی عدد را خوانده‪ ،‬در آرایه ‪ a‬قرار میدهد‪.‬‬
‫متد ‪ :removeIndex‬عنصری به شماره ‪ index‬را از آرایه ‪ a‬حذف میکند‪.‬‬
‫متد ‪ :print‬آرایه ‪ a‬با تعداد عناصر ‪ n‬را نمایش میدهد‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫آرایهای که ‪ n‬عدد را نگهداری میکند‬ ‫‪num‬‬ ‫‪main‬‬
‫تعداد عناصر آرایه‬ ‫‪n‬‬
‫شماره عنصری که باید حذف شود‬ ‫‪index‬‬
‫آرایهای که عنصر ‪ index‬آن باید حذف شود‪.‬‬ ‫‪a‬‬ ‫‪removeIndex‬‬
‫اندیس عنصری که باید حذف گردد‬ ‫‪index‬‬
‫تعداد عناصر آرایه قبل و بعد از حذف‬ ‫‪n‬‬
‫شمارندهای برای حذف عنصر‬ ‫‪i‬‬
‫آرایهای که عناصر خواندهشده را نگهداری مینماید‬ ‫‪a‬‬ ‫‪read‬‬
‫تعداد عناصر آرایه که باید خوانده شود‬ ‫‪n‬‬
‫شمارندهای برای خواندن ‪ n‬عنصر‬ ‫‪i‬‬

‫آرایهای که عناصر آن باید چاپ شود‬ ‫‪a‬‬ ‫‪print‬‬


‫تعداد عناصری که باید چاپ شود‬ ‫‪n‬‬
‫شمارندهای برای پیمایش و چاپ عناصر آرایه‬ ‫‪i‬‬

‫;‪using System‬‬
‫‪namespace p38‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void removeIndex(int[] a, int index, ref int n‬‬
‫{‬
‫)‪for (int i = index - 1; i < n - 1; i++‬‬
‫;]‪a[i] = a[i + 1‬‬
‫;‪n--‬‬
‫آرایهها و رشتهها‬ 622

}
static void read(int[] a, int n)
{
int i;
Console.Write("Enter {0} numbers:", n);
string[] s = Console.ReadLine().Split(' ');
for (i = 0; i < n; i++)
a[i] = Convert.ToInt32(s[i]);
}
static void print(int[] a, int n)
{
int i;
Console.Write("Array is:");
for (i = 0; i < n; i++)
Console.Write(" {0}", a[i]);
}
static void Main(string[] args)
{
int index;
Console.Write("Enter n:");
int n=Convert.ToInt32(Console.ReadLine());
int [] num = new int[n];
read(num, n);
for (;;)
{
Console.Write("Enter index:");
index=Convert.ToInt32(Console.ReadLine());
if (index > n || index < 0)
Console.Write("Enter index less than equql {0}
and index >0\n", n);
else
break;
}
removeIndex(num, index, ref n);
print(num, n);
Console.ReadKey();
}
}
}

‫ عنصر اول آرایه دوم را به انتهای آرایه اول‬n ،‫ عنصری را خوانده‬n ‫ عنصری و‬m ‫ برنامهای که دو آرایه‬.39
.‫اضافه میکند‬
.‫متدی برای خواندن عناصر آرایه نوشتهشده است‬
.‫متدی برای اضافه کردن عناصر آرایه دوم در آرایه اول نوشته گردید‬
.‫متدی برای چاپ اول و آرایه دوم نوشتهشده است‬
:‫وظایف متدها‬
‫ عنصر را خوانده و در آرایه‬m ،read ‫ سس با فراخوانی متد‬،‫( را خوانده‬m) ‫ تعداد عناصر آرایه اول‬:main ‫متد‬
‫ در‬،‫ عنصر را خوانیده‬n ،read ‫ با فراخوانی متد‬،‫( را خوانده‬n) ‫ همچنی تعداد عناصر آرایه دوم‬.‫ قرار میدهد‬num1
‫‪622‬‬ ‫فصل چهارم‬

‫آرایه ‪ num2‬قرار میدهد‪ .‬در ادامه‪ ،‬متد ‪ append‬را فراخوانی میکند تا عناصر آرایه دوم را بیه انتهیای آراییه اول‬
‫اضافه کند و آرایه اول را با فراخوانی متد ‪ print‬نمایش میدهد‪.‬‬
‫متد ‪ n :append‬عنصر آرایه ‪ b‬را به انتهای آرایه ‪ a‬اضافه میکند‪.‬‬
‫متد ‪ :read‬تعدادی عنصر را خوانده‪ ،‬در آرایه ‪ a‬قرار میدهد‪.‬‬
‫متد ‪ :print‬تعدادی عنصر که در آرایه ‪ a‬قرار میدهد را به خروجی میبرد‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫اولین آرایه با ‪ m‬عنصر‬ ‫‪num1‬‬ ‫‪main‬‬
‫دومین آرایه با ‪ n‬عنصر‬ ‫‪num2‬‬
‫تعداد عناصر آرایه اول‬ ‫‪m‬‬
‫تعداد عناصر آرایه دوم‬ ‫‪n‬‬
‫اولین آرایه که عناصر آرایه دوم باید به انتهای آن‬ ‫‪a‬‬ ‫‪append‬‬
‫اضافه گردد‪.‬‬
‫دومین آرایه‬ ‫‪b‬‬
‫تعداد عناصر آرایه (بهصورت اشارهگر تعریفشده است‪،‬‬ ‫‪m, n‬‬
‫چون تعداد عناصر آرایه تغییر میکند)‪.‬‬

‫شمارنده‬ ‫‪i‬‬
‫آرایهای که باید خوانده شود‬ ‫‪a‬‬ ‫‪read‬‬
‫تعداد عناصر آرایه دوم‬ ‫‪n‬‬
‫شمارندهای که عناصر آرایه دوم را پیمایش میکند‬ ‫‪i‬‬
‫آرایهای که باید چاپ شود‬ ‫‪a‬‬ ‫‪print‬‬
‫تعداد عناصر آرایهای که باید خوانده شود‬ ‫‪n‬‬
‫شمارنده تعداد عناصر آرایهای که باید چاپ گردد‬ ‫‪i‬‬
‫;‪using System‬‬
‫‪namespace p39‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void append(int[] a, ref int m, int[] b, int n‬‬
‫{‬
‫;]‪for (int i = 0; i < n; i++) a[i + m] = b[i‬‬
‫;‪m = n + m‬‬
‫}‬
‫)‪static void read(int[] a, int n‬‬
‫{‬
‫;‪int i‬‬
‫;)‪Console.Write("Enter {0} numbers:", n‬‬
‫;)' '(‪string[] s = Console.ReadLine().Split‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫;)]‪a[i] = Convert.ToInt32(s[i‬‬
‫}‬
‫)‪static void print(int[] a, int n‬‬
‫{‬
‫;‪int i‬‬
‫;)"‪Console.Write("Array is:‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫;)]‪Console.Write(" {0}", a[i‬‬
‫آرایهها و رشتهها‬ ‫‪622‬‬

‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter m:‬‬
‫;))(‪int m = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪int n = Convert.ToInt32(Console.ReadLine‬‬
‫;]‪int[] num1 = new int[m+n‬‬
‫;]‪int[] num2 = new int[n‬‬
‫;)‪read(num1, m‬‬
‫;)‪read(num2, n‬‬
‫;)‪append(num1, ref m, num2, n‬‬
‫;)‪print(num1, m‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .44‬برنامهای که عناصر یک آرایه و مقدار ‪ x‬را خوانده‪ ،‬تعداد تکرار عنصر ‪ x‬در آرایه ‪ a‬را میشمارد‪ .‬در ای‬
‫برنامه متدها زیر نوشتهشده است‪:‬‬
‫متدی برای خواندن عناصر آرایه ‪a‬‬
‫متدی برای شمارش تعداد تکرار ‪ x‬در آرایه ‪a‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬با پیامی تعداد عناصر آرایه را خوانده‪ ،‬سس با فراخوانی ‪ ،read‬عناصر آرایه را میخواند و در ‪ a‬قرار‬
‫میدهد‪ .‬در ادامه‪ ،‬دادهای که باید جستجو گردد را میخواند )‪ (value‬و تعداد تکرار آن را در آرایه چاپ میکند‪.‬‬
‫متد ‪ :count‬تعداد تکرار ‪ x‬در آرایه ‪ a‬با ‪ n‬عنصر را برمیگرداند‪.‬‬
‫متد ‪ n :read‬عنصر را میخواند و در آرایه ‪ a‬قرار میدهد‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫آرایهای که اعداد خواندهشده را نگهداری میکند‬ ‫‪num‬‬ ‫‪main‬‬
‫تعداد اعدادی که باید خوانده شود و در آرایه ‪ num‬قرار گیرد‪.‬‬ ‫‪n‬‬
‫مقداری است که باید در آرایه جستجو گردد‪.‬‬ ‫‪value‬‬
‫آرایهای که با تعداد ‪ n‬عنصر که تعداد تکرار ‪ x‬را باید برگرداند‪.‬‬ ‫‪a‬‬ ‫‪count‬‬
‫تعداد عناصر آرایه ‪a‬‬ ‫‪n‬‬
‫مقداری است که باید در آرایه ‪ a‬تعداد تکرار آن مشخص گردد‪.‬‬ ‫‪x‬‬
‫تعداد تکرار‬ ‫‪c‬‬
‫شمارنده‬ ‫‪i‬‬
‫آرایهای که اعداد خواندهشده باید در آن قرار گیرد‬ ‫‪a‬‬ ‫‪read‬‬
‫تعداد عناصر آرایه‬ ‫‪n‬‬
‫شمارنده‬ ‫‪i‬‬
622 ‫فصل چهارم‬

using System;
namespace p40
{
class Program
{
static int count(int []a,int n, int x)
{
int c = 0;
for (int i = 0; i < n; i++) if (a[i]== x) c++;
return (c);
}
static void read(int[] a, int n)
{
int i;
Console.Write("Enter {0} numbers:", n);
string[] s = Console.ReadLine().Split(' ');
for (i = 0; i < n; i++)
a[i] = Convert.ToInt32(s[i]);
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = Convert.ToInt32(Console.ReadLine());
int[] num = new int[n];
read(num, n);
Console.Write("Enter value:");
int value =Convert.ToInt32(Console.ReadLine());;
Console.Write("Count is {0}", count(num, n, value));
Console.ReadKey();
}
}
}

‫ عنصر‬n ‫ با‬a ‫ عنصر اول آرایه‬n ‫ حاصلضرب بیرونی‬،‫ عنصری یکبعدی را خوانده‬n ‫ برنامهای که دو آرایه‬.41
،‫ بهعنوانمثال‬.)‫ قرار میگیرد‬c ‫ در آرایه دیگری به نام‬،‫ را برمیگرداند (حاصلضرب ای دو آرایه‬b ‫اول آرایه‬
.‫فرض کنید آرایههای زیر را داشته باشیم‬
a b

2.2 2.0 4.4 -2.2 0.0

3.3 -1.0 6.6 -3.3 0.0

4.4 0.0 8.8 -4.4 0.0

.‫) داشته باشید‬outer product (‫متدی برای ضرب بیرونی‬


C[i][j] = a[i] b[j] .‫متدی برای چاپ حاصلضرب داشته باشید‬
:‫وظایف متدها‬
‫آرایهها و رشتهها‬ ‫‪626‬‬

‫متد ‪ :main‬تعداد عناصر آرایه اول و دوم را میخواند‪ .‬سس ‪ ،‬آرایه اول و دوم را خوانده‪ ،‬آنها را در هم ضرب‬
‫بیرونی کرده‪ ،‬در آرایه سوم قرار میدهد و آرایه سوم را چاپ میکند‪.‬‬
‫متد ‪ :outerProudect‬حاصلضرب بیرونی آرایههای ‪ a‬و ‪ b‬را در آرایههای ‪ n  n‬قرار میدهد‪.‬‬
‫متد ‪ n :read‬عنصر خوانده‪ ،‬در آرایه ‪ a‬قرار میدهد‪.‬‬
‫متد ‪ :print‬آرایه ‪ )a( n  n‬را چاپ میکند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫آرایه ‪ n‬عنصر اول‬ ‫‪num1‬‬ ‫‪main‬‬
‫آرایه ‪ n‬عنصری دوم‬ ‫‪num2‬‬
‫آرایه ‪n  n‬که ضرب آرایه اول و دوم را نگهداری میکند‬ ‫‪num3‬‬
‫تعداد عناصر آرایه‬ ‫‪n‬‬
‫آرایهای که ‪ n‬عنصر خواندهشده را نگهداری میکند‬ ‫‪a‬‬ ‫‪read‬‬
‫تعداد عناصری که باید خوانده شود‪.‬‬ ‫‪n‬‬
‫شمارندهای که برای خواندن ‪ n‬عنصر به کار میرود‬ ‫‪i‬‬
‫آرایه اول‬ ‫‪a‬‬ ‫‪outerProduct‬‬
‫آرایه دوم‬ ‫‪b‬‬
‫آرایهای ‪ n  n‬که ضرب بیرونی آرایه اول و دوم را نگهداری میکند‬ ‫‪c‬‬
‫تعداد عناصر آرایه اول و دوم‬ ‫‪n‬‬
‫شمارنده آرایه اول‬ ‫‪i‬‬
‫شمارنده آرایه دوم‬ ‫‪j‬‬
‫آرایه ‪( n  n‬حاصلضرب بیرونی که باید چاپ شود)‬ ‫‪a‬‬ ‫‪print‬‬
‫شماره سطر و ستون آرایه ‪a‬‬ ‫‪i, j‬‬

‫;‪using System‬‬
‫‪namespace p41‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void outerProduct(int[] a, int[] b, int[,] c, int n‬‬
‫{‬
‫)‪for (int i = 0; i < n; i++‬‬
‫)‪for (int j = 0; j < n; j++‬‬
‫;]‪c[i, j] = a[i] * b[j‬‬
‫}‬
‫)‪static void read(int[] a, int n‬‬
‫{‬
‫;‪int i‬‬
‫;)‪Console.Write("Enter {0} numbers:", n‬‬
‫;)' '(‪string[] s = Console.ReadLine().Split‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫;)]‪a[i] = Convert.ToInt32(s[i‬‬
‫}‬
‫)‪static void print(int[,] a, int n‬‬
‫{‬
‫;‪int i‬‬
‫;)"‪Console.WriteLine("Array product is:‬‬
‫‪623‬‬ ‫فصل چهارم‬

‫)‪for (i = 0; i < n; i++‬‬


‫{‬
‫)‪for (int j = 0; j < n; j++‬‬
‫;)]‪Console.Write("\t{0}", a[i, j‬‬
‫;)(‪Console.WriteLine‬‬
‫}‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪int n = Convert.ToInt32(Console.ReadLine‬‬
‫;]‪int[] num1 = new int[n‬‬
‫;]‪int[] num2 = new int[n‬‬
‫;]‪int[,] num3 = new int[n, n‬‬
‫;)‪read(num1, n‬‬
‫;)‪read(num2, n‬‬
‫;)‪outerProduct(num1, num2, num3, n‬‬
‫;)‪print(num3, n‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫برنامهای که عناصر یک آرایه دوبعدی را ‪ 94‬درجه چرخش میدهد‪ .‬بهعنوانمثال‪ ،‬اگر آرایه زیر را داشته‬ ‫‪.42‬‬
‫باشیم‪:‬‬
‫‪11‬‬ ‫‪22‬‬ ‫‪33‬‬
‫‪44‬‬ ‫‪55‬‬ ‫‪66‬‬
‫‪77‬‬ ‫‪88‬‬ ‫‪99‬‬
‫زیر تبدیل میشود‪:‬‬ ‫با چرخش ‪ 94‬درجه آرایه بهصور‬
‫‪77‬‬ ‫‪44‬‬ ‫‪11‬‬
‫‪88‬‬ ‫‪55‬‬ ‫‪22‬‬
‫‪99‬‬ ‫‪66‬‬ ‫‪33‬‬
‫وظایف متدها‪:‬‬
‫متد ‪ :main‬تعداد سطرها و ستونهای آرایه را خوانده )‪ (n‬و با فراخوانی متد ‪ read‬عناصر آرایه ‪ n‬در ‪ n‬را‬
‫میخواند‪ .‬سس آن را چاپ مینماید (با فراخوانی متد ‪ .)print‬در ادامه‪ ،‬آن را ‪ 94‬درجه در جهت عقربه ساعت‬
‫چرخش میدهد و در پایان‪ ،‬آرایه چرخش یافته را نمایش میدهد‪.‬‬
‫متد ‪ :rotate‬یک آرایه ‪ n  n‬را بهعنوان پارامتر گرفته‪ ،‬آن را چرخش میدهد ( ابتدا چرخش یافته آرایه را‬
‫در آرایه ‪ n‬در ‪ n‬دیگر )‪ (b‬ذخیره میکند‪ .‬سس ‪ ،‬آرایه ‪ b‬را در آرایه ‪ a‬قرار میدهد‪.‬‬
‫متد ‪ :read‬عناصر یک آرایه دوبعدی ‪ n  n‬را میخواند‪.‬‬
‫متد‪ :print‬عناصر یک آرایه دوبعدی ‪ n  n‬را چاپ میکند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫آرایه دوبعدی که باید خوانده شود و آرایه چرخش یافته در آن قرار گیرد‬ ‫‪num‬‬ ‫‪main‬‬
‫آرایهها و رشتهها‬ 624

‫تعداد سطرها و ستونهای آرایه‬ n


‫ درجه در جهت عقربه ساعت چرخش یابد‬01 ‫آرایهای که باید‬ a rotate
‫تعداد سطرها و ستونهای آرایه‬ n
‫ قرار میگیرد‬a ‫آرایه چرخش یافته را نگهداری میکند و درنهایت در آرایه‬ b
‫شمارندههایی جهت پیمایش سطر و ستونهای آرایه‬ i, j
‫ که باید خوانده شود‬n ‫ در‬n ‫آرایه دوبعدی‬ a read
‫تعداد سطر و ستون آرایه‬ n
‫شمارندههای جهت پیمایش سطرها و ستونهای آرایه‬ i, j
‫آرایه دوبعدی که باید چاپ شود‬ a print
‫تعداد سطرها و ستونهای آرایه‬ n
‫شمارندههای برای پیمایش سطرها و ستونهای آرایه‬ j, i
using System;
namespace p42
{
class Program
{
static void rotate(int[,] a, int n)
{
int[,] b = new int[n, n];
int i, j;
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
b[j, n - 1 - i] = a[i, j];
for (i = 0; i < n; i++)
for (j = 0; j < n; j++) a[i, j] = b[i, j];
}
static void read(int[,] a, int n)
{
int i, j;
for (i = 0; i < n; i++)
{
Console.Write("Enter {0} numbers for row {1}:",
n, i + 1);
string[] s = Console.ReadLine().Split(' ');
for (j = 0; j < n; j++)
a[i, j] = Convert.ToInt32(s[j]);
}
}
static void print(int[,] a, int n)
{
int i;
for (i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
Console.Write("\t{0}", a[i, j]);
Console.WriteLine();
}
}
static void Main(string[] args)
{
Console.Write("Enter n:");
‫‪622‬‬ ‫فصل چهارم‬

‫;))(‪int n = Convert.ToInt32(Console.ReadLine‬‬
‫;]‪int[,] num = new int[n, n‬‬
‫;)‪read(num, n‬‬
‫;)"‪Console.Write("Primary array is \n‬‬
‫;)‪print(num, n‬‬
‫;)‪rotate(num, n‬‬
‫;)"‪Console.Write("Rotated array is \n‬‬
‫;)‪print(num, n‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .43‬برنامهای که آرایهای ‪ 14‬عنصری تعریف کرده‪ ،‬سس ‪ 14‬عدد را خوانده و تعداد تکرار هر عدد را میشمارد‪.‬‬
‫متد )(‪ ،main‬ابتدا ثابت ‪ n‬را بهعنوان تعداد عناصر آرایه ‪ a‬و ‪ count‬تعریف میکند‪ ،‬سس آرایه ‪ a‬و ‪ count‬را با‬
‫‪ n‬عنصر تعریف کرده‪ ،‬مقادیر عناصر آنها را صفر قرار میدهد و با فراخوانی متد )(‪ 14 ،readArray‬عدد را خوانده‬
‫در ‪ a‬قرار میدهد‪ ،‬در ادامه با فراخوانی متد )(‪ ،countArray‬تعداد تکرار هر یک از عناصر آرایه ‪ a‬را شمارش کرده‪،‬‬
‫در آرایه ‪ count‬قرار میدهد و در پایان‪ ،‬با فراخوانی متد )(‪ ،printArray‬عناصر آرایه ‪ a‬و تعداد تکرار آنها را‬
‫نمایش میدهد (البته عناصر تکراری را فقط یکبار نمایش میدهد)‪.‬‬
‫متد )(‪ ،find‬پارامترهای ‪( a‬آرایهای که مقدار ‪ value‬باید در آن جستوجو شود)‪( n ،‬تا چندمی عنصر آرایه ‪a‬‬
‫باید جستوجو) و ‪( value‬مقدار مورد جستوجو) را دریافت کرده‪ ،‬اگر‪ value ،‬تاکنون چاپشده باشد‪ ،‬مکان آن‪،‬‬
‫وگرنه ‪ -1‬را برمیگرداند‪.‬‬
‫متد )(‪ ،readArray‬پارامترهای ‪( a‬آرایهای که باید عناصر آن خوانده شود) و ‪( n‬تعداد عناصر آرایه) را دریافت‬
‫کرده‪ n ،‬عدد را میخواند و در آرایه قرار میدهد‪.‬‬
‫متد )(‪ ،printArray‬پارامتر ‪( a‬آرایه ‪( count ،)a‬آرایه تعداد تکرار هر عنصر ‪ )a‬و ‪( n‬تعداد عناصر آن) را دریافت‬
‫کرده‪ ،‬عناصر آرایه ‪ a‬را به همراه تعداد تکرار آنها نمایش میدهد‪ .‬در ای متد با فراخوانی متد )(‪ find‬چک میکند‬
‫که عنصر آرایه ‪ a‬قبالً نوشتهنشده باشد (یعنی‪ ،‬عناصر تکراری را یکبار نمایش میدهد)‪.‬‬
‫متد ‪ ،countArray‬پارامتر ‪( a‬آرایهای که تعداد تکرار عناصر آن باید حساب شود)‪( count ،‬تعداد تکرار عناصر‬
‫آرایه ‪ a‬را در آن قرار میدهد) و ‪( n‬تعداد عناصر آرایه ‪ )a‬را دریافت کرده‪ ،‬تعداد تکرار هر یک از عناصر آرایه ‪ a‬را‬
‫با حلقه تودرتو محاسبه میکند و در آرایه ‪ count‬قرار داده‪ ،‬برمیگرداند‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫آرایهها و رشتهها‬ ‫‪622‬‬

‫تعداد عناصر آرایه (ثابت ‪)01‬‬ ‫ثابت ‪n‬‬ ‫‪main‬‬


‫آرایهای که ‪ 01‬عدد را نگهداری میکند‪.‬‬ ‫‪a‬‬
‫آرایهای که تعداد تکرار هر عنصر را نگهداری میکند‪.‬‬ ‫‪count‬‬
‫آرایهای که مقدار ‪ value‬باید در آن جستجو شود‪.‬‬ ‫‪a‬‬ ‫‪find‬‬
‫تعداد عناصر آرایه ‪a‬‬ ‫‪n‬‬
‫تعدادی که باید جستوجو شود‪.‬‬ ‫‪value‬‬
‫شمارندهای که از ‪ 1‬تا ‪ n-1‬میشمارد‪.‬‬ ‫‪i‬‬
‫آرایهای که باید عناصر آن از ورودی خوانده شود‪.‬‬ ‫‪a‬‬ ‫‪readarray‬‬
‫تعداد عناصر آرایه ‪a‬‬ ‫‪n‬‬
‫شمارندهای که از صفر تا ‪ n-1‬میشمارد تا عناصر آرایه ‪ a‬را بخواند‬ ‫‪i‬‬
‫آرایهای که عناصر و تعداد تکرار آن باید نمایش داده شود‪.‬‬ ‫‪a‬‬ ‫‪printarray‬‬
‫آرایهای که تعداد تکرار هر عنصر آرایه را نگهداری میکند‪.‬‬ ‫‪count‬‬
‫شمارندهای که از صفر تا ‪ n-1‬میشمارد‪.‬‬ ‫‪i‬‬
‫آرایهای که مقدار تکرار هر عنصر آن با شمارش شود‪.‬‬ ‫‪a‬‬ ‫‪countarray‬‬
‫آرایهای که تعداد تکرار عناصر شمارششده آرایه ‪ a‬را نگهداری میکند‪.‬‬ ‫‪count‬‬
‫تعداد عناصر آرایه ‪ a‬و ‪cont‬‬ ‫‪n‬‬
‫شمارندهای که از صفر تا ‪ n-1‬میشمارد‪.‬‬ ‫‪i‬‬ ‫‪countarray‬‬
‫شمارندهای که از صفر تا ‪ n-1‬شمارش میکند‪.‬‬ ‫‪j‬‬

‫;‪using System‬‬
‫‪namespace p43‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static int find(int[] a, int n, int value‬‬
‫{‬
‫)‪for (int i = 0; i < n; i++‬‬
‫;‪if (a[i] == value) return i‬‬
‫;‪return -1‬‬
‫}‬
‫)‪static void readArray(int[] a, int n‬‬
‫{‬
‫;‪int i‬‬
‫;)‪Console.Write("Enter {0} numbers:", n‬‬
‫;)' '(‪string[] s = Console.ReadLine().Split‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫;)]‪a[i] = Convert.ToInt32(s[i‬‬
‫}‬
‫)‪static void printArray(int[] a, int[] count, int n‬‬
‫{‬
‫)‪for (int i = 0; i < n; i++‬‬
‫{‬
‫)‪if (find(a, i, a[i]) == -1‬‬
‫;)]‪Console.WriteLine("{0}\t{1}", a[i], count[i‬‬
‫}‬
‫}‬
‫)‪static void countArray(int[] a, int[] count, int n‬‬
‫{‬
‫)‪for (int i = 0; i < n; i++‬‬
‫‪622‬‬ ‫فصل چهارم‬

‫)‪for (int j = 0; j < n; j++‬‬


‫;‪if (a[i] == a[j]) count[i]++‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪int n = Convert.ToInt32(Console.ReadLine‬‬
‫;]‪int[] a = new int[n‬‬
‫;]‪int[] count = new int[n‬‬
‫;)‪readArray(a, n‬‬
‫;)‪countArray(a, count, n‬‬
‫;)‪printArray(a, count, n‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫یک عدد دیگر خوانده‪ ،‬تعداد تکرار ای عدد‬ ‫‪ .44‬برنامهای که ‪ 5‬عدد را خوانده‪ ،‬در آرایهای قرار میدهد‪ .‬سس‬
‫و مکانهای وقوع آن را نمایش میدهد‪.‬‬
‫متد )(‪ ،main‬ابتدا ثابت ‪ n‬را با مقدار ‪ 5‬تعریف کرده‪ ،‬آرایه ‪ a‬با ‪ 5‬عنصر تعریف میکند و مقادیر آن را برابر صفر‬
‫قرار میدهد‪ .‬سس با فراخوانی متد )(‪ ،readArray‬پنج عدد خوانده‪ ،‬در آرایه ‪ a‬قرار میدهد‪ .‬در ادامه‪ ،‬با یک‬
‫پیغام مناسب مقدار ‪ b‬را برای جستوجو میخواند و سس با یک پیغام مناسب و فراخوانی متد )(‪ ،count‬تعداد تکرار‬
‫‪ b‬در آرایه ‪ a‬را نمایش میدهد و در پایان‪ ،‬با فراخوانی متد )(‪ ،allIndex‬تمام مکانهای وقوع ‪ b‬در آرایه ‪ a‬را‬
‫نمایش میدهد‪.‬‬
‫متد )(‪ ،readArray‬آرایه ‪ x‬و ‪ n‬را بهعنوان پارامتر دریافت کرده‪ n ،‬عدد را خوانده‪ ،‬در آرایه ‪ x‬قرار میدهد‪.‬‬
‫متد ‪ ،count‬آرایه ‪ ،x‬تعداد عناصر آن (‪ )n‬و مقداری که تعداد تکرار آن باید برگردانده شود (‪ )value‬را دریافت‬
‫کرده‪ ،‬تعداد تکرار ‪ value‬را در آرایه ‪ x‬شمارش مینماید و در ‪ c‬قرار میدهد‪ .‬سس ‪ c‬را برمیگرداند‪.‬‬
‫متد )(‪ ،allIndex‬آرایه ‪ ،x‬تعداد عناصر آن (‪ )n‬و مقداری که مکانهای وقوع آن در آرایه (‪ )value‬را بهعنوان‬
‫پارامتر دریافت کرده‪ ،‬مکانهای وقوع ‪ value‬در آرایه ‪ x‬را با یک حلقه تکرار نمایش میدهد‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫ثابتی مه تعداد عناصر آرایه را تعیین میکند‪.‬‬ ‫ثابت ‪n‬‬ ‫‪main‬‬
‫آرایهای که عناصر خواندن شده راه را نگهداری میکند‬ ‫‪a‬‬
‫مقدار مورد جستوجو را تعیین میکند‪.‬‬ ‫‪b‬‬
‫آرایهای که دادههای خواندهشده را نگهداری میکند‪.‬‬ ‫‪x‬‬ ‫‪readArray‬‬
‫تعداد عناصر آرایه ‪x‬‬ ‫‪n‬‬
‫شمارنده از صفر تا ‪n-1‬‬ ‫‪i‬‬
‫آرایهای که تعداد مقدار ‪ value‬در آن باید شمارش شود‪.‬‬ ‫‪x‬‬ ‫‪count‬‬
‫تعداد عناصر آرایه ‪x‬‬ ‫‪n‬‬
‫مقداری که مقدار تکرار آن باید برگردانده شود‪.‬‬ ‫‪value‬‬
‫آرایهها و رشتهها‬ 622

n-1 ‫شمارنده از صفر تا‬ i


x ‫ در‬value ‫تعداد تکرار‬ e
.‫ در آن باید نمایش داده شود‬value ‫آرایهای که مکانهای وقوع مقدار‬ x allIndex
x ‫تعداد عناصر آرایه‬ n
.‫ را نمایش میدهد‬n-1 ‫شمارنده از صفر تا‬ i

using System;
namespace p44
{
class Program
{
static void readArray(int[] x, int n)
{
int i;
Console.Write("Enter {0} numbers:", n);
string[] s = Console.ReadLine().Split(' ');
for (i = 0; i < n; i++)
x[i] = Convert.ToInt32(s[i]);
}
static int Count(int[] x, int n, int value)
{
int c = 0;
for (int i = 0; i < n; i++)
{
if (x[i] == value) c++;
}
return c;
}
static void allIndex(int[] x, int n, int value)
{
for (int i = 0; i < n; i++)
{
if (x[i] == value) Console.Write("{0}\t", i);
}
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = Convert.ToInt32(Console.ReadLine());
int[] a = new int[n];
readArray(a, n);
Console.Write( "Enter a number for Search:");
int b = Convert.ToInt32(Console.ReadLine());;
Console.Write( "Count {0} is {1} in position(s):",
b,Count(a, n, b));
allIndex(a, n, b);
Console.ReadKey();
}
}
}
‫‪622‬‬ ‫فصل چهارم‬

‫‪ .45‬برنامهای که ‪ 14‬عدد را خوانده‪ ،‬در آرایهای قرار میدهد‪ .‬سس یک عدد دیگر را میخواند و چنانچه آن‬
‫عدد در آرایه وجود داشته باشد‪ ،‬آن عدد را از آرایه حذف کرده‪ ،‬آرایه را نمایش میدهد (دقت کنید که اگر عدد‬
‫چند بار در آرایه تکرار شده باشد‪ ،‬همه تکرارهای آن عدد را از آرایه حذف میکند)‪.‬‬
‫متد )(‪ ،main‬ابتدا ثابت ‪ n‬را با مقدار ‪ 14‬تعریف کرده‪ ،‬متغیر ‪ m‬را تعریف میکند و مقدار ‪ n‬را در آن قرار می‪-‬‬
‫دهد‪ .‬سس آرایه ‪ x‬با ‪ n‬عنصر را تعریف کرده‪ ،‬با فراخوانی ‪ (10) n ،readArray‬عدد را خوانده‪ ،‬در آن قرار می‪-‬‬
‫دهد‪ .‬در ادامه‪ ،‬با نمایش پیغام خاص عددی را برای حذف کردن خوانده‪ ،‬در ‪ y‬قرار میدهد‪ .‬در پایان‪ ،‬با فراخوانی‬
‫متد ‪ ،removeAll‬مقدار ‪ y‬را از آرایه ‪ x‬حذف میکند و با فراخوانی متد ‪ ،printArray‬عناصر باقیمانده ‪ x‬را نمایش‬
‫میدهد‪.‬‬
‫متد )(‪ ،readArray‬پارامترهای ‪( a‬آرایه که باید عدد در آن قرار بگیرد) و ‪( n‬تعداد عناصر آرایه) را دریافت‬
‫کرده‪ n ،‬عدد را خوانده‪ ،‬در آرایه قرار میدهد و عناصر آرایه را برمیگرداند‪.‬‬
‫متد )(‪ ،find‬آرایه & (آرایهای که باید مکان مقدار ‪ x‬در آن پیدا شود)‪( n ،‬تعداد عناصر آرایه ‪ )a‬و ‪ ( x‬مقدار‬
‫مورد جستوجو در آرایه ‪ )a‬را دریافت کرده‪ ،‬اگر ‪ x‬در آرایه ‪ a‬موجود باشد‪ ،‬مکان آن‪ ،‬وگرنه ‪ -1‬را برمیگرداند‪.‬‬
‫متد )(‪ ،removeAll‬پارامترهای آرایه ‪( a‬آرایهای که مقدار ‪ value‬باید از آن حذف شود)‪( n ،‬تعداد عناصر آرایه‬
‫که به صو ارجاع تعریفشده است چون با حذف عنصر یا عناصری ای مقدار تغییر میکند) و ‪( value‬مقداری که‬
‫باید از آرایه ‪ a‬حذف شود) را دریافت کرده‪ ،‬با فراخوانی متد )(‪ ،find‬مکان وقوع ‪ value‬در آرایه ‪ a‬را پیدا میکند و‬
‫در ‪ L‬قرار میدهد‪ .‬اگر ‪ L‬بزرگتر یا مساوی صفر باشد‪ ،‬عناصر آرایه را از مکان ‪ L‬به بعد یک واحد به سمت باال‬
‫شیفت میدهد تا ای عنصر حذف شود‪ .‬ای جستوجوی ‪ value‬در ‪ a‬تاز مانی ادامه مییابد که ‪ l>=0‬باشد‪ ،‬یعنی اگر‬
‫متد )(‪ ،find‬مقدار ‪ -1‬را برگرداند‪ ،‬یعنی ‪ value‬در ‪ a‬وجود ندارد و حلقه بینهایت خاتمه مییابد‪.‬‬
‫متد )(‪ ،printArray‬پارامترهای آرایه ‪ a‬و تعداد عناصر آن )‪ (n‬را دریافت کرده‪ ،‬عناصر آرایه را در خروجی‬
‫نمایش میدهد‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫تعداد عناصر آرایه را تعیین میکند‬ ‫ثابت ‪n‬‬ ‫‪main‬‬
‫متغیری که تعداد عناصر آرایه را تعیین میکند (چون مقدار ثابت ‪ n‬قابلتغییر‬ ‫‪m‬‬
‫نیست‪ ،‬ثابت ‪ n‬ابتدا متغیر ‪ m‬قرار میگیرد تا با حذف عنصر از آرایه ‪ m‬متغیر‬
‫باید)‪.‬‬
‫مقداری است که باید از آرایه ‪ x‬حذف شود‪.‬‬ ‫‪y‬‬
‫آرایهای که ‪ n‬عنصر را نگهداری میکند‪.‬‬ ‫‪x‬‬
‫آرایهای که اعداد خواندهشده را نگهداری میکند‬ ‫‪a‬‬ ‫‪readArray‬‬
‫تعداد عناصر آرایه ‪a‬‬ ‫‪n‬‬
‫شمارندهای که از صفر تا ‪ n-1‬میشمارد‪.‬‬ ‫‪i‬‬
‫آرایهای که مقدار ‪ x‬باید در آن جستوجو شود‬ ‫‪a‬‬ ‫‪find‬‬
‫تعداد عناصر آرایه ‪a‬‬ ‫‪n‬‬
‫مقداری است که باید در آرایه ‪ a‬جستوجو شود‪.‬‬ ‫‪x‬‬
‫شمارنده‬ ‫‪i‬‬
‫آرایهها و رشتهها‬ 322

‫ باید از آن حذف شود‬value ‫آرایهای که مقادیر‬ a removeAll


‫تعداد عناصر آرایه پس از حذف نیز تغییریافته آن به متد فراخوانی برگشت داده‬ &n
.‫میشود‬
.‫ حذف شود‬a ‫مقداری است که باید از آرایه‬ value
a ‫ در‬value ‫مکان وقوع‬ l
.‫شمارندهای که برای شیفت دادن عناصر آرایه به سمت باال به کار میرود‬ i
.‫آرایهای که باید مقادیر آن نمایش داد شود‬ a printArray
a ‫تعداد عناصر آرایه‬ n
‫ شمارش میکند‬n-1 ‫شمارندهای که از صفر تا‬ i
using System;
namespace p45
{
class Program
{
static void readArray(int[] x, int n)
{
int i;
Console.Write("Enter {0} numbers:", n);
string[] s = Console.ReadLine().Split(' ');
for (i = 0; i < n; i++)
x[i] = Convert.ToInt32(s[i]);
}
static int find(int[] a, int n, int x)
{
for (int i = 0; i < n; i++)
{
if (a[i] == x) return i;
}
return -1;
}
static void removeAll(int[] a, ref int n, int value)
{
for (; ; )
{
int l = find(a, n, value);
if (l >= 0)
{
for (int i = l; i < n-1; i++)
{
a[i] = a[i + 1];
}
a[n - 1] = 0;
n--;
}
else break;
}
}
static void printArray(int[] a, int n)
{
int i;
Console.Write("Array is:");
for (i = 0; i < n; i++)
Console.Write(" {0}", a[i]);
}
‫‪322‬‬ ‫فصل چهارم‬

‫)‪static void Main(string[] args‬‬


‫{‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪int n = Convert.ToInt32(Console.ReadLine‬‬
‫;‪int m = n‬‬
‫;]‪int[] x = new int[n‬‬
‫;)‪readArray(x, n‬‬
‫;)"‪Console.Write("Enter a value for remove:‬‬
‫; ;))(‪int y = Convert.ToInt32(Console.ReadLine‬‬
‫;)‪removeAll(x, ref m, y‬‬
‫;)‪printArray(x, m‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .46‬برنامهای که یک آرایه ‪ 4×4‬تعریف کرده‪ ،‬سس عناصر آرایه را خوانیده و حاصیلضیرب عناصیر غییر صیفر‬
‫محیطی آرایه را محاسبه میکند و نمایش میدهد‪ .‬عناصر محیطی آرایه‪ ،‬عناصری هسیتند کیه در سیطر اول‪ ،‬سیطر‬
‫آخر‪ ،‬ستون اول و ستون آخر آرایه میباشند‪.‬‬
‫متد )(‪ ،main‬ابتدا ثابتهای ‪ )4(m ،)4(n‬و آرایه ‪( a‬با ‪ n‬سطر و ‪ m‬سیتون) را تعرییف کیرده‪ ،‬بیا فراخیوانی متید‬
‫)(‪ ،readA2d‬عناصر آرایه دوبعدی را خوانده‪ ،‬سس بیا فراخیوانی )(‪ ،print2AD‬عناصیر آراییه دوبعیدی را نمیایش‬
‫میدهد‪ .‬در پایان‪ ،‬با فراخوانی متد )(‪ mulPer‬به همراه یک پیغام مناسب حاصلضرب عناصر محیطی غیر صفر آراییه‬
‫‪ a‬را نمایش میدهد‪.‬‬
‫متد )(‪ ،readA2D‬پارامترهای آرایه دوبعدی ‪ ،a‬تعداد سطرهای آن (‪ )n‬و تعداد ستونهیای آن (‪ )m‬را دریافیت‬
‫کرده‪ ،‬با استفاده از دو حلقه تودرتو‪ ،‬عناصر آرایه را میخواند و برمیگرداند‪.‬‬
‫متد )(‪ ،print2AD‬پارامترهای آرایه دوبعدی ‪ ،a‬تعداد سطرهیا آن (‪ )n‬و تعیداد سیتونهیا آن (‪ )m‬را بیهعنیوان‬
‫پارامتر دریافت کرده‪ ،‬با استفاده از دو حلقه تودرتو عناصر آرایه ‪ a‬را نمایش میدهد‪.‬‬
‫متد )(‪ ،mulPer‬ابتدا‪ ،‬پارامترهای آرایه دوبعدی ‪ ،a‬تعداد سطرها آن (‪ )n‬و تعداد ستونهای آن (‪ )m‬را دریافت‬
‫میکند و حاصلضرب (‪ )mul‬را تعریف کرده‪ ،‬برابر یک قرار میدهید‪ .‬سیس ‪ ،‬بیا اسیتفاده از حلقیهی بیا شیمارنده ‪j‬‬
‫حاصلضرب عناصر غیر صفر ستون اول )]‪ (a[0][j‬و ستون آخر )]‪ (a[0][m-1‬را محاسبه میکنید‪ ،‬در ‪ mul‬قیرار میی‪-‬‬
‫دهد‪ .‬در ادامه با استفاده از حلقه با شمارنده ‪ ،i‬حاصلضرب عناصر غیر صفر سیطر صیفر و سیطر آخیر (بیدون در نظیر‬
‫گرفت مقادیر ستون صفر و ستون آخر) را با ‪ mul‬ضرب کرده و در پایان‪ mul ،‬را برمیگرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫تعداد سطرهای آرایه (ثابت ‪)4‬‬ ‫ثابت ‪n‬‬ ‫‪main‬‬
‫تعداد ستونهای آرایه (ثابت ‪)4‬‬ ‫ثابت ‪m‬‬
‫آرایهای دوبعدی با ‪ n‬سطر و ‪ m‬ستون‬ ‫‪a‬‬
‫آرایهای با ‪ 4‬سطر و ‪ 4‬ستون که مقادیر خواندهشده را نگهداری میکند‬ ‫‪a‬‬ ‫‪readA2D‬‬
‫تعداد سطرهای آرایه‬ ‫‪n‬‬
‫تعداد ستونهای آرایه‬ ‫‪m‬‬
‫شمارنده سطر از صفر تا ‪n-1‬‬ ‫‪i‬‬
‫آرایهها و رشتهها‬ ‫‪326‬‬

‫شمارنده ستون از صفر تا ‪m-1‬‬ ‫‪j‬‬


‫آرایهای با ‪ n‬سطر و ‪ 4‬ستون که مقادیر آن باید نمایش داده شود‪.‬‬ ‫‪a‬‬ ‫‪printA2D‬‬
‫تعداد سطرهای آرایه‬ ‫‪n‬‬
‫تعداد ستونهای آرایه‬ ‫‪m‬‬
‫شمارنده سطر از صفر تا ‪n-1‬‬ ‫‪i‬‬
‫شمارنده ستون از صفر تا ‪m-1‬‬ ‫‪j‬‬
‫آرایهای با ‪ n‬سطر و ‪ 4‬ستون که باید حاصلضرب عناصر محیطی غیر صفر آن برگردانده شود‪.‬‬ ‫‪a‬‬ ‫‪mulPer‬‬
‫تعداد سطرها‬ ‫‪n‬‬
‫تعداد ستونها‬ ‫‪m‬‬
‫حاصلضرب عناصر محیطی غیر صفر‬ ‫‪mul‬‬
‫شمارنده ستون از صفر تا ‪ m-1‬میشمارد و عناصر غیر صفر ستون اول و ستون آخر را ضرب می‪-‬‬ ‫‪j‬‬
‫کند‬
‫شمارنده سطر که از یک تا ‪ n-2‬میشمارد و عناصر محیطی باقیمانده و غیر صفر را در‬ ‫‪i‬‬
‫ضرب کرده در ‪ mul‬قرار میدهد‪.‬‬
‫;‪using System‬‬
‫‪namespace p46‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void readA2D(int[,] a, int n, int m‬‬
‫{‬

‫)‪for (int i = 0; i < n; i++‬‬


‫{‬
‫‪Console.Write("Enter {0} number for row[{1}]:",‬‬
‫;)‪m, i‬‬
‫;)' '(‪string[] s = Console.ReadLine().Split‬‬
‫)‪for (int j = 0; j < m; j++‬‬
‫;)]‪a[i, j] = int.Parse(s[j‬‬
‫}‬
‫}‬
‫)‪static void printA2D(int[,] a, int n, int m‬‬
‫{‬
‫)‪for (int i = 0; i < n; i++‬‬
‫{‬
‫)‪for (int j = 0; j < m; j++‬‬
‫;)]‪Console.Write("{0}\t", a[i, j‬‬
‫;)(‪Console.WriteLine‬‬
‫}‬
‫}‬
‫)‪static double MulPer(int[,] a, int n, int m‬‬
‫{‬
‫;‪double mul = 1‬‬
‫)‪for (int j = 0; j < m; j++‬‬
‫{‬
‫;]‪if (a[0, j] != 0) mul = mul * a[0, j‬‬
‫;]‪if (a[n - 1, j] != 0) mul = mul * a[n - 1, j‬‬
‫}‬
‫)‪for (int i = 1; i < n - 1; i++‬‬
‫{‬
‫;]‪if (a[i, 0] != 0) mul = mul * a[i, 0‬‬
‫;]‪if (a[i, m - 1] != 0) mul = mul * a[i, m - 1‬‬
‫‪323‬‬ ‫فصل چهارم‬

‫}‬
‫;‪return mul‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪int n = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter m:‬‬
‫;))(‪int m = Convert.ToInt32(Console.ReadLine‬‬
‫;]‪int[,] a = new int[n, m‬‬
‫;)‪readA2D(a, n, m‬‬
‫;)‪printA2D(a, n, m‬‬
‫;))‪Console.Write("Multiply is {0}", MulPer(a, n, m‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .47‬برنامهای که یک آرایه ‪ 5‬در ‪ 6‬تعریف کرده‪ ،‬عناصر آن را از ورودی میخواند و سس حاصیلضیرب عناصیر‬
‫غیر محیطی که صفر نیستند را محاسبه میکند و نمایش میدهد‪ .‬عناصر غیر محیطی عناصیری هسیتند کیه در سیطر‬
‫اول‪ ،‬سطر آخر‪ ،‬ستون اول و ستون آخر نباشند‪.‬‬
‫متد )(‪ ،main‬ابتدا ثابتهای ‪ n‬ابتدا سطر با مقدار (‪( m ،)5‬تعداد ستونهای با مقدار ‪ )6‬و آرایه ‪ a‬بیا ‪ n‬سیطر و ‪m‬‬
‫ستون را تعریف کرده‪ ،‬بیا فراخیوانی متید )(‪ ،readA2D‬عناصیر آراییه ‪ a‬را مییخوانید‪ .‬سیس ‪ ،‬بیا فراخیوانی متید‬
‫)(‪ ،printA2D‬عناصر آرایه دوبعدی را نمایش میدهد و در پایان‪ ،‬بیا فراخیوانی متید )(‪ mulNotper‬حاصیلضیرب‬
‫عناصر غیر محیطی و مخالف صفر را با پیغام مناسب نمایش میدهد‪.‬‬
‫متد )(‪ ،readA2D‬پارامترهای آرایه دوبعدی ‪ ،a‬تعداد سطرهای آن (‪ )n‬و تعداد ستونهیای آن (‪ )m‬را دریافیت‬
‫کرده‪ ،‬سس با استفاده از حلقههای تودرتو عناصر آرایه را خوانده و در ‪ a‬قرار میدهد‪.‬‬
‫متد )(‪ ،printA2D‬پارامترهای آرایه دوبعدی ‪ ،a‬تعداد سطرهای آن (‪ )n‬و تعداد ستونهیای آن (‪ )m‬را دریافیت‬
‫کرده‪ ،‬سس با استفاده از حلقههای تودرتو عناصر آرایه دوبعدی را پیمایش مینماید و نمایش میدهد‪.‬‬
‫متد )(‪ ،mulNotper‬پارامترهای آرایه دوبعیدی )‪ ،(a‬تعیداد سیطرهایی آن (‪ )n‬و تعیداد سیتونهیای آن (‪ )m‬را‬
‫دریافت کرده‪ ،‬سس ‪ mul‬را برابر یک قرار میدهد (حاصلضرب عناصر مخالف صفر غیر محیطی را ییک قیرار میی‪-‬‬
‫دهد) و در ادامه با حلقههای تودرتو مقادیر عناصر غیر صفر به جزء سطرهای اول‪ ،‬آخر و سیتونهیای اول و آخیر را‬
‫باهم ضرب کرده‪ ،‬برمیگرداند (چون‪ i ،‬از یک شروعشده و تا ‪ n-2‬ادامه مییابد‪ .‬عناصیر سیطر اول و سیطر آخیر در‬
‫ضرب شرکت داده نمیشود و همی طور‪ ،‬چون ‪ j‬از یک شروع میشود و تا ‪ m-2‬ادامه مییابد نیز عناصر ستون اول و‬
‫ستون آخر در ضرب کردن شرکت داده نمیشوند)‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫تعداد سطرهای آرایه دوبعدی (مقدار ‪)5‬‬ ‫ثابت ‪n‬‬ ‫‪main‬‬
‫آرایهها و رشتهها‬ ‫‪324‬‬

‫تعداد ستونهای آرایه دوبعدی (مقدار ‪)0‬‬ ‫ثابت ‪m‬‬


‫آرایهای با ‪ 5‬سطر (‪ )n‬و ‪ 0‬ستون (‪)m‬‬ ‫‪a‬‬
‫آرایه دوبعدی با ‪ n‬سطر ‪ 0‬ستون که باید دادههای خواندهشده را نگهداری کند‪.‬‬ ‫‪a‬‬ ‫‪readA2D‬‬
‫تعداد سطرهای آرایه دوبعدی‬ ‫‪n‬‬
‫تعداد ستونهای آرایه دوبعدی‬ ‫‪m‬‬
‫شمارنده سطر که از صفر تا ‪ n-2‬میشمارد‬ ‫‪i‬‬
‫شمارنده ستون که از صفر تا ‪ m-2‬میشمارد‬ ‫‪j‬‬
‫آرایه دوبعدی با ‪ n‬سطر ‪ 0‬ستون که مقادیر عناصر آن باید چاپ شود‬ ‫‪a‬‬ ‫‪printA2D‬‬
‫تعداد سطرهای آرایه دوبعدی‬ ‫‪n‬‬
‫تعداد ستونهای آرایه دوبعدی‬ ‫‪m‬‬
‫شمارنده سطر که از صفر تا ‪ n-2‬میشمارد‬ ‫‪i‬‬
‫شمارنده ستون که از صفر تا ‪ m-2‬میشمارد‬ ‫‪j‬‬
‫آرایه دوبعدی با ‪ n‬سطر ‪ 0‬ستون که حاصلضرب عناصر غیر محیطی صفر آن باید‬ ‫‪a‬‬ ‫‪mulNotper‬‬
‫محاسبه شود‪.‬‬
‫تعداد سطرهای آرایه دوبعدی‬ ‫‪n‬‬
‫تعداد ستونهای آرایه دوبعدی‬ ‫‪m‬‬
‫حاصلضرب عناصر مخالف صفر غیر محیطی‬ ‫‪mul‬‬
‫شمارنده سطر که از ‪ 0‬تا ‪ n-2‬میشمارد تا عناصر سطر اول و سطر آخر (یعنی‬ ‫‪i‬‬
‫عناصر سطرهای که روی محیط قرار دارند) را در ضرب شرکت ندهد‪.‬‬
‫شمارنده ستون که از ‪ 0‬تا ‪ m-2‬میشمارد تا عناصر ستون اول و ستون آخر (یعنی‬ ‫‪j‬‬
‫عناصر ستونهای که در محیط قرار دارند) را در ضرب شرکت ندهد‪.‬‬
‫;‪using System‬‬
‫‪namespace p47‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void readA2D(int[,] a, int n, int m‬‬
‫{‬

‫)‪for (int i = 0; i < n; i++‬‬


‫{‬
‫;)‪Console.Write("Enter {0} number for row[{1}]:",m,i‬‬
‫;)' '(‪string[] s = Console.ReadLine().Split‬‬
‫)‪for (int j = 0; j < m; j++‬‬
‫;)]‪a[i, j] = int.Parse(s[j‬‬
‫}‬
‫}‬
‫)‪static void printA2D(int[,] a, int n, int m‬‬
‫{‬
‫)‪for (int i = 0; i < n; i++‬‬
‫{‬
‫)‪for (int j = 0; j < m; j++‬‬
‫;)]‪Console.Write("{0}\t", a[i, j‬‬
‫;)(‪Console.WriteLine‬‬
‫}‬
‫}‬
‫‪322‬‬ ‫فصل چهارم‬

‫)‪static double mulNotPer(int[,] a, int n, int m‬‬


‫{‬
‫;‪double mul = 1‬‬
‫)‪for (int i = 1; i <= n - 2; i++‬‬
‫)‪for (int j = 1; j <= m - 2; j++‬‬
‫{‬
‫;]‪if (a[i, j] != 0) mul = mul * a[i, j‬‬
‫}‬
‫;‪return mul‬‬
‫}‬

‫)‪static void Main(string[] args‬‬


‫{‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪int n = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter m:‬‬
‫;))(‪int m = Convert.ToInt32(Console.ReadLine‬‬
‫;]‪int[,] a = new int[n, m‬‬
‫;)‪readA2D(a, n, m‬‬
‫;)‪printA2D(a, n, m‬‬
‫;))‪Console.Write("Multiply is {0}", mulNotPer(a, n, m‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .40‬برنامهای که یک ماتری ‪ 4 × 4‬را میخواند‪ .‬اگر مجموع عناصر روی قطر اصلی و فرعی برابر مجموع عناصر‬
‫محیطی ماتری باشد‪ ،‬برنامه ”‪ ،“Yes‬وگرنه ”‪ “No‬را نمایش میدهد‪ .‬عناصری روی قطر اصلی قرار دارنید‪ ،‬کیه ‪i‬‬
‫‪ == j‬باشد (یعنی‪ ،‬شماره سطر برابر شماره ستون باشد) و عناصری روی قطر فرعی قیرار دارنید کیه ‪i + j == n – 1‬‬
‫باشد (یعنی‪ ،‬مجموع شماره سطر و شماره ستون برابر با تعداد سطرها منتهی یک باشد‪ .‬اما‪ ،‬عناصیر سیطر اول‪ ،‬سیطر‬
‫آخر‪ ،‬ستون اول و ستون آخر عناصر محیطی نام دارند‪.‬‬
‫‪ a‬را تعریف کرده‪ ،‬با فراخوانی متید‬ ‫متد )(‪ ،main‬ابتدا ثابتهای ‪( n‬تعداد سطرها)‪( m ،‬تعداد ستونها) و ماتری‬
‫‪ a‬را‬ ‫با فراخوانی متید )(‪ printA2D‬عناصیر میاتری‬ ‫را خواند‪ ،‬در ‪ a‬قرار میدهد‪ .‬سس‬ ‫)(‪ readA2D‬عناصر ماتری‬
‫میکند که آیا مجموع قطر اصلی و فرعی برابر با مجمیوع‬ ‫نمایش میدهد‪ .‬در پایان‪ ،‬با فراخوانی متد )(‪ Equal‬تعیی‬
‫‪ a‬است یا نه? اگر نتیجه ‪ true‬باشد‪ ،“Yes” ،‬وگرنه ”‪ “No‬را نمایش میدهد‪.‬‬ ‫عناصر محیطی ماتری‬
‫متد )(‪ ،readA2D‬پارامترهای ‪( a‬آرایه دوبعدی )‪( n ،‬تعداد سطرها) و ‪( m‬تعیداد سیتونهیا) را دریافیت کیرده‪،‬‬
‫‪ a‬قرار میدهد‪.‬‬ ‫عناصر آرایه خوانده‪ ،‬در ماتری‬
‫آرایهها و رشتهها‬ ‫‪322‬‬

‫متد )(‪ ،printA2D‬پارامترهای ‪( a‬آرایه دوبعدی )‪( n ،‬تعداد سطرها) و ‪( m‬تعیداد سیتونهیا) را دریافیت کیرده‪،‬‬
‫عناصر آرایه ‪ a‬را نمایش میدهد‪.‬‬
‫متد )(‪ ،sums‬پارامترهای آرایه دوبعدی (‪ ،)a‬تعداد سطرها(‪ )n‬و تعداد ستونها (‪ )m‬را دریافت کرده‪ ،‬ابتیدا ‪sum‬‬
‫(مجموع عناصر قطر اصلی و فرعی) را برابر صفر قرار میدهد و عناصر آرایه را پیمایش کرده‪ ،‬عناصر قطر اصلی ( ==‪i‬‬
‫‪ )j‬و عناصر روی قطر فرعی (‪ )i+ j == n – 1‬را با ‪ sum‬جمع مینماید و مقدار ‪ sum‬را برمیگرداند‪.‬‬
‫متد )(‪ ،sumPer‬پارامترهای آرایه دوبعدی (‪ ،)a‬تعداد سطرها (‪ )n‬و تعداد ستونها (‪ )m‬را دریافت کیرده‪ ،‬ابتیدا‬
‫ابتدا عناصر ستون اول و آخر را با ‪ sum‬جمع میکنید‬ ‫‪( sum‬مجموع عناصر محیطی) را برابر صفر قرار میدهد‪ .‬سس‬
‫(شمارنده ‪ )j‬و در پایان عناصر سطر اول (به جزء اولی عنصر) و عناصر سطر آخر (بهجز آخری عنصر) را با ‪ sum‬جمیع‬
‫کرده‪ sum ،‬را برمیگرداند‬
‫متد )(‪ ،Equal‬پارامترهای آرایه دوبعدی (‪ ،)a‬تعداد سطرها (‪ )n‬و تعداد ستونها (‪ )m‬را دریافیت کیرده‪ ،‬مقیدار‬
‫برگشتی متدها )(‪ sumPer‬و )(‪ sums‬را باهم مقایسه مینماید‪ ،‬برمیگرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫تعداد سطرهای ماتریس دوبعدی (ثابت ‪)4‬‬ ‫ثابت ‪n‬‬ ‫‪main‬‬
‫تعداد ستونهای ماتریس دوبعدی (ثابت ‪)4‬‬ ‫ثابت‪m‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ m‬ستون‬ ‫‪a‬‬
‫ماتریس دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که دادههای خواندهشده را نگهداری میکند‪.‬‬ ‫‪a‬‬ ‫‪readA2D‬‬

‫تعداد سطرهای ماتریس دوبعدی ‪a‬‬ ‫‪n‬‬


‫تعداد ستونهای ماتریس دوبعدی ‪a‬‬ ‫‪m‬‬
‫شمارنده ستون که از صفر تا ‪ m-1‬را میشمارد‪.‬‬ ‫‪j‬‬
‫شمارنده سطر که از صفر تا ‪ n-1‬را میشمارد‪.‬‬ ‫‪i‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که عناصر آن باید نمایش داده شوند‬ ‫‪a‬‬
‫تعداد سطرهای آرایه دوبعدی ‪a‬‬ ‫‪n‬‬
‫تعداد ستونهای آرایه دوبعدی ‪a‬‬ ‫‪m‬‬ ‫‪printA2D‬‬
‫شمارنده ستون که از صفر تا ‪ m-1‬را شمارش میکند‬ ‫‪j‬‬
‫شمارنده سطر که از صفر تا ‪ n-1‬را شمار میکند‬ ‫‪i‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که باید مجموع عناصر قطر اصلی و فرعی آن باید‬ ‫‪a‬‬
‫محاسبه شود‬
‫تعداد سطرهای ماتریس دوبعدی ‪a‬‬ ‫‪n‬‬
‫تعداد ستونهای ماتریس دوبعدی ‪a‬‬ ‫‪m‬‬ ‫‪sums‬‬
‫مجموع عناصر قطر اصلی و فرعی‬ ‫‪sum‬‬
‫شمارنده ستون که از صفر تا ‪ m-1‬را میشمارد‪.‬‬ ‫‪j‬‬
‫شمارنده سطر که از صفر تا ‪ n-1‬را شمار میکند‪.‬‬ ‫‪i‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که باید مجموع عناصر محیطی آن حساب شود‬ ‫‪a‬‬
‫تعداد سطرهای ماتریس دوبعدی ‪a‬‬ ‫‪n‬‬
‫‪sumPer‬‬
‫تعداد ستونهای ماتریس دوبعدی ‪a‬‬ ‫‪m‬‬
‫مجموع عناصر محیطی ماتریس‬ ‫‪sum‬‬
322 ‫فصل چهارم‬

‫شمارنده ستونهای عناصر محیطی‬ j


‫ تا‬2 ‫ از‬i ‫ چون‬.‫شمارنده سطرهای عناصر محیطی که سطر اول و سطر آخر را نمیشمارد‬ i
.‫ را میشمارد‬n-2
‫آرایه دوبعدی که باید تعیین شود آیا مجموع عناصر محیطی آن برابر با مجموع عناصر‬ a
.‫قطر اصلی و فرعی آن است یا نه‬
Equal()
a ‫تعداد سطرهای ماتریس دوبعدی‬ n
a ‫تعداد ستونهای ماتریس دوبعدی‬ m
using System;
namespace p48
{
class Program
{
static void readA2D(int[,] a, int n, int m)
{

for (int i = 0; i < n; i++)


{
Console.Write("Enter {0} number for row[{1}]:",m, i);
string[] s = Console.ReadLine().Split(' ');
for (int j = 0; j < m; j++)
a[i, j] = int.Parse(s[j]);
}
}
static void printA2D(int[,] a, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
Console.Write("{0}\t", a[i, j]);
Console.WriteLine();
}
}
static double sumMS(int[,] a, int n, int m)
{
double sum = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
if (i == j || i + j == n - 1)
sum = sum + a[i, j];
}
return sum;
}
static int sumPer(int[,] a, int n, int m)
{
int sum = 0;
for (int j = 0; j < m; j++)
{
sum = sum + a[0, j];
sum = sum + a[n - 1, j];
}
for (int i = 1; i < n - 1; i++)
{
sum = sum + a[i, 0];
sum = sum + a[i, m - 1];
‫آرایهها و رشتهها‬ ‫‪322‬‬

‫}‬
‫;‪return sum‬‬
‫}‬
‫)‪static bool Equal(int[,] a, int n, int m‬‬
‫{‬
‫;))‪return (sumPer(a, n, m) == sumMS(a, n, m‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪int n = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter m:‬‬
‫;))(‪int m = Convert.ToInt32(Console.ReadLine‬‬
‫;]‪int[,] a = new int[n, m‬‬
‫;)‪readA2D(a, n, m‬‬
‫;)‪printA2D(a, n, m‬‬
‫)‪if (Equal(a, n, m) == true‬‬
‫;)"‪Console.Write("Yes‬‬
‫‪else‬‬
‫;)"‪Console.Write("No‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫تکراری باشد (بیش از یکبار تکرار‬ ‫‪ 4×4‬را خوانده‪ ،‬اگر حداقل یک عنصر ماتری‬ ‫برنامهای که یک ماتری‬ ‫‪.49‬‬
‫”‪ “No‬را نمایش میدهد‪.‬‬ ‫”‪ “Yes‬وگرنه‪ ،‬عبار‬ ‫شده باشد)‪ ،‬عبار‬
‫متد )(‪ ،main‬ابتدا ثابتهای ‪( n‬تعداد سطرها)‪( m ،‬تعداد ستونها) و آرایه دوبعدی ‪ n  m‬را تعریف مییکنید‪.‬‬
‫با فراخوانی متد )(‪ ،readA2D‬عناصر آرایه را میخواند و در ‪ a‬قیرار مییدهید‪ .‬در ادامیه‪ ،‬بیا فراخیوانی متید‬ ‫سس‬
‫)(‪ printA2D‬عناصر آرایه را نمایش میدهد‪ .‬در پایان‪ ،‬با فراخوانی متد )(‪( “Yes” duplicate‬اگر نتیجیه فراخیوانی‬
‫ای متد ‪ true‬باشد) یا ”‪( “No‬وگرنه) را نمایش میدهد‪.‬‬
‫متد )(‪ ،readA2D‬پارامترهای ‪( a‬آرایه دوبعدی )‪( n ،‬تعداد سطرها) و ‪( m‬تعیداد سیتونهیا) را دریافیت کیرده‪،‬‬
‫‪ a‬قرار میدهد‪.‬‬ ‫عناصر آرایه خوانده‪ ،‬در ماتری‬
‫متد )(‪ ،printA2D‬پارامترهای ‪( a‬آرایه دوبعدی )‪( n ،‬تعداد سطرها) و ‪( m‬تعیداد سیتونهیا) را دریافیت کیرده‪،‬‬
‫عناصر آرایه ‪ a‬را نمایش میدهد‪.‬‬
‫‪322‬‬ ‫فصل چهارم‬

‫متد )(‪ ،count‬آرایه دوبعدی (‪ ،)a‬تعداد سطرهای آن (‪ ،)n‬تعداد ستونهای آن (‪ )m‬و عنصیری کیه بایید تعیداد‬
‫تکرار آن در آرایه ‪ )x( a‬برگردانده شود‪ ،‬را بهعنوان پارامتر دریافت کرده‪ ،‬تعداد تکرار ‪ x‬در آرایه ‪ a‬را برمیگرداند‪.‬‬
‫متد )(‪ ،duplicate‬آرایه دوبعدی (‪ ،)a‬تعداد سطرهای آن (‪ )n‬و تعداد سیتونهیای آن (‪ )m‬را بیهعنیوان پیارامتر‬
‫دریافت میکند‪ ،‬اگر هر ییک از عناصیر آن تکیرار آن بییش از ییکبیار تکیرار شیده باشیند‪ ،true ،‬وگرنیه ‪ false‬را‬
‫زیر فراخوانی میکند‪:‬‬ ‫برمیگرداند‪ .‬برای تعیی تعداد تکرار هر عنصر آرایه متد ‪ count‬را بهصور‬
‫‪count(a, n, m, a[i][j]) > 1‬‬
‫ای پارامترها آرایه ‪( n ،a‬تعداد سطرهای آرایه)‪ m ،‬تعداد ستونهای آراییه) و ]‪( a[i][j‬مقیداری اسیت کیه تعیداد و‬
‫تکرار آن باید تعیی شود)‪ ،‬هستند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫تعداد سطرهای آرایه ‪( a‬ثابت ‪)4‬‬ ‫ثابت ‪n‬‬ ‫‪main‬‬
‫تعداد ستونهای آرایه ‪( a‬ثابت ‪)4‬‬ ‫ثابت ‪m‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ m‬ستون‬ ‫‪X‬‬
‫ماتریس دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که دادههای خواندهشده را نگهداری میکند‪.‬‬ ‫‪a‬‬ ‫‪readA2D‬‬
‫تعداد سطرهای ماتریس دوبعدی ‪a‬‬ ‫‪n‬‬
‫تعداد ستونهای ماتریس دوبعدی ‪a‬‬ ‫‪m‬‬
‫شمارنده ستون که از صفر تا ‪ m-1‬را میشمارد‪.‬‬ ‫‪j‬‬
‫شمارنده سطر که از صفر تا ‪ n-1‬را میشمارد‪.‬‬ ‫‪i‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که عناصر آن باید نمایش داده شوند‬ ‫‪a‬‬
‫تعداد سطرهای آرایه دوبعدی ‪a‬‬ ‫‪n‬‬
‫تعداد ستونهای آرایه دوبعدی ‪a‬‬ ‫‪m‬‬ ‫‪printA2D‬‬
‫شمارنده ستون که از صفر تا ‪ m-1‬را شمارش میکند‬ ‫‪j‬‬
‫شمارنده سطر که از صفر تا ‪ n-1‬را شمارش میکند‬ ‫‪i‬‬
‫آرایه با ‪ n‬سطر و ‪ 4‬ستون‬ ‫‪a‬‬
‫تعداد سطرهای آرایه دوبعدی ‪a‬‬ ‫‪n‬‬
‫تعداد ستونهای آرایه دوبعدی ‪a‬‬ ‫‪m‬‬
‫‪count‬‬
‫مقداری که باید تعداد تکرار آن برگردانده شود‬ ‫‪x‬‬
‫شمارنده ستون که از صفر تا ‪ m-1‬را میشمارد‪.‬‬ ‫‪j‬‬
‫شمارنده سطر که از صفر تا ‪ n-1‬را شمارش میکند‪.‬‬ ‫‪i‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که باید تعداد تکرار هر عنصر برگردانده شود‬ ‫‪a‬‬
‫تعداد سطرهای ماتریس دوبعدی ‪a‬‬ ‫‪n‬‬
‫تعداد ستونهای ماتریس دوبعدی ‪a‬‬ ‫‪m‬‬ ‫‪duplicate‬‬
‫شمارنده ستون که از صفر تا ‪ m-1‬را شمارش میکند‬ ‫‪j‬‬
‫شمارنده سطر که از صفر تا ‪ n-1‬را شمار میکند‪.‬‬ ‫‪i‬‬
‫;‪using System‬‬
‫‪namespace p49‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void readA2D(int[,] a, int n, int m‬‬
‫آرایهها و رشتهها‬ 322

for (int i = 0; i < n; i++)


{
Console.Write("Enter {0} number for row[{1}]:", m, i);
string[] s = Console.ReadLine().Split(' ');
for (int j = 0; j < m; j++)
a[i, j] = int.Parse(s[j]);
}
}
static void printA2D(int[,] a, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
Console.Write("{0}\t", a[i, j]);
Console.WriteLine();
}
}
static int count(int[,] a, int n, int m, int x)
{
int c = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
if (a[i, j] == x) c++;
}
return c;
}
static bool duplicate(int[,] a, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
if (count(a, n, m, a[i, j]) > 1) return true;
}
return false;
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter m:");
int m = Convert.ToInt32(Console.ReadLine());
int[,] x = new int[n, m];
readA2D(x, n, m);
printA2D(x, n, m);
if (duplicate(x, n, m) == true)
Console.Write("Yes");
else
Console.Write("No");
Console.ReadKey();
}
}
}
‫‪322‬‬ ‫فصل چهارم‬

‫‪ 4 × 4‬را خوانده‪ ،‬اگر همه عناصر آرایه برابر باشند‪ ،“Yes” ،‬وگرنه ”‪ “No‬را نمایش‬ ‫‪ .54‬برنامهای که یک ماتری‬
‫میدهد‪.‬‬
‫متد )(‪ ،main‬ابتدا ثابتهای ‪ n‬و ‪( m‬تعداد ستونها) را با مقادیر ‪ ،4‬آرایه ‪ x‬با ‪ n‬سطر و ‪ m‬ستون تعریف میکنید‪،‬‬
‫سس با فراخوانی متد )(‪ ،readA2D‬عناصر آرایه دوبعدی را خوانده و در ادامه با فراخوانی متد )(‪ printA2D‬عناصر‬
‫آرایه دوبعدی را نمایش میدهد‪ .‬در پایان‪ ،‬چنانچه نتیجه فراخیوانی متید )(‪ EqualAllElements‬برابیر ‪ true‬باشید‪،‬‬
‫”‪ ،“Yes‬وگرنه ”‪ “No‬را نمایش میدهد‪.‬‬
‫متد )(‪ ،readA2D‬پارامترهای ‪( a‬آرایه دوبعدی )‪( n ،‬تعداد سطرها) و ‪( m‬تعیداد سیتونهیا) را دریافیت کیرده‪،‬‬
‫عناصر آرایه را خوانده‪ ،‬در ماتری ‪ a‬قرار میدهد‪.‬‬
‫متد )(‪ ،printA2D‬پارامترهای ‪( a‬آرایه دوبعدی )‪( n ،‬تعداد سطرها) و ‪( m‬تعیداد سیتونهیا) را دریافیت کیرده‪،‬‬
‫عناصر آرایه ‪ a‬را نمایش میدهد‪.‬‬
‫متد )(‪ ،EqualAllElements‬آرایه دوبعدی (‪ ،)a‬تعداد سطرها (‪ )n‬و تعداد ستونهیای آن (‪ )m‬را بیهعنیوان پیارامتر‬
‫دریافت کرده‪ ،‬اگر یکی از عناصر آرایه برابر عنصر ]‪ a[0][0‬نباشد‪ ،‬یعنی‪ ،‬همه عناصر آرایه برابر نیسیتند‪ ،‬متید ‪ false‬را‬
‫برمیگرداند‪ .‬اما‪ ،‬اگر حلقه خاتمه یابد‪ ،‬یعنی‪ ،‬تمام عناصر آرایه برابرند و متد ‪ true‬را برمیگرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫تعداد سطرهای آرایه ‪( a‬ثابت ‪)4‬‬ ‫ثابت ‪n‬‬ ‫‪main‬‬
‫تعداد ستونهای آرایه ‪( a‬ثابت ‪)4‬‬ ‫ثابت ‪m‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ m‬ستون‬ ‫‪a‬‬
‫ماتریس دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که دادههای خواندهشده را نگهداری‬ ‫‪a‬‬ ‫‪readA2D‬‬
‫میکند‪.‬‬
‫تعداد سطرهای ماتریس دوبعدی ‪a‬‬ ‫‪n‬‬
‫تعداد ستونهای ماتریس دوبعدی ‪a‬‬ ‫‪m‬‬
‫شمارنده ستون که از صفر تا ‪ m-1‬را میشمارد‪.‬‬ ‫‪j‬‬
‫شمارنده سطر که از صفر تا ‪ n-1‬را میشمارد‪.‬‬ ‫‪i‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که عناصر آن باید نمایش داده شوند‪.‬‬ ‫‪a‬‬
‫تعداد سطرهای آرایه دوبعدی ‪a‬‬ ‫‪n‬‬
‫‪printA2D‬‬
‫تعداد ستونهای آرایه دوبعدی ‪a‬‬ ‫‪m‬‬
‫شمارنده ستون که از صفر تا ‪ m-1‬را شمارش میکند‬ ‫‪j‬‬
‫آرایهها و رشتهها‬ 326

‫ را شمارش میکند‬n-1 ‫شمارنده سطر که از صفر تا‬ i


‫ ستون که باید تعیین شود آیا تمام عناصر آن‬4 ‫ سطر و‬n ‫آرایه دوبعدی با‬ a
.‫برابرند یا خیر‬
a ‫تعداد سطرهای آرایه‬ n
EqualAllElements
a ‫تعداد ستونهای آرایه‬ m
.‫ را میشمارد‬m-1 ‫شمارنده ستون که از صفر تا‬ j
.‫ را شمار میکند‬n-1 ‫شمارنده سطر که از صفر تا‬ i
using System;
namespace p50
{
class Program
{
static void readA2D(int[,] a, int n, int m)
{

for (int i = 0; i < n; i++)


{
Console.Write("Enter {0} number for row[{1}]:", m, i);
string[] s = Console.ReadLine().Split(' ');
for (int j = 0; j < m; j++)
a[i, j] = int.Parse(s[j]);
}
}
static void printA2D(int[,] a, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
Console.Write("{0}\t", a[i, j]);
Console.WriteLine();
}
}
static bool EqualAllElements(int[,] a, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
if (a[i, j] != a[0, 0]) return false;
}
return true;
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter m:");
int m = Convert.ToInt32(Console.ReadLine());
int[,] x = new int[n, m];
readA2D(x, n, m);
printA2D(x, n, m);
if (EqualAllElements(x, n, m) == true)
Console.Write("Yes");
else
Console.Write("No");
Console.ReadKey();
‫‪323‬‬ ‫فصل چهارم‬

‫}‬
‫}‬
‫}‬

‫‪ .51‬برنامهای که یک ماتری ‪ 4 × 4‬را خوانده‪ ،‬اگر تمام عناصر غیر از عناصر محیطی آن باهم برابر باشند‪“Yes” ،‬‬
‫‪ ،‬وگرنه ”‪ “No‬را نمایش میدهد‪.‬‬
‫متد )(‪ ،main‬ابتدا ثابتهای ‪ n‬و ‪ m‬را با مقادیر ‪ 4‬و آرایه ‪ x‬را تعریف کرده‪ ،‬سس با فراخوانی متد )(‪،readA2D‬‬
‫عناصر آرایه را میخواند و در ادامه با فراخوانی متد )(‪ printA2D‬عناصیر آراییه را نمیایش مییدهید‪ .‬در پاییان‪ ،‬بیا‬
‫فراخوانی متد )(‪ ،EqualAllNotper‬عبار ”‪ “Yes‬یا ”‪ “No‬را نمایش میدهد‪.‬‬
‫متد )(‪ ،readA2D‬پارامترهای ‪( a‬آرایه دوبعدی )‪( n ،‬تعداد سطرها) و ‪( m‬تعیداد سیتونهیا) را دریافیت کیرده‪،‬‬
‫عناصر آرایه خوانده‪ ،‬در ماتری ‪ a‬قرار میدهد‪.‬‬
‫متد )(‪ ،printA2D‬پارامترهای ‪( a‬آرایه دوبعدی )‪( n ،‬تعداد سطرها) و ‪( m‬تعیداد سیتونهیا) را دریافیت کیرده‪،‬‬
‫عناصر آرایه ‪ a‬را نمایش میدهد‪.‬‬
‫متد )(‪ ،EqualAllNotper‬آرایه دوبعدی (‪ ،)a‬تعداد سطرهای آن (‪ )n‬و تعداد ستونهای آن (‪ )m‬را بهعنوان پیارامتر‬
‫دریافت کرده‪ ،‬اگر همه عناصر غیر از عناصر محیطی برابر باشند‪ ،true ،‬وگرنه ‪ false‬را برمیگرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫تعداد سطرهای آرایه دوبعدی (ثابت ‪)4‬‬ ‫ثابت ‪n‬‬ ‫‪Main‬‬
‫تعداد ستونهای آرایه دوبعدی (ثابت ‪)4‬‬ ‫ثابت ‪m‬‬
‫آرایه دوبعدی ‪n m‬‬ ‫‪a‬‬
‫ماتریس دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که دادههای خواندهشده را نگهداری میکند‪.‬‬ ‫‪a‬‬ ‫‪readA2D‬‬
‫تعداد سطرهای ماتریس دوبعدی ‪a‬‬ ‫‪n‬‬
‫تعداد ستونهای ماتریس دوبعدی ‪a‬‬ ‫‪m‬‬
‫شمارنده ستون که از صفر تا ‪ m-1‬را میشمارد‪.‬‬ ‫‪j‬‬
‫شمارنده سطر که از صفر تا ‪ n-1‬را میشمارد‪.‬‬ ‫‪i‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که عناصر آن باید نمایش داده شوند‪.‬‬ ‫‪a‬‬
‫تعداد سطرهای آرایه دوبعدی ‪a‬‬ ‫‪n‬‬
‫تعداد ستونهای آرایه دوبعدی ‪a‬‬ ‫‪m‬‬ ‫‪printA2D‬‬
‫شمارنده ستون که از صفر تا ‪ m-1‬را شمارش میکند‪.‬‬ ‫‪j‬‬
‫شمارنده سطر که از صفر تا ‪ n-1‬را شمارش میکند‪.‬‬ ‫‪i‬‬
‫آرایه دوبعدی با ‪ 4‬سطر و ‪ 4‬ستون‬ ‫‪a‬‬
‫‪EqualAllNotper‬‬
‫تعداد سطرهای آرایه دوبعدی ‪n‬‬ ‫‪n‬‬
‫آرایهها و رشتهها‬ 324

m ‫تعداد ستونهای آرایه دوبعدی‬ m


.‫شمارنده ستون که از ستون دوم تا ستون یکی مانده به آخر را میشمارد‬ j
.‫شمارنده سطر که از سطر دوم تا سطر یکی مانده به آخر را شمارش میکند‬ i
using System;
namespace p51
{
class Program
{
static void readA2D(int[,] a, int n, int m)
{

for (int i = 0; i < n; i++)


{
Console.Write("Enter {0} number for row[{1}]:",m, i);
string[] s = Console.ReadLine().Split(' ');
for (int j = 0; j < m; j++)
a[i, j] = int.Parse(s[j]);
}
}
static void printA2D(int[,] a, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
Console.Write("{0}\t", a[i, j]);
Console.WriteLine();
}
}
static bool EqualAllNotPer(int[,] a, int n, int m)
{
for (int i = 1; i < n - 1; i++)
for (int j = 1; j < m - 1; j++)
if (a[1, 1] != a[i, j]) return false;
return true;
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter m:");
int m = Convert.ToInt32(Console.ReadLine());
int[,] x = new int[n, m];
readA2D(x, n, m);
printA2D(x, n, m);
if (EqualAllNotPer(x, n, m) == true)
Console.Write("Yes");
else
Console.Write("No");
Console.ReadKey();
}
}
}
‫‪322‬‬ ‫فصل چهارم‬

‫صعودی مرتب باشند‪ ،“Yes” ،‬وگرنه‬ ‫‪ .52‬برنامهای که عناصر آرایه ‪ 4 × 4‬را خوانده‪ ،‬اگر عناصر هر سطر بهصور‬
‫”‪ “No‬را برمیگرداند‪.‬‬
‫متد )(‪ ،main‬ثابتهای ‪ n‬و‪( m‬تعداد سطرها و ستونها ) را با مقیادیر ‪ 4‬و آراییه ‪ a‬بیا ‪ n‬سیطر ‪ m‬سیتون تعرییف‬
‫میکند‪ ،‬سس با فراخوانی متد )(‪ ،readA2D‬عناصر آرایه ‪ a‬را میخواند و در ادامه‪ ،‬با فراخیوانی متید )(‪printA2D‬‬
‫عناصر آرایه را نمایش میدهد‪ .‬در پایان‪ ،‬چنانچه نتیجه فراخوانی متد )(‪ ،isSortedRows‬مقدار ‪ true‬باشید‪ ،‬عبیار‬
‫”‪ ،“Yes‬وگرنه‪ ،‬عبار ”‪ “No‬را نمایش میدهد‪.‬‬
‫متد )(‪ ،isSortedRows‬آرایه ‪ a‬با ‪ n‬سطر و ‪ m‬ستون را دریافت کرده‪ ،‬با استفاده از حلقیه تکیرار تودرتیو "(‪ i‬از‬
‫صفر تا ‪ n-1‬برای پیمایش سطرها) و (‪ j‬از صفر تا ‪ m-2‬برای پیمایش ستونها)"‪ ،‬اگر عنصری بعدی ستون کوچکتیر از‬
‫عنصر فعلی ستون باشد‪ ،‬یعنی‪ ،‬سطر موردنظر مرتبشده نیست و متد ‪ false‬را برمیگرداند‪ .‬با خاتمه حلقهها متید ‪true‬‬
‫را برمیگرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫تعداد سطرهای آرایه ‪( a‬ثابت ‪)4‬‬ ‫ثابت ‪n‬‬ ‫‪Main‬‬
‫تعداد ستونهای آرایه ‪( a‬ثابت ‪)4‬‬ ‫ثابت ‪m‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ m‬ستون‬ ‫‪a‬‬
‫ماتریس دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که دادههای خواندهشده را نگهداری می‪-‬‬ ‫‪a‬‬ ‫‪readA2D‬‬
‫کند‪.‬‬
‫تعداد سطرهای ماتریس دوبعدی ‪a‬‬ ‫‪n‬‬
‫تعداد ستونهای ماتریس دوبعدی ‪a‬‬ ‫‪m‬‬
‫شمارنده ستون که از صفر تا ‪ m-1‬را میشمارد‪.‬‬ ‫‪j‬‬
‫شمارنده سطر که از صفر تا ‪ n-1‬را میشمارد‪.‬‬ ‫‪i‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که عناصر آن باید نمایش داده شوند‬ ‫‪a‬‬
‫تعداد سطرهای آرایه دوبعدی ‪a‬‬ ‫‪n‬‬
‫تعداد ستونها آرایه دوبعدی ‪a‬‬ ‫‪m‬‬ ‫‪printA2D‬‬
‫شمارنده ستون که از صفر تا ‪ m-1‬را شمارش میکند‬ ‫‪j‬‬
‫شمارنده سطر که از صفر تا ‪ n-1‬را شمارش میکند‬ ‫‪I‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که باید تعیین شود آیا سطرهای آن‬ ‫‪a‬‬ ‫‪isSortedRows‬‬
‫آرایهها و رشتهها‬ 322

.‫مرتب هستند یا خیر‬


a ‫تعداد سطرهای آرایه دوبعدی‬ n
a ‫تعداد ستونهای آرایه دوبعدی‬ m
.‫ را میشمارد‬m-1 ‫شمارنده ستون که از صفر تا‬ j
.‫ را شمار میکند‬n-1 ‫شمارنده سطر که از صفر تا‬ i
using System;
namespace p52
{
class Program
{
static void readA2D(int[,] a, int n, int m)
{

for (int i = 0; i < n; i++)


{
Console.Write("Enter {0} number for row[{1}]:", m, i);
string[] s = Console.ReadLine().Split(' ');
for (int j = 0; j < m; j++)
a[i, j] = int.Parse(s[j]);
}
}
static void printA2D(int[,] a, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
Console.Write("{0}\t", a[i, j]);
Console.WriteLine();
}
}
static bool isSortedRows(int[,] a, int n, int m)
{
for (int i = 0; i <= n - 1; i++)
for (int j = 0; j <= m - 2; j++)
if (a[i, j] > a[i, j + 1]) return false;

return true;
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter m:");
int m = Convert.ToInt32(Console.ReadLine());
int[,] x = new int[n, m];
readA2D(x, n, m);
printA2D(x, n, m);
if (isSortedRows(x, n, m) == true)
Console.Write("Yes");
else
Console.Write("No");
Console.ReadKey();
}
}
}
‫‪322‬‬ ‫فصل چهارم‬

‫صیعودی مرتیب باشیند‪ ،‬عبیار‬ ‫‪ .53‬برنامهای که یک آرایه ‪ 4 × 4‬را میخواند‪ .‬اگر تمام عناصر آن بیهصیور‬
‫”‪ ،“Yes‬وگرنه ”‪ “No‬را نمایش میدهد‪.‬‬
‫متد )(‪ ،main‬ابتدا ثابتهای ‪ n‬و ‪( m‬تعداد سطرها و ستونها) را با مقادیر ‪ 4‬و آراییه ‪ x‬را بیا ‪ n‬سیطر ‪ m‬سیتون‬
‫تعریف میکند‪ ،‬سس با فراخوانی متد )(‪ ،readA2D‬عناصر آرایه دوبعدی را میخواند و در ادامه‪ ،‬با فراخیوانی متید‬
‫)(‪ printA2D‬عناصر آرایه دوبعدی را نمایش میدهد‪ .‬در پایان‪ ،‬با توجه به نتیجه فراخوانی متد )(‪ ،isSorted‬عبیار‬
‫”‪( ،“Yes‬اگر نتیجه )(‪ ،isSorted‬مقدار ‪ true‬باشد) یا ”‪( “No‬وگرنه) را نمایش میدهد‪.‬‬
‫متد )(‪ ،readA2D‬پارامترهای ‪( a‬آرایه دوبعدی )‪( n ،‬تعداد سطرها) و ‪( m‬تعیداد سیتونهیا) را دریافیت کیرده‪،‬‬
‫عناصر آرایه را خوانده‪ ،‬در ماتری ‪ a‬قرار میدهد‪.‬‬
‫متد )(‪ ،printA2D‬پارامترهای ‪( a‬آرایه دوبعدی )‪( n ،‬تعداد سطرها) و ‪( m‬تعیداد سیتونهیا) را دریافیت کیرده‪،‬‬
‫عناصر آرایه ‪ a‬را نمایش میدهد‪.‬‬
‫متد )( ‪ ،isSorted‬آرایه ‪ ،a‬تعداد سطرها (‪ )n‬و تعداد ستونهای )‪ (m‬آن را بهعنوان پارامتر دریافت کرده‪ ،‬ابتیدا‬
‫با استفاده از یک حلقه تودرتو اگر یک عنصر فعلی از عنصر بعدی سطر خودش کمتر باشد‪ ،‬متد ‪ true‬را برمیگردانید‪.‬‬
‫خاتمه ای حلقه نشان میدهد که عناصر تمام سطرها مرتب هستند‪ .‬اکنون با استفاده از ییک حلقیه تکیرار سیطرها را‬
‫پیمایش میکند و اگر آخری عنصر سطر فعلی از اولی عنصر سطر بعدی بزرگتر باشد‪ ،‬متید ‪ false‬را برمییگردانید‪.‬‬
‫اگر ای حلقه نیز خاتمه یابد‪ ،‬متد ‪ true‬را برمیگرداند (یعنی‪ ،‬تمام عناصر آرایه بهصور صعودی مرتب هستند)‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫تعداد سطرهای ماتریس دوبعدی (ثابت ‪)4‬‬ ‫ثابت ‪n‬‬ ‫‪main‬‬
‫تعداد ستونهای ماتریس دوبعدی (ثابت ‪)4‬‬ ‫ثابت ‪m‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ m‬ستون‬ ‫‪a‬‬
‫ماتریس دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که دادههای خواندهشده را نگهداری میکند‪.‬‬ ‫‪a‬‬ ‫‪reada2d‬‬

‫تعداد سطرهای ماتریس دوبعدی ‪a‬‬ ‫‪n‬‬


‫تعداد ستونهای ماتریس دوبعدی ‪a‬‬ ‫‪m‬‬
‫شمارنده ستون که از صفر تا ‪ m-1‬را میشمارد‪.‬‬ ‫‪j‬‬
‫شمارنده سطر که از صفر تا ‪ n-1‬را میشمارد‪.‬‬ ‫‪i‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که عناصر آن باید نمایش داده شوند‪.‬‬ ‫‪a‬‬
‫تعداد سطرهای آرایه دوبعدی ‪a‬‬ ‫‪n‬‬
‫تعداد ستونهای آرایه دوبعدی ‪a‬‬ ‫‪m‬‬ ‫‪printa2d‬‬
‫شمارنده ستون که از صفر تا ‪ m-1‬را شمارش میکند‬ ‫‪j‬‬
‫شمارنده سطر که از صفر تا ‪ n-1‬را شمارش میکند‬ ‫‪i‬‬
‫آرایهها و رشتهها‬ 322

‫ ستون‬4 ‫ سطر و‬n ‫آرایه دوبعدی با‬ a


a ‫تعداد سطرهای آرایه و بعدی‬ n
a ‫تعداد ستونهای آرایه دوبعدی‬ m issorted
. ‫شمارنده ستون که برای پیمایش ستونها به کار میرود‬ j
.‫شمارنده سطر که برای پیمایش سطرها به کار میرود‬ i
using System;
namespace p53
{
class Program
{
static void readA2D(int[,] a, int n, int m)
{

for (int i = 0; i < n; i++)


{
Console.Write("Enter {0} number for row[{1}]:", m, i);
string[] s = Console.ReadLine().Split(' ');
for (int j = 0; j < m; j++)
a[i, j] = int.Parse(s[j]);
}
}
static void printA2D(int[,] a, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
Console.Write("{0}\t", a[i, j]);
Console.WriteLine();
}
}
static bool isSorted(int[,] a, int n, int m)
{
for (int i = 0; i < n; i++)
for (int j = 0; j < m - 1; j++)
if (a[i, j] > a[i, j + 1]) return false;

for (int i = 0; i < n - 1; i++)


if (a[i, m - 1] > a[i + 1, 0]) return false;
return true;
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter m:");
int m = Convert.ToInt32(Console.ReadLine());
int[,] x = new int[n, m];
readA2D(x, n, m);
printA2D(x, n, m);
if (isSorted(x, n, m) == true)
Console.Write("Yes");
else
Console.Write("No");
Console.ReadKey();
}
}
‫‪322‬‬ ‫فصل چهارم‬

‫}‬

‫‪ .54‬برنامهای که یک ماتری ‪ 4 × 4‬را خوانده‪ ،‬مجموع عناصر قطر اصلی و فرعی را نمایش میدهد‪( .‬در عناصیر‬
‫قطر اصلی آرایه ‪ i == j‬است و اگر عنصری روی قطر فرعی باشد‪ i + j == n – 1 ،‬است‪ i .‬شمارنده سطر و ‪ j‬شماره‬
‫ستون آرایه دوبعدی است)‪.‬‬
‫متد )(‪ ،main‬ابتدا ثابتهای ‪ n‬و ‪( m‬تعداد سطرها و ستونها) را با مقادیر ‪ 4‬و آراییه دوبعیدی ‪ a‬بیا ‪ n‬سیطر و ‪m‬‬
‫ستون تعریف میکند‪ ،‬سس با فراخوانی متد )(‪ ،readA2D‬عناصر آرایه را میخوانید و در ادامیه‪ ،‬بیا فراخیوانی متید‬
‫)(‪ printA2D‬عناصر آرایه دوبعدی ‪ a‬را نمایش میدهد‪ .‬در پایان‪ ،‬بیا فراخیوانی متید )(‪ sum‬بیه همیراه ییک پیغیام‬
‫مناسب‪ ،‬مجموع عناصر قطر اصلی و فرعی را نمایش میدهد‪.‬‬
‫متد )(‪ ،readA2D‬پارامترهای ‪( a‬آرایه دوبعدی )‪( n ،‬تعداد سطرها) و ‪( m‬تعیداد سیتونهیا) را دریافیت کیرده‪،‬‬
‫عناصر آرایه را خوانده‪ ،‬در ماتری ‪ a‬قرار میدهد‪.‬‬
‫متد )(‪ ،printA2D‬پارامترهای ‪( a‬آرایه دوبعدی )‪( n ،‬تعداد سطرها) و ‪( m‬تعیداد سیتونهیا) را دریافیت کیرده‪،‬‬
‫عناصر آرایه ‪ a‬را نمایش میدهد‪.‬‬
‫متد )(‪،sum‬آرایه دوبعدی (‪ ،)a‬تعداد سطرها (‪ )n‬و تعداد ستونهای آن(‪ )m‬را بهعنوان پیارامتر دریافیت کیرده‪،‬‬
‫ابتدا مجموع عناصر قطر اصلی و فرعی(یعنی‪ )s ،‬را برابر صفر قرار میدهد و سس عناصر آرایه را پیمیایش مییکنید و‬
‫عناصر که دارای شرط ‪( i == j‬یعنی‪ ،‬روی قطر اصلی باشند) یا ‪ i+ j == n – 1‬باشد (یعنی‪ ،‬روی قطر فرعی باشد) را با‬
‫‪ s‬جمع کرده‪ ،‬در پایان‪ ،‬مقدار ‪ s‬را برمیگرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫تعداد سطرهای ماتریس دوبعدی (ثابت ‪)4‬‬ ‫ثابت ‪n‬‬ ‫‪main‬‬
‫تعداد ستونهای ماتریس دوبعدی (ثابت ‪)4‬‬ ‫ثابت ‪m‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ m‬ستون‬ ‫‪a‬‬
‫ماتریس دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که دادههای خواندهشده را نگهداری میکند‪.‬‬ ‫‪a‬‬ ‫‪readA2D‬‬

‫تعداد سطرهای ماتریس دوبعدی ‪a‬‬ ‫‪n‬‬


‫تعداد ستونهای ماتریس دوبعدی ‪a‬‬ ‫‪m‬‬
‫شمارنده ستون که از صفر تا ‪ m-1‬را میشمارد‪.‬‬ ‫‪j‬‬
‫شمارنده سطر که از صفر تا ‪ n-1‬را میشمارد‪.‬‬ ‫‪i‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ 4‬ستون که عناصر آن باید نمایش داده شوند‪.‬‬ ‫‪a‬‬
‫تعداد سطرهای آرایه دوبعدی ‪a‬‬ ‫‪n‬‬ ‫‪printA2D‬‬
‫تعداد ستونهای آرایه دوبعدی ‪a‬‬ ‫‪m‬‬
‫آرایهها و رشتهها‬ 362

‫ را شمارش میکند‬m-1 ‫شمارنده ستون که از صفر تا‬ j


‫ را شمارش میکند‬n-1 ‫شمارنده سطر که از صفر تا‬ i
‫ ستون که مجموع عناصر قطر اصلی و فرعی آن باید‬4 ‫ سطر و‬n ‫آرایه دوبعدی با‬ a
.‫برگردانده شود‬
a ‫تعداد سطرهای آرایه دوبعدی‬ n
a ‫تعداد ستونهای آرایه دوبعدی‬ m sum
‫مجموع عناصر قطر اصلی و فرعی‬ s
.‫ را شمارش میکند‬m-1 ‫شمارنده ستون که از صفر تا‬ j
.‫ را شمارش میکند‬n-1 ‫شمارنده سطر که از صفر تا‬ i
using System;
namespace p54
{
class Program
{
static void readA2D(int[,] a, int n, int m)
{

for (int i = 0; i < n; i++)


{
Console.Write("Enter {0} number for row[{1}]:", m, i);
string[] s = Console.ReadLine().Split(' ');
for (int j = 0; j < m; j++)
a[i, j] = int.Parse(s[j]);
}
}
static void printA2D(int[,] a, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
Console.Write("{0}\t", a[i, j]);
Console.WriteLine();
}
}
static int sum(int[,] a, int n, int m)
{
int s = 0;
for (int i = 0; i <= n - 1; i++)
{
for (int j = 0; j <= m - 1; j++)
if (i == j || i + j == m - 1) s += a[i, j];
}
return s;
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter m:");
int m = Convert.ToInt32(Console.ReadLine());
int[,] a = new int[n, m];
readA2D(a, n, m);
printA2D(a, n, m);
‫‪362‬‬ ‫فصل چهارم‬

‫;))‪Console.Write("Sum is {0}", sum(a, n, m‬‬


‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .55‬برنامهای که عناصر یک ماتری ‪ 5 × 5‬را خوانده‪ ،‬بزرگتری عنصر محیطی آن را برمیگرداند‪.‬‬


‫متد )(‪ ،main‬ابتدا ثابتهای ‪ n‬و ‪( m‬تعداد سطرها و ستونها) را با مقادیر ‪ 5‬تعریف کرده و آرایه دوبعدی ‪ x‬را با‬
‫‪ n‬سطر ‪ m‬ستون تعریف میکند‪ .‬سس با فراخوانی متد )(‪ ،readA2D‬مقیادیر آراییه ‪ x‬را از ورودی مییخوانید‪ .‬در‬
‫ادامه‪ ،‬با فراخوانی متد )(‪ printA2D‬عناصر آرایه دوبعدی را نمایش میدهد‪ .‬در پایان‪ ،‬با فراخوانی متد )(‪ getMax‬با‬
‫پیغام مناسب بزرگتری مقدار روی محیط را نمایش میدهد‪.‬‬
‫متد )(‪ ،readA2D‬پارامترهای ‪( a‬آرایه دوبعدی )‪( n ،‬تعداد سطرها) و ‪( m‬تعیداد سیتونهیا) را دریافیت کیرده‪،‬‬
‫عناصر آرایه را خوانده‪ ،‬در ماتری ‪ a‬قرار میدهد‪.‬‬
‫متد )(‪ ،printA2D‬پارامترهای ‪( a‬آرایه دوبعدی )‪( n ،‬تعداد سطرها) و ‪( m‬تعیداد سیتونهیا) را دریافیت کیرده‪،‬‬
‫عناصر آرایه ‪ a‬را نمایش میدهد‪.‬‬
‫متد )(‪ ،sums‬ابتدا آرایه دوبعدی ‪ ،a‬تعداد سطرها(‪ )n‬و تعداد ستونها (‪ )m‬را بهعنیوان پیارامتر دریافیت کیرده‪،‬‬
‫سس اولی عنصر آرایه را در ‪ max‬قرار میدهد و در ادامه‪ ،‬عناصر آرایه را با دو حلقه پیمایش میکنید و عنصیر روی‬
‫سطر اول (‪ ،)i == 0‬و سطر آخر (‪ ،)i == n – 1‬ستون اول (‪ )j == 0‬یا ستون آخر (‪ )j == m – 1‬که بزرگتر از ‪max‬‬
‫باشد (]‪ )max < a[i][j‬را در ‪ max‬قرار میدهد‪ .‬در پایان‪ ،‬مقدار ‪ max‬را برمیگرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫تعداد سطرهای آرایه دوبعدی (ثابت ‪)5‬‬ ‫ثابت ‪n‬‬ ‫‪main‬‬
‫تعداد ستونهای آرایه دوبعدی (ثابت ‪)5‬‬ ‫ثابت ‪m‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ m‬ستون‬ ‫‪a‬‬
‫ماتریس دوبعدی با ‪ n‬سطر و ‪ 5‬ستون که دادههای خواندهشده را نگهداری میکند‪.‬‬ ‫‪a‬‬ ‫‪readA2D‬‬

‫تعداد سطرهای ماتریس دوبعدی ‪a‬‬ ‫‪n‬‬


‫تعداد ستونهای ماتریس دوبعدی ‪a‬‬ ‫‪m‬‬
‫شمارنده ستون که از صفر تا ‪ m-1‬را میشمارد‪.‬‬ ‫‪j‬‬
‫شمارنده سطر که از صفر تا ‪ n-1‬را میشمارد‪.‬‬ ‫‪i‬‬
‫آرایه دوبعدی با ‪ n‬سطر و ‪ 5‬ستون که عناصر آن باید نمایش داده شوند‪.‬‬ ‫‪a‬‬ ‫‪printA2D‬‬
‫آرایهها و رشتهها‬ 366

a ‫تعداد سطرهای آرایه دوبعدی‬ n


a ‫تعداد ستونهای آرایه دوبعدی‬ m
‫ را شمارش میکند‬m-1 ‫شمارنده ستون که از صفر تا‬ j
‫ را شمارش میکند‬n-1 ‫شمارنده سطر که از صفر تا‬ i
.‫ ستون که باید بزرگترین عنصر روی محیط آن برگردانده شود‬5 ‫ سطر و‬n ‫آرایه با‬ a
a ‫تعداد سطرهای آرایه دوبعدی‬ n
a ‫تعداد ستونهای آرایه دوبعدی‬ m
getMax
‫بزرگترین عنصر روی محیط‬ max
.‫ را شمارش میکند‬m-1 ‫شمارنده ستون که از صفر تا‬ j
.‫ را شمارش میکند‬n-1 ‫شمارنده سطر که از صفر تا‬ i
using System;
namespace p55
{
class Program
{
static void readA2D(int[,] a, int n, int m)
{
for (int i = 0; i < n; i++)
{
Console.Write("Enter {0} number for row[{1}]:", m, i);
string[] s = Console.ReadLine().Split(' ');
for (int j = 0; j < m; j++)
a[i, j] = int.Parse(s[j]);
}
}
static void printA2D(int[,] a, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
Console.Write("{0}\t", a[i, j]);
Console.WriteLine();
}
}
static int getMax(int[,] a, int n, int m)
{
int max = a[0, 0];
for (int i = 0; i <= n - 1; i++)
{
for (int j = 0; j <= m - 1; j++)
{
if ((i == 0 || i == n - 1 || j == 0 || j == m
- 1) && max < a[i, j])
max = a[i, j];
}
}
return max;
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = Convert.ToInt32(Console.ReadLine());
‫‪363‬‬ ‫فصل چهارم‬

‫;)"‪Console.Write("Enter m:‬‬
‫;))(‪int m = Convert.ToInt32(Console.ReadLine‬‬
‫;]‪int[,] a = new int[n, m‬‬
‫;)‪readA2D(a, n, m‬‬
‫;)‪printA2D(a, n, m‬‬
‫;))‪Console.Write("Sum is {0}", getMax(a, n, m‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫زیر رمز کرده‪ ،‬نمیایش میی‪-‬‬ ‫برنامهای که یکرشته و عدد ‪ k‬را خوانده‪ ،‬تمام حروف الفبای رشته را بهصور‬ ‫‪.56‬‬
‫دهد‪.‬‬
‫‪ ،%‬باقیمانده تقسیم صحیح به ‪ 26‬است‪.‬‬ ‫‪ + k( %26‬حرف اصلی) = حرف رمز شده‬
‫متد )(‪ ،main‬ابتدا رشته ‪ s‬را بهصور ‪ 04‬کاراکتری و متغیر ‪ k‬را بهصور عددی تعریف میکند‪ .‬سیس بیا ییک‬
‫پیغام یکرشته را خوانده‪ ،‬در ‪ s‬قرار میدهد و در ادامه‪ ،‬با یک پیغام مناسب ‪ k‬را میخواند‪ .‬در پایان‪ ،‬با فراخوانی متد‬
‫‪encryption‬رشته ‪ s‬را رمز کرده و با پیغام مناسب نمایش میدهد‪.‬‬
‫متد )(‪ ،encryption‬ابتدا پارامترهای ‪( s‬رشتهای که باید رمز شود)‪( k ،‬کلیید رمزگیذاری) را بیهعنیوان پیارامتر‬
‫دریافت میکند‪ .‬سس ‪ ،‬با یک حلقه تکرار کاراکترهای رشته ‪ s‬را پیمایش میکند‪ .‬اگر کاراکتر بیی ’‪ ‘a‬تیا ’‪ ‘z‬باشید‪،‬‬
‫ابتدا ]‪ s[i‬را از ‪ 97‬کم کرده تا معادل اندی ]‪ s[i‬به دست آید‪ ،‬سس آن را با ‪ k‬جمع میکند و در ادامه‪ ،‬بیاقیمانیده‬
‫آن به ‪ 26‬حساب میشود و در پایان‪ ،‬آن را با ‪ 97‬جمع میکند تا کاراکتر معادل آن به دست آید‪ .‬امیا‪ ،‬اگیر ]‪ s[i‬بیی‬
‫’‪ ‘A‬تا ’‪ ‘Z‬باشد‪ s[i] ،‬را از ‪ 65‬کم میکند تا عدد معادل آن به دسیت آیید و سیس آن عیدد را بیا ‪ k‬جمیع کیرده‪،‬‬
‫باقیمانده تقسیم نتیجه را به ‪ 26‬حساب میکند و در پایان‪ ،‬با ‪ 65‬جمع میکند تا کاراکتر معادل آن به دست آید‪ .‬ایی‬
‫کاراکترهای بهدستآمده را جایگزی ]‪ s[i‬میکند تا ]‪ s[i‬رمز شود‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫رشته دریافتی و رمز شده‬ ‫‪s‬‬ ‫‪main‬‬
‫کلید رمزگذاری‬ ‫‪k‬‬
‫رشته دریافتی از متد ‪ main‬و رشته رمز شده‬ ‫‪s‬‬ ‫‪encryption‬‬
‫;‪using System‬‬
‫‪namespace p56‬‬ ‫‪ k‬کلید رمزگذاری‬ ‫‪k‬‬
‫{‬ ‫‪i‬‬
‫‪class Program‬‬
‫شمارندهای برای پیمایش رشته ‪s‬‬
‫{‬
‫)‪static string encryption(char[] s, int k‬‬
‫{‬
‫آرایهها و رشتهها‬ ‫‪364‬‬

‫)‪for (int i = 0; i < s.Length; i++‬‬


‫))]‪if (char.IsLower(s[i‬‬
‫;)‪s[i]=Convert.ToChar(((int)s[i]- 97 + k) % 26 + 97‬‬
‫))]‪else if (char.IsUpper(s[i‬‬
‫;)‪s[i]=Convert.ToChar(((int)s[i]- 65 + k) % 26 + 65‬‬
‫;"" = ‪string s1‬‬
‫;)(‪foreach (char ch in s) s1 += ch.ToString‬‬
‫;‪return s1‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter k:‬‬
‫;))(‪int k = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter a string:‬‬
‫;)(‪string s1 = Console.ReadLine‬‬
‫;]‪char[] s = new char[s1.Length‬‬
‫;)‪s1.CopyTo(0, s, 0, s1.Length‬‬
‫;))‪Console.Write("Encrypted string is {0}",encryption(s, k‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .57‬برنامهای که مت رمز شده و عدد ‪ k‬را خوانده‪ ،‬مت ساده را با روش زیر به دسیت مییآورد و نمیایش میی‪-‬‬
‫دهد(یعنی‪ ،‬تمام حروف الفبایی را بهصور زیر رمزگشایی میکند)‪:‬‬
‫‪ – k( %26‬حرف رمز شده) = حرف ساده‬
‫متد )(‪ ،main‬ابتدا رشته ‪ s‬و کلید رمزگشایی را تعریف کیرده‪ ،‬سیس رشیته رمیز شیده و کلیید رمزگشیایی را بیا‬
‫پیغامهای مناسب میخواند و در ادامه‪ ،‬با فراخوانی متد ‪ s ،decryption‬را رمزگشایی میکند آن را نمایش میدهد‪.‬‬
‫متد )(‪ ،decryption‬پارامترهای ‪( s‬رشتهای رمز شده) و ‪( k‬کلید رمزگشایی) را بهعنوان پارامتر دریافت میکنید‪.‬‬
‫با فرمول بیانشده آن را رمزگشایی میکند و برمیگرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫رشتهای ورودی و رشتهای که باید از حالت رمز خارج شود‪.‬‬ ‫‪s‬‬ ‫‪main‬‬
‫کلید رمزگشایی‬ ‫‪k‬‬
‫رشتهای رمز شده که از متد ‪ main‬میگیرد و رمزگشاییشده که به متد ‪main‬‬ ‫‪s‬‬ ‫‪decryption‬‬
‫برمیگرداند‪.‬‬
‫کلید رمزگشایی رشته ‪s‬‬ ‫‪k‬‬
‫شمارندهای که کاراکترهای رشته را پیمایش میکند‪.‬‬ ‫‪i‬‬
‫‪362‬‬ ‫فصل چهارم‬

‫;‪using System‬‬
‫‪namespace p57‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static string decryption(char[] s, int k‬‬
‫{‬
‫)‪for (int i = 0; i < s.Length; i++‬‬
‫))]‪if (char.IsLower(s[i‬‬
‫;)‪s[i]=Convert.ToChar(((int)s[i]-97 - k) % 26 + 97‬‬
‫))]‪else if (char.IsUpper(s[i‬‬
‫;)‪s[i]=Convert.ToChar(((int)s[i]- 65- k) % 26 + 65‬‬
‫;"" = ‪string s1‬‬
‫;)(‪foreach (char ch in s) s1 += ch.ToString‬‬
‫;‪return s1‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter k:‬‬
‫;))(‪int k = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter a string:‬‬
‫;)(‪string s1 = Console.ReadLine‬‬
‫;]‪char[] s = new char[s1.Length‬‬
‫;)‪s1.CopyTo(0, s, 0, s1.Length‬‬
‫;))‪Console.Write("Decrypted string is {0}",decryption(s, k‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫اعیداد را‬ ‫مجموع اعداد اول در ای‬ ‫برنامهای که تعدادی عدد را خوانده‪ ،‬در آرایهای قرار میدهد‪ .‬سس‬ ‫‪.50‬‬
‫محاسبه میکند و در پایان‪ ،‬اعدادی که بزرگتر از مجموع اعداد اول هستند را چاپ میکند‪.‬‬
‫با یک پیغام مناسب عدد ‪ n‬را میخواند در‬ ‫متد )(‪ ،main‬ابتدا آرایه ‪ num‬با ‪ 144‬عنصر و ‪ n‬را تعریف کرده‪ ،‬سس‬
‫ادامه‪ ،‬با فراخوانی متد )(‪ n ،readArray‬عدد را خوانده‪ ،‬در آرایه ‪ num‬قرار میدهد‪ .‬در پایان‪ ،‬بیا فراخیوانی متید‬
‫)(‪ ،sumPrime‬مجموع اعداد اول را حساب کرده‪ ،‬در ‪ sum‬قرار میدهد و با فراخوانی متد )(‪ ،printArray‬اعیداد‬
‫باالی مجموع اعداد اول را نمایش میدهد‪.‬‬
‫متد )(‪ ،isPrime‬عدد ‪ n‬را بهعنوان پارامتر دریافت میکند‪ ،‬اگر اول باشد‪ ،‬ییک عیدد غییر صیفر وگرنیه صیفر را‬
‫برمیگرداند‪.‬‬
‫متد )(‪ ،sumPrime‬آرایه ‪ a‬و تعداد عناصر آن (‪ )n‬را دریافت میکند و مجموع اعیداد اول آراییه ‪ a‬را در ‪sum‬‬
‫قرار میدهد و در پایان‪ sum ،‬را برمیگرداند‪.‬‬
‫‪ n‬عدد را خوانده‪ ،‬در‬ ‫متد )(‪ ،readArray‬آرایه ‪ a‬و تعداد عناصر آن (‪ )n‬را بهعنوان پارامتر دریافت کرده‪ ،‬سس‬
‫آرایه ‪ a‬قرار میدهد‪.‬‬
‫متد )(‪،printArray‬آرایه ‪ ،a‬تعداد عناصیر آن (‪ )n‬و مجمیوع اعیداد اول آراییه ‪ )sum( a‬را بیهعنیوان پیارامتر‬
‫دریافت کرده‪ ،‬اعدادی از آرایه ‪ a‬که بزرگتر از ‪ sum‬باشند را نمایش میدهد‪.‬‬
‫آرایهها و رشتهها‬ ‫‪362‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫آرایهای با ‪ 011‬عنصر که عناصر خواندهشده را نگهداری میکند‪.‬‬ ‫‪num‬‬ ‫‪main‬‬
‫تعداد عناصر ورودی‬ ‫‪n‬‬
‫مجموع اعداد اول خواندهشده‬ ‫‪sum‬‬
‫عددی که باید تعیین شود اول است یا خیر‪.‬‬ ‫‪n‬‬ ‫‪isPrime‬‬

‫شمارندهای که از ‪ 1‬تا ‪ n/2‬میشمارد‪.‬‬ ‫‪i‬‬


‫آرایه ورودی که مجموع اعداد اول باید حساب شود‬ ‫‪a‬‬
‫تعداد عناصر ورودی‬ ‫‪n‬‬
‫‪sumPrime‬‬
‫مجموع اعداد اول‬ ‫‪sum‬‬
‫شمارنده از صفر تا ‪ n-1‬را میشمارد‪.‬‬ ‫‪i‬‬
‫آرایهای که از ورودی میخواند‪.‬‬ ‫‪a‬‬
‫تعداد عناصر ورودی‬ ‫‪n‬‬ ‫‪readArray‬‬
‫شمارنده از صفر تا ‪ n-1‬را میشمارد‪.‬‬ ‫‪i‬‬
‫آرایهای که عناصر بیشتر از ‪ sum‬آن باید چاپ شود‬ ‫‪a‬‬
‫تعداد عناصر ورودی‬ ‫‪n‬‬
‫‪printArray‬‬
‫مجموع اعداد اول خواندهشده‬ ‫‪sum‬‬
‫شمارنده از صفر تا ‪ n-1‬را میشمارد‪.‬‬ ‫‪i‬‬
‫;‪using System‬‬
‫‪namespace p58‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static int isPrime(int n‬‬
‫{‬
‫)‪for (int i = 2; i <= (int)n / 2; i++‬‬
‫;‪if (n % i == 0) return 0‬‬
‫;‪return 1‬‬
‫}‬
‫)‪static int sumPrime(int[] a, int n‬‬
‫{‬
‫;‪int sum = 0‬‬
‫)‪for (int i = 0; i < n; i++‬‬
‫;]‪if (isPrime(a[i]) == 1) sum += a[i‬‬
‫;)‪return (sum‬‬
‫}‬
‫)‪static void readArray(int[] a, int n‬‬
‫{‬
‫;‪int i‬‬
‫;)‪Console.Write("Enter {0} numbers:", n‬‬
‫;)' '(‪string[] s = Console.ReadLine().Split‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫;)]‪a[i] = Convert.ToInt32(s[i‬‬
‫}‬
‫)‪static void printArray(int[] a, int n, int sum‬‬
‫{‬
‫;‪int i‬‬
‫;)"‪Console.Write("Array is:‬‬
‫‪362‬‬ ‫فصل چهارم‬

‫)‪for (i = 0; i < n; i++‬‬


‫"(‪if (a[i] > sum) Console.Write‬‬‫;)]‪{0}", a[i‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪int n = Convert.ToInt32(Console.ReadLine‬‬
‫;]‪int[] num = new int[n‬‬
‫;)‪readArray(num, n‬‬
‫;)‪int sum = sumPrime(num, n‬‬
‫;)‪printArray(num, n, sum‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .59‬برنامهای که ‪ 14‬عدد تصادفی بی ‪ 1‬تا ‪ 44‬تولید کرده‪ ،‬در آرایه اول قرار میدهد‪ .‬سس ‪ 14 ،‬عیدد تصیادفی‬
‫دیگر بی ‪ 1‬تا ‪ 54‬تولید نموده‪ ،‬در آرایه دوم قرار میدهد‪ .‬در پایان‪ ،‬عناصری که در آرایه اول وجود دارنید‪ ،‬ولیی‬
‫در آرایه دوم نیستند را نمایش میدهد‪ .‬یعنی تفاضل دو آرایه را نمایش میدهد‪.‬‬
‫متد )(‪ ،main‬ابتدا هر یک از آرایههای ‪ num2 ،num1‬و ‪ num3‬را با ‪ 14‬عنصر تعریف کرده‪ ،‬متغیر ‪ n‬با مقدار ‪14‬‬
‫و متغیر ‪ k‬را تعریف میکند‪ .‬با فراخوانی )‪ 14 ،fillArray(num1, n, 40‬عدد تصادفی بی ‪ 1‬تا ‪ 44‬تولید میکنید‪ ،‬در‬
‫آرایه ‪ num1‬قرار میدهد‪ ،‬با فراخوانی متد )‪ 14 ،fillArray(num2, n, 50‬عدد تصادفی بی ‪ 1‬تا ‪ 54‬تولید کرده‪ ،‬در‬
‫‪ num2‬قرار میدهد‪ ،‬با فراخوانی متد )(‪ difference‬تفاضیل آراییه اول (‪ )num1‬و دوم (‪ )num2‬را در آراییه سیوم‬
‫(‪ )num3‬قرار میدهد‪ .‬در پایان‪ ،‬با استفاده از متد )(‪ ،printArray‬مقادیر آراییه ‪ num2 ،num1‬و ‪ num3‬را نمیایش‬
‫میدهد‪.‬‬
‫متد )(‪ ،fillArray‬پارامترهای آرایه ‪ ،a‬تعداد عناصر آن (‪ )n‬و حداکثر عدد تصادفی که باید تولید شود (‪ )base‬را‬
‫دریافت کرده‪ n ،‬عدد تصادفی در بازه یک تا ‪ base‬تولید میکند‪ ،‬در آرایه ‪ a‬قرار میدهد‪.‬‬
‫متد )(‪ ،find‬مقدار ‪ ،a‬آرایه ‪ b‬و تعداد عناصر آن (‪ )n‬را بهعنوان پارامتر دریافت کرده‪ ،‬اگر ‪ a‬در ‪ b‬وجیود داشیته‬
‫باشد‪ ،‬یک‪ ،‬وگرنه صفر را برمیگرداند‪.‬‬
‫متد )(‪ ،printArray‬آرایه ‪ ،a‬تعداد عناصر آن (‪ )n‬را بهعنوان پارامتر دریافت کرده‪ ،‬عناصر آرایه را نمیایش میی‪-‬‬
‫دهد‪.‬‬
‫متد )(‪ ،difference‬آرایههای ‪ ،c ،b ،a‬تعداد عناصر آرایه ‪ a‬و ‪ )N( b‬و تعداد عناصر آراییه ‪ c‬را بیهعنیوان پیارامتر‬
‫دریافت میکند‪ .‬با استفاده از یک حلقه تکرار‪ ،‬عناصر آرایه ‪ a‬را در آرایه ‪ b‬جستوجو میکند‪ ،‬اگر عنصر آراییه ‪ a‬در‬
‫‪ b‬وجود نداشت (یعنی‪ ،‬متد )(‪ ،find‬صفر را برگرداند)‪ ،‬آن عنصر را به آرایه ‪ c‬اضافه میکند (شمارنده ‪ ،c‬متغیر ‪ k‬است‬
‫که بهصور ارجاع تعریفشده است)‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫آرایه اول با ‪ 01‬عنصر‬ ‫‪num1‬‬ ‫‪main‬‬
‫آرایه دوم با ‪ 01‬عنصر‬ ‫‪num2‬‬
‫تفاضل آرایه اول و دوم‬ ‫‪num3‬‬
‫تعداد عناصر آرایههای اول و دوم‬ ‫‪n‬‬
‫تعداد عناصر آرایه سوم (تفاضل دو آرایه)‬ ‫‪k‬‬
‫آرایهها و رشتهها‬ ‫‪362‬‬

‫آرایهای که باید با ‪ 01‬عنصر تصادفی پر شود‪.‬‬ ‫‪a‬‬ ‫‪fillArray‬‬

‫عدد تصادفی که باید تولید شود (بین ‪ 0‬تا ‪ base‬است)‬ ‫‪base‬‬


‫شمارندهای که صفر تا ‪ 0‬را میشمارد تا ‪ 01‬عدد تصادفی تولید کند و در آرایه ‪ a‬قرار دهد‪.‬‬ ‫‪i‬‬
‫مقداری که باید در آرایه ‪ b‬پیدا شود‬ ‫‪a‬‬
‫آرایهای که باید ‪ a‬در آن جستوجو شود‬ ‫‪b‬‬
‫‪find‬‬
‫تعداد عناصر آرایه ‪n‬‬ ‫‪n‬‬
‫شمارندهای که از صفر تا ‪ n-1‬را میشمارد‬ ‫‪i‬‬
‫آرایهای که باید عناصر آن چاپ شود‬ ‫‪a‬‬
‫تعداد عناصر آرایه ‪a‬‬ ‫‪n‬‬ ‫‪printArray‬‬
‫شمارندهای که از صفر تا ‪ n-1‬را میشمارد‪.‬‬ ‫‪i‬‬
‫آرایه اول که ‪ 01‬عدد تصادفی بین ‪ 0‬تا ‪ 41‬را نگهداری میکند‬ ‫‪a‬‬
‫آرایه دوم که ‪ 01‬عدد تصادفی بین ‪ 0‬تا ‪ 51‬را نگهداری میکند‬ ‫‪b‬‬
‫تفاضل بین آرایه اول و دوم‬ ‫‪c‬‬
‫‪difference‬‬
‫تعداد عناصر آرایه اول و دوم‬ ‫‪n‬‬
‫تعداد عناصر آرایه تفاضل (تعداد عناصر آرایه ‪)c‬‬ ‫‪k‬‬
‫شمارندهای که صفر تا ‪ n-1‬را میشمارد‪.‬‬ ‫‪i‬‬
‫;‪using System‬‬
‫‪namespace p59‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void fillArray(int[] a, int n, int base1‬‬
‫{‬
‫;‪int i‬‬
‫;)(‪Random r = new Random‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫;)‪a[i] = r.Next(base1 + 1‬‬
‫}‬
‫)‪static int find(int a, int[] b, int n‬‬
‫{‬
‫;‪int i‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫;‪if (a == b[i]) return 1‬‬
‫;‪return 0‬‬
‫}‬
‫)‪static void printArray(int[] a, int n‬‬
‫{‬
‫;‪int i‬‬
‫;)"‪Console.Write("Array is:‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫;)]‪Console.Write(" {0}", a[i‬‬
‫}‬
‫‪static void difference(int[] a, int[] b, int[] c,‬‬
‫)‪int n, ref int k‬‬
‫{‬
‫;‪k = -1‬‬
‫;‪int i‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫‪362‬‬ ‫فصل چهارم‬

‫)‪if (find(a[i], b, n) == 0‬‬


‫{‬
‫;‪k++‬‬
‫;]‪c[k] = a[i‬‬
‫}‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪int n = Convert.ToInt32(Console.ReadLine‬‬
‫;]‪int[] num1 = new int[n‬‬
‫;]‪int[] num2 = new int[n‬‬
‫;]‪int[] num3 = new int[n‬‬
‫;)‪fillArray(num1, n, 40‬‬
‫;)‪fillArray(num2, n, 50‬‬
‫;‪int k = n‬‬
‫;)‪difference(num1, num2, num3, n, ref k‬‬
‫;)" ‪Console.Write("1:‬‬
‫;)‪printArray(num1, n‬‬
‫;)" ‪Console.Write("\n2:‬‬
‫;)‪printArray(num2, n‬‬
‫;)" ‪Console.Write("\n3:‬‬
‫;)‪printArray(num3, k‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ 4‬تا ‪ 0‬گرفته‪ ،‬عناصر آراییه را‬ ‫‪ .64‬برنامهای که ‪ 14‬عدد را خوانده‪ ،‬در آرایهای قرار میدهد‪ .‬سس یک عدد بی‬
‫به تعداد عدد خواندهشده به سمت چپچرخش میدهد و چاپ میکند‪.‬‬
‫متد )(‪ ،main‬ابتدا آرایههای ‪ ،num2 ،num1‬متغیرهای ‪ n‬و ‪ k‬را تعریف کرده‪ ،‬بیا فراخیوانی )(‪n ،readArray‬‬
‫عدد را خوانده‪ ،‬در آرایه ‪ num1‬قرار میدهد‪ .‬سس با پیغام مناسب تعداد شیفت به چپ (یعنی ‪ )k‬را میخوانید و بیا‬
‫فراخوانی متد )(‪ ،leftRotate‬عناصر آرایه ‪ a‬را ‪ k‬واحد به سمت چپ شیفت میدهد و در آرایه ‪ b‬قرار میدهید‪ .‬در‬
‫پایان‪ ،‬عناصر آرایه ‪ num1‬و ‪ num2‬را با فراخوانی متد )(‪ ،printArray‬چاپ میکند‪.‬‬
‫متد )(‪ ،readArray‬پارامترهای ‪( a‬آرایه)‪( n ،‬تعداد عناصر آرایه) را دریافت کرده‪ n ،‬عدد را خوانده و در آرایه‬
‫‪ a‬قرار میدهد‪.‬‬
‫متد )(‪،leftRotate‬آرایه ‪ ،a‬آرایه ‪( b‬آرایه شیفت یافتیه)‪ ،‬تعیداد عناصیر آراییه ‪ a‬و ‪ )n( b‬و تعیداد شییفت (‪ )k‬را‬
‫بهعنوان پارامتر دریافت کرده‪ ،‬آرایه ‪ a‬را ‪ k‬واحد به سمت چپ شیفت داده‪ ،‬در آرایه ‪ b‬قرار میدهد و برمیگرداند‪.‬‬
‫متد )(‪،printArray‬آرایه ‪ ،a‬تعداد عناصر آرایه (‪ )n‬را بهعنوان پارامتر دریافت کرده‪ ،‬عناصیر آراییه ‪ a‬را نمیایش‬
‫میدهد‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫آرایه اول با ‪ 01‬عنصر‬ ‫‪num1‬‬ ‫‪main‬‬
‫آرایه دوم که ‪ k‬بار به سمت چپ شیفت یافته است‬ ‫‪num2‬‬
‫تعداد عناصر آرایه ‪ num1‬و ‪num2‬‬ ‫‪n‬‬
‫تعداد شیفت به چپ آرایه ‪num1‬‬ ‫‪k‬‬
‫آرایهها و رشتهها‬ 332

.‫ عنصر خواندهشده در آن قرار گیرد‬n ‫آرایهای که باید‬ a readArray

a ‫تعداد عناصر آرایه‬ n


.‫ میشمارد‬n-1 ‫شمارندهای که از صفر تا‬ i
.‫ واحد شیفت به چپ یابد‬k ‫آرایهای که باید عناصر آن‬ a
.‫ را نگهداری میکند‬a ‫آرایهای که عناصر شیفت یافته آرایه‬ b
b ‫ و‬a ‫تعداد عناصر آرایه‬ n
‫تعداد شیفت‬ k leftRotate
‫ میشمارد‬n-1 ‫شمارندهای که از صفر تا‬ i
‫ام‬location ‫ را در عنصر‬a ‫ام آرایه‬i ‫ را حساب میکند که مقدار عنصر‬i-k ‫اندیس‬ location
.‫ قرار دهد‬b ‫آرایه‬
‫آرایهای که عناصر آن باید چاپ شود‬ a
a ‫تعداد عناصر آرایه‬ n leftRotate
.‫ را پیمایش و چاپ کند‬a ‫ میشمارد تا عناصر آرایه‬n-1 ‫شمارندهای که بین صفر تا‬ i
using System;
namespace p60
{
class Program
{
static void readArray(int[] a, int n)
{
int i;
Console.Write("Enter {0} numbers:", n);
string[] s = Console.ReadLine().Split(' ');
for (i = 0; i < n; i++)
a[i] = Convert.ToInt32(s[i]);
}
static void printArray(int[] a, int n)
{
int i;
Console.Write("Array is:");
for (i = 0; i < n; i++)
Console.Write(" {0}", a[i]);
}
static void leftRotate(int[] a, int[] b, int n, int k)
{
int i;
int location;
for (i = 0; i < n; i++)
{
location = i - k;
if (location < 0) location = n + location;
b[location] = a[i];
}
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = Convert.ToInt32(Console.ReadLine());
int[] num1 = new int[n];
int[] num2 = new int[n];
‫‪332‬‬ ‫فصل چهارم‬

‫;)‪readArray(num1, n‬‬
‫;)"‪Console.Write("Enter k:‬‬
‫;))(‪int k = Convert.ToInt32(Console.ReadLine‬‬
‫;)‪leftRotate(num1, num2, n, k‬‬
‫;)"‪Console.Write("Array 1 :‬‬
‫;)‪printArray(num1, n‬‬
‫;)"‪Console.Write("\nArray 2 :‬‬
‫;)‪printArray(num2, n‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .61‬برنامهای که یکرشته را خوانده‪ ،‬تمام کلما دوحرفی رشته را حذف کرده‪ ،‬آن را نمایش میدهد‪.‬‬
‫متد )(‪ ،main‬ابتدا رشته ‪ ،s‬متغیر ‪ i‬و ‪ wordLen‬را تعریف میکند‪ .‬سس یکرشته را میخواند و با استفاده از یک‬
‫حلقه ‪ while‬رشته را پیمایش میکند و تمام کلما دوحرفی را پیدا مییکنید و بیا فراخیوانی متید )(‪،deleteWord‬‬
‫آنها را از رشته ‪ s‬حذف میکند و در پایان‪ ،‬رشته ‪ s‬را نمایش میدهد‪.‬‬
‫متد )(‪ ،len‬رشته ‪ s‬را بهعنوان پارامتر دریافت کرده‪ ،‬طول آن را برمیگرداند‪.‬‬
‫متد )(‪ ،lenNextWord‬رشته ‪ s‬و اندی شروع )‪ (index‬رشته را دریافت میکند و طیول کلمیه بعیدی از مکیان‬
‫شروع اندی را برمیگرداند‪.‬‬
‫متد )(‪ ،deleteWord‬رشته ‪ ،s‬اندی شروع حذف (‪ )index‬و ‪( len‬طول کلمهای که باید حذف شود) را بهعنوان‬
‫پارامتر دریافت کرده‪ ،‬یک کلمه ‪ len‬حرفی را از مکان شروع ‪ index‬از رشته ‪ s‬حیذف مییکنید و رشیته ‪ s‬را برمیی‪-‬‬
‫گرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫رشته ورودی‬ ‫‪s‬‬ ‫‪main‬‬
‫طول هر کلمه (طول کلمه بعدی)‬ ‫‪wordLen‬‬
‫طول رشته‬ ‫‪l‬‬
‫شمارندهای که تا طول رشته ‪ s‬را میشمارد‬ ‫‪i‬‬
‫رشتهای که باید طول آن محاسبه شود‬ ‫‪s‬‬ ‫‪len‬‬

‫طول رشته ‪s‬‬ ‫‪i‬‬


‫رشته ‪s‬‬ ‫‪s‬‬
‫مکان شروع ‪ s‬که باید طول کلمه بعدازآن برگردانده شود‬ ‫‪index‬‬
‫‪lenNextWord‬‬
‫شمارندهای برای یافتن کلمه بعد‬ ‫‪i‬‬
‫طول کلمه بعدی‬ ‫‪count‬‬
‫رشتهای که کلمه از آن باید حذف شود‬ ‫‪s‬‬
‫مکان شروع حذف شدن کلمه را تعیین میکند‬ ‫‪index‬‬ ‫‪deleteWord‬‬
‫طول کلمهای که باید حذف شود‬ ‫‪len‬‬
‫آرایهها و رشتهها‬ ‫‪336‬‬

‫شمارنده که از ‪ index‬شروع میشود تا انتهای رشته ‪ s‬ادامه مییابد‪.‬‬ ‫‪i‬‬


‫;‪using System‬‬
‫‪namespace p61‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static string deleteWord(string[] s‬‬
‫{‬
‫;"" = ‪string s1‬‬
‫)‪foreach (string s2 in s‬‬
‫;" " ‪if (s2.Length != 2) s1 = s1 + s2 +‬‬
‫;‪return s1‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;} '!' ‪char[] sp = new char[4] { '.', ',', ' ',‬‬
‫;)"‪Console.Write("Enter a string:‬‬
‫; ;)‪string[] s = Console.ReadLine().Split(sp‬‬
‫;))‪Console.Write("Result is {0}", deleteWord(s‬‬
‫;)(‪Console.ReadKey‬‬

‫}‬
‫}‬
‫}‬

‫‪ .7‬برنامهای که یکرشته را خوانده‪ ،‬تعداد کلما یکحرفی‪ ،‬دوحرفی‪ ،‬سهحرفی‪ ،‬چهارحرفی و غیره را میشمارد‪.‬‬
‫متد )(‪،main‬ابتدا رشته ‪ ،s‬آرایه ‪ ،countArray‬متغیر ‪ i‬و ‪ wordLen‬را تعریف میکند‪ .‬سس یکرشیته خوانیده‪،‬‬
‫با استفاده از یک حلقه ‪ while‬طول کلما رشته را محاسبه میکند‪ ،‬اگر طول کلما رشته صفر نباشد‪ ،‬به عنصر متناظر‬
‫طول آن کلمه در آرایه ‪ countArray‬یک واحد اضافه میکند‪.‬‬
‫متد )(‪ ،len‬رشته ‪ s‬را بهعنوان پارامتر دریافت کرده‪ ،‬طول آن را برمیگرداند‪.‬‬
‫متد )(‪ ،lenNexWord‬رشته ‪ s‬و اندی شروع )‪ (index‬رشته را دریافت میکند و طیول کلمیه بعیدی از مکیان‬
‫شروع اندی را برمیگرداند‪.‬‬
‫متد )(‪ ،printCount‬آرایه ‪ a‬را بهعنوان پارامتر دریافت کرده‪ ،‬که عناصر یک تا ‪ 99‬آن تعداد کلما با طولهای‬
‫یک تا ‪ 99‬را نگهداری میکند‪ .‬سس با یک حلقه تکرار اگر تعداد تکرار کلما با طول ‪ i‬بزرگتر ‪ 14‬صیفر باشید‪ i ،‬و‬
‫تعداد کلما با آن طول (یعنی ]‪ )a[i‬را با پیغام مناسب نمایش میدهد‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫رشته ورودی‬ ‫‪s‬‬ ‫‪main‬‬
‫آرایه ‪ 011‬عنصر که تعداد کلمات صفر تا ‪ 00‬حرفی را نگهداری میکند‬ ‫‪countArray‬‬
‫(عنصر صفر تعداد عناصر صفر حرفی‪ ،‬عنصر یک تعداد یکحرفی‪ ،‬عنصر‬
‫دوم‪ ،‬تعداد عناصر دوحرفی و ‪...‬‬
‫شمارندهای برای پیمایش رشته‬ ‫‪i‬‬
‫طول کلمه بعدی‬ ‫‪wordLen‬‬
‫رشتهای که باید طول آن محاسبه شود‬ ‫‪s‬‬ ‫‪len‬‬

‫طول رشته ‪s‬‬ ‫‪i‬‬


‫‪333‬‬ ‫فصل چهارم‬

‫رشته ‪s‬‬ ‫‪s‬‬


‫مکان شروع ‪ s‬که باید طول کلمه بعدازآن برگردانده شود‬ ‫‪index‬‬
‫‪lennextword‬‬
‫شمارندهای برای یافتن کلمه بعد‬ ‫‪i‬‬
‫طول کلمه بعدی‬ ‫‪count‬‬
‫آرایهای که تعداد کلمات یک‪ ،‬دو‪ ،‬سه‪ ،‬چهار و ‪ ....‬حرفی را نگهداری می‪-‬‬ ‫‪a‬‬
‫کند‪.‬‬ ‫‪printCount‬‬
‫شمارندهای برای شمارش و نمایش عناصر آرایه ‪a‬‬ ‫‪i‬‬
‫;‪using System‬‬
‫‪namespace p62‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void printCount(int[] a‬‬
‫{‬
‫;‪int i‬‬
‫)‪for (i = 0; i < a.Length; i++‬‬
‫)‪if (a[i] > 0‬‬
‫;)]‪Console.WriteLine("Len({0})\tis\t{1}", i, a[i‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;} ';' ‪char[] sp = new char[4] { '.', ',', ' ',‬‬
‫;]‪int[] countArray = new int[100‬‬
‫;)"‪Console.Write("Enter a string:‬‬
‫; ;)‪string[] s = Console.ReadLine().Split(sp‬‬
‫)‪foreach (String s1 in s‬‬
‫{‬
‫;‪int wordLen = s1.Length‬‬
‫;]‪if (wordLen != 0) ++countArray[wordLen‬‬
‫}‬
‫;)‪printCount(countArray‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫میکند چه عددی بییش از همیه تکیرار‬ ‫تعیی‬‫‪ .62‬برنامهای که ‪ 14‬عدد را خوانده‪ ،‬در آرایهای قرار دهد‪ .‬سس‬
‫شده است‪.‬‬
‫متد )(‪ ،main‬ابتدا آرایه ‪ a‬متغیرهای ‪ maxCount‬و ‪ mean‬را تعرییف کیرده‪ ،‬بیا فراخیوانی )(‪14 ،readArray‬‬
‫عدد را خوانده‪ ،‬در آرایه ‪ a‬قرار میدهد‪ .‬سس با فراخوانی متد )(‪ ،findMod‬عددی که بیشتری تکرار را در آرایه‬
‫‪ a‬دارد‪ ،‬تعداد تکرار آن را پیداکرده‪ ،‬از طریق ‪ maxCount‬و ‪ mean‬برمیگرداند و آنها نمایش میدهد‪.‬‬
‫متد )(‪ ،readArray‬پارامترها آرایه ‪ a‬و تعداد عناصر آن )‪ (n‬را دریافت کرده‪ n ،‬عدد را میخواند و در آراییه ‪a‬‬
‫قرار میدهد‪.‬‬
‫متد )(‪ ،findMod‬پارامترهای آرایه ‪ a‬با تعداد عناصر ‪ n‬و ارجاعهیای ‪ maxCount‬و ‪ mean‬را دریافیت کیرده‪،‬‬
‫مقدار ‪( mean‬مد‪ ،‬عددی که بیشتری تکرار را دارد) و ‪( maxCount‬بیشتری تکرار آن) را برمیگرداند‪.‬‬
‫آرایهها و رشتهها‬ 334

‫هدف‬ ‫متغیر‬ ‫متد‬


‫ عنصر‬01 ‫آرایهای با‬ a main
‫حداکثر تعداد تکرار‬ maxCount
)‫مد (یا بیشترین تکرار‬ mean
‫ عنصر آن خوانده شود‬n ‫آرایهای که باید‬ a readArray

.‫تعداد عناصری که باید از ورودی خوانده شود‬ n


.‫ را میشمارد‬n-1 ‫شمارندهای که از صفر تا‬ i
‫آرایهای که در آن باید عددی که بیشترین تکرار را دارد جستوجو شود‬ a
a ‫تعداد عناصر آرایه‬ n
‫حداکثر تعداد تکرار پیداشده که به متد فراخوانی شده برگشت داده میشود‬ maxCount
‫عددی که بیشترین تکرار را دارد و به متد فراخوانده برگشت داده میشود‬ mean findmod
‫تعداد تکرار یک عدد‬ count
. ‫ را میشمارد‬n-1 ‫شمارنده از یک تا‬ j
.‫ را میشمارد‬n-1 ‫شمارنده از صفر تا‬ i
using System;
namespace p63
{
class Program
{
static void readArray(int[] a, int n)
{
int i;
Console.Write("Enter {0} numbers:", n);
string[] s = Console.ReadLine().Split(' ');
for (i = 0; i < n; i++)
a[i] = Convert.ToInt32(s[i]);
}
static void print(int[] a, int n)
{
int i;
Console.Write("Array is:");
for (i = 0; i < n; i++)
Console.Write(" {0}", a[i]);
}
static void findMod(int[] a, int n, ref int maxCount,
ref int mean)
{
int i, j, count;
for (i = 0; i < n; i++)
{
count = 0;
for (j = i; j < n; j++)
if (a[i] == a[j]) count++;
if (count > maxCount)
{
maxCount = count;
mean = a[i];
}
}
‫‪332‬‬ ‫فصل چهارم‬

‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter n:‬‬
‫;))(‪int n = Convert.ToInt32(Console.ReadLine‬‬
‫;]‪int[] a = new int[ n‬‬
‫;‪int maxCount = 0, mean=0‬‬
‫;)‪readArray(a, n‬‬
‫;)‪findMod(a, n, ref maxCount, ref mean‬‬
‫‪Console.Write("Number is {0}\tMod is {1}",‬‬
‫;)‪mean, maxCount‬‬
‫;)(‪Console.ReadKey‬‬

‫}‬

‫‪ .63‬برنامهای که یکرشته را خوانده‪ ،‬کلیه جاهای خیالی از قبییل کیاراکتر ‪ ‘\n’ ،blank‬و ’‪ ‘\t‬رشیته را حیذف‬
‫میکند و نمایش میدهد‪.‬‬
‫متد )(‪ ،main‬ابتدا رشته ‪ s‬را تعریف کرده‪ ،‬با یک پیغام مناسب رشته ‪ s‬را مییخوانید و سیس بیا فراخیوانی متید‬
‫)(‪ ،trim‬جاهای خالی رشته ‪ s‬را حذف میکند و در پایان با پیغام مناسب رشته ‪ s‬را نمایش میدهد‪.‬‬
‫متد )(‪ ،deleteChar‬پارامترهای رشته ‪ s‬و شماره اندی کاراکتری (‪ )i‬که باید حذف شود را دریافت میکند و با‬
‫استفاده از یک حلقه تکرار کاراکترهای بعد از اندی ‪ i‬را یک واحد به سمت باال شیفت میدهد تا کاراکتر ‪i‬ام رشیته‬
‫حذف شود‪.‬‬
‫متد )(‪ ،trim‬رشته ‪ s‬را بهعنوان پارامتر دریافت کرده‪ ،‬با استفاده از یک حلقه رشته را پیمایش کرده‪ ،‬جاهای خالی‬
‫رشته را مییابد و با فراخوانی )(‪ ،deleteChar‬کاراکتر تشکیلدهنده جای خالی را حذف مینماید‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫رشته ورودی‬ ‫‪s‬‬ ‫‪main‬‬
‫رشتهای که باید کاراکتر ‪i‬ام آن حذف شود‬ ‫‪s‬‬ ‫‪deleteCchar‬‬
‫شماره اندیس کاراکتری که باید حذف شود‬ ‫‪i‬‬
‫شمارندهای که از ‪ i‬شروع میشود و کاراکترهای بعدازآن را یکییک ی ب ه س مت ب اال ش یفت‬ ‫‪j‬‬
‫میدهد تا کاراکتر‪i‬ام حذف شود‪.‬‬
‫رشتهای که کاراکترهای فضای خالی آن باید حذف شوند‪.‬‬ ‫‪s‬‬
‫‪trim‬‬
‫شمارندهای برای پیمایش رشته و یافتن کاراکترهای خالی جهت حذف‬ ‫‪i‬‬
‫;‪using System‬‬
‫‪namespace p64‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static string deleteSpace(string[] s‬‬
‫{‬
‫;"" = ‪string s1‬‬
‫)‪foreach (string s2 in s‬‬
‫;‪if (s2.Length != 2) s1 = s1 + s2‬‬
‫;‪return s1‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫آرایهها و رشتهها‬ ‫‪332‬‬

‫{‬
‫;}' ' ‪char[] sp = new char[3] { '\t', '\n',‬‬
‫;)"‪Console.Write("Enter a string:‬‬
‫; ;)‪string[] s = Console.ReadLine().Split(sp‬‬
‫;))‪Console.Write("Result is {0}", deleteSpace(s‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .64‬یک عدد صحیح اول است‪ ،‬وقتیکه بر خودش و یک بخشپذیر باشد‪ .‬غربال اراتوتس روشی را برای تعیی‬
‫عدد اول دارد‪ .‬در ای روش آرایهای در نظر میگیرد و اعمال زیر را بر روی آن انجام میدهد تیا اعیداد اول را‬
‫تعیی کند‪:‬‬
‫‪ .1‬مقدار اولیه همه عناصر آرایه را برابر یک قرار میدهد‪.‬‬
‫‪ .2‬با شروع از اندی ‪( 2‬اندی یک حتماً اول است)‪ .‬هر بار که عنصری با مقدار یک یافت میشود‪ ،‬بقیه عناصری که‬
‫اندیسشان مضربی از ‪ 2‬باشد (اندی های ‪ 14 ،0 ،6 ،4‬و ‪ )...‬را برابر صفر قرار میدهد‪ .‬برای اندی ‪ ،3‬همه عناصر بعید‬
‫از ‪ 3‬که اندیسشان مضربی از ‪ 3‬است (اندی های ‪ 15 ،12 ،9 ،6‬و ‪ )...‬صفر قرار میگیرد و به همی ترتییب ایی رونید‬
‫ادامه مییابد‪.‬‬
‫‪ .3‬در پایان عناصری که هنوز یک هستند‪ ،‬شماره اندی هایشان اولاند‪.‬‬
‫برنامهای که با استفاده از یک آرایه ‪ 1444‬تایی‪ ،‬اعداد اول ‪ 1‬تا ‪ 999‬را به دست آورده‪ ،‬نمایش میدهد‪.‬‬
‫متد )(‪ ،main‬ابتدا‪ ،‬آرایه ‪ 1441‬عنصری به نام ‪ a‬را تعریف کرده‪ ،‬مقادیر آن را صفر میدهد‪ .‬سس بیا اسیتفاده از‬
‫یک حلقه مقادیر تمام عناصر آرایه را برابر یک قرار میدهد‪ .‬در ادامه‪ ،‬با استفاده از حلقه تودرتو اندی مضیربهیای‬
‫‪ 4 ،3 ،2‬تا ‪ 44‬آرایه را برابر صفر قرار میدهد‪ .‬در پایان‪ ،‬چنانچه مقدار آرایهای صفر نباشد‪ ،‬اندی معادل آن را نمایش‬
‫میدهد‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫آرایهای ‪ 0110‬عنصری برای تعیین اینکه عدد معادل اندیس آرایه اول است یا خیر‬ ‫‪a‬‬ ‫‪main‬‬
‫شمارندهای برای پیمایش آرایه جهت مقداردهی اولیه و نمایش عناصر غیر صفر آرایه‬ ‫‪i‬‬
‫‪ j‬برای پیمایش مضربهای ‪i‬‬ ‫‪j‬‬
‫;‪using System‬‬
‫‪namespace p65‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int i‬‬
‫;]‪int[] a = new int[1001‬‬
‫)‪for (i = 0; i <= 999; i++‬‬
‫;‪a[i] = 1‬‬
‫)‪for (i = 2; i <= 40; i++‬‬
‫)‪for (int j = 2; j <= (1000 / i); j++‬‬
‫;‪a[(i * j)] = 0‬‬
‫)‪for (i = 1; i <= 1000; i++‬‬
‫;)‪if (a[i] != 0) Console.Write("{0}\t", i‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫‪332‬‬ ‫فصل چهارم‬

‫}‬
‫}‬

‫‪ .65‬برنامهای که آرایهای ‪ 14‬عنصری با مقادیر اولیه را تعریف کرده و به روش بازگشیتی مجمیوع عناصیر آراییه را‬
‫محاسبه و نمایش میدهد‪.‬‬
‫متد )(‪ ،main‬ابتدا‪ ،‬آرایه ‪ a‬با ‪ 14‬عنصر با مقادیر اولیه تعریف میکند‪ ،‬سس با نمایش پیغام مناسب و فراخوانی متد‬
‫)(‪ ،sum‬مجموع مقادیر عناصر آرایه را نمایش میدهد‪.‬‬
‫متد )(‪ ،sum‬پارامترهای آرایه ‪ a‬و تعداد عناصر آن (‪ )n‬را دریافت کرده‪ ،‬به روش بازگشتی مجموع مقادیر عناصر‬
‫آرایه ‪ a‬را برمیگرداند‪.‬‬
‫;‪using System‬‬
‫‪namespace p66‬‬ ‫هدف‬ ‫متغیر‬ ‫متد‬
‫{‬
‫‪class Program‬‬ ‫‪ a‬آرایه ‪ 01‬عنصری با مقادیر‬ ‫‪main‬‬
‫{‬ ‫اولیه‬
‫)‪static int sum(int[] a, int n‬‬
‫{‬ ‫‪ a‬آرایهای که به روش بازگشتی‬ ‫‪sum‬‬
‫)‪if (n == 1‬‬
‫;)]‪return (a[0‬‬ ‫باید مجموع مقادیر آن‬
‫‪else‬‬ ‫مشخص گردد‪.‬‬
‫]‪return (a[n - 1‬‬
‫;))‪+ sum(a, n - 1‬‬ ‫تعداد عناصر آرایه ‪a‬‬ ‫‪n‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;} ‪int[] a=new int[10] {12,2,33, 4, 5, 67, 68, 88, 9, 150‬‬
‫;))‪Console.Write("Sum is {0}", sum(a, 10‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .66‬برنامهای که مقادیر آرایه ‪ 14‬عنصری که مقدار اولیه دارد‪ m ،‬واحد به سمت راست شیفت میدهد‪.‬‬
‫متد )(‪ ،main‬ابتدا‪ ،‬آرایه ‪ n ،a‬عنصری را با مقادیر اولیه تعریف میکند‪ ،‬سس متغیر ‪ m‬را تعریف مینماید و با یک‬
‫پیغام مناسب ‪ m‬را میخواند‪ .‬در ادامه‪ ،‬با فراخوانی متد )(‪ ،printArray‬مقادیر اولیه آرایه ‪ a‬را نمایش میدهید و در‬
‫پایان‪ ،‬با فراخوانی متد )(‪ ،rightShift‬عناصر آرایه را ‪ m‬واحید بیه سیمت راسیت شییفت داده و بیا فراخیوانی متید‬
‫)(‪ ،printArray‬عناصر آرایه شیفت یافته را نیز نمایش میدهد‪.‬‬
‫آرایهها و رشتهها‬ ‫‪332‬‬

‫متد )(‪ ،rightShift‬پارامترهای آرایه ‪( x‬آرایهای که باید ‪ m‬عنصر به سمت راست شیفت یابد) و تعداد شییفت بیه‬
‫راست (‪ )m‬را دریافت کرده‪ ،‬ابتدا‪ ،‬آرایه ‪ x1‬را تعریف میکند‪ .‬عناصر آرایه ‪ x‬را با توجه به شیفت در آرایه ‪ x1‬قیرار‬
‫میدهد و در پایان‪ ،‬عناصر آرایه ‪ x1‬را در آرایه ‪ x‬قرار میدهد‪.‬‬
‫متد )(‪ ،printArray‬آرایه ‪ a‬را بهعنوان پارامتر دریافت کرده‪ ،‬با استفاده از حلقه تکرار عناصر آراییه ‪ a‬را نمیایش‬
‫میدهد‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫تعداد عناصر آرایه ‪( a‬ثابت ‪)01‬‬ ‫ثابت ‪n‬‬ ‫سراسری‬
‫آرایهای با ‪ 01‬عنصر با مقادیر اولیه برای عناصر آن‬ ‫‪a‬‬ ‫‪Main‬‬

‫تعداد شیفت به راست‬ ‫‪m‬‬


‫آرایهای که عناصر آن باید ‪ m‬واحد به سمت راست شیفت یابند‬ ‫‪x‬‬
‫آرایهای که عناصر شیفت یافته را در خود نگهداری میکند‪.‬‬ ‫‪x1‬‬
‫‪rightShift‬‬
‫تعداد شیفتها را تعیین میکند‬ ‫‪m‬‬
‫شمارنده‬ ‫‪i‬‬
‫عناصر آرایه که باید چاپ شوند‬ ‫‪a‬‬
‫‪printArray‬‬
‫شمارندهای برای پیمایش آرایه اولیه جهت چاپ‬ ‫‪i‬‬
‫;‪using System‬‬
‫‪namespace p67‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫;‪const int N = 10‬‬
‫)‪static void rightShift(int[] x, int m‬‬
‫{‬
‫;]‪int[] x1 = new int[N‬‬
‫;‪int i‬‬
‫)‪for (i = (N - m); i < N; i++‬‬
‫;]‪x1[i - N + m] = x[i‬‬
‫)‪for (i = (N - m - 1); i >= 0; i--‬‬
‫;]‪x[i + m] = x[i‬‬
‫)‪for (i = 0; i <= (m - 1); i++‬‬
‫;]‪x[i] = x1[i‬‬
‫}‬
‫)‪static void printArray(int[] a‬‬
‫{‬
‫;‪int i‬‬
‫)‪for (i = 0; i < N; i++‬‬
‫;)]‪Console.Write("{0}\t", a[i‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;} ‪int[] a=new int[N] {10,20,30,40,50,60,70,80,90, 100‬‬
‫;‪int m‬‬
‫;)"‪Console.Write("Enter a number 1 to 10:‬‬
‫;))(‪m = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.WriteLine("First Array‬‬
‫;)‪printArray(a‬‬
‫;)‪rightShift(a, m‬‬
‫;)"‪Console.WriteLine("Shifted Array‬‬
‫;)‪printArray(a‬‬
‫;)(‪Console.ReadKey‬‬
‫‪332‬‬ ‫فصل چهارم‬

‫}‬
‫}‬
‫}‬

‫‪ .67‬متد بازگشتی که ترکیبا یک مجموعه را برمیگرداند و نمایش میدهد‪ .‬ای متد دارای سه پارامتر اسیت کیه‬
‫عبار اند از‪ :‬شروع آرایه (مجموعه)‪ ،‬تعداد عناصر مجموعه و ترکیبا مجموعه‪ .‬سس ‪ ،‬برنامهای کیه تعیداد ترکیبیا‬
‫مجموعه را نمایش میدهد‪ .‬بهعنوانمثال‪ ،‬مجموعه }‪ {A, B, C‬را در نظر بگیرید‪ .‬برای ای مجموعه حالتهای زیر را‬
‫}… ‪{AAA, AAB, AAC, ABA, ABB, ABC, ACB, ACC,‬‬ ‫داریم‪:‬‬
‫متد )(‪ ،main‬ابتدا آرایه ‪( a‬کاراکترهایی که باید جایگشت از آن کاراکترها تولید شوند) را تعریف میکند و بیه‬
‫آن مقدار اولیه میدهد‪ .‬سس با فراخوانی متد )(‪ ،permutation‬جایگشتها را ایجاد کرده‪ ،‬نمایش میدهد‪.‬‬
‫متد )(‪ ، permutation‬شروع جایگشت‪ ،‬تعداد عناصر مجموعه و مقدار مجموعه را دریافت کرده‪ ،‬جایگشیتهیای‬
‫موردنظر را بهصور بازگشتی ایجاد میکند و نمایش میدهد‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫تعداد جایگشتهای ایجادشده و اندیس آرایهای که جایگشتها را نگهداری میکند‬ ‫‪bNum‬‬ ‫سراسری‬
‫آرایهای ‪ n‬عنصری که بخش جایگشت ایجادشده تا کامل شدن جایگشت ایجاد شود‬ ‫‪before‬‬
‫آرایه اولیه که کاراکترهای را نگهداری میکند که از طریق آن باید جایگشت ایجاد شود‬ ‫‪a‬‬ ‫‪main‬‬
‫شروع آرایه ‪( a‬مجموع)‬ ‫‪s‬‬
‫تعداد عناصر مجموعه‬ ‫‪n‬‬
‫‪permutation‬‬
‫اشارهگری که آرایه ‪ a‬را از ‪ main‬میگیرد‬ ‫‪a‬‬
‫شمارنده‬ ‫‪i, j‬‬
‫;‪sing System‬‬
‫‪namespace p68‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫;‪const int N = 5‬‬
‫;]‪static char[] before = new char[N‬‬
‫;‪static int bNum = 0‬‬
‫)‪public static void permutition(int s, int n, char[] a‬‬
‫{‬
‫;‪int i‬‬
‫;‪int j‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫{‬
‫)‪if (s != n - 1‬‬
‫{‬
‫;]‪before[bNum++] = a[i‬‬
‫;)‪permutition(s + 1, n, a‬‬
‫;‪bNum--‬‬
‫}‬
‫‪else‬‬
‫{‬
‫)‪for (j = 0; j < n; j++‬‬
‫{‬
‫;)]‪Console.Write(before[j‬‬
‫آرایهها و رشتهها‬ ‫‪342‬‬

‫}‬
‫;)]‪Console.Write(a[i‬‬
‫;)"‪Console.Write("\t‬‬
‫}‬
‫}‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;} '‪char[] a = { 'A', 'B', 'C', 'D', 'E‬‬
‫;)‪permutition(0, 5, a‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .60‬همانطور که میدانید فاکتوریل اعداد بزرگ در یک ‪ double‬جا نمیشود‪ .‬برنامیهای کیه فاکتورییل اعیداد‬
‫بزرگ را به کمک آرایه محاسبه میکند و نمایش میدهد‪.‬‬
‫متد )(‪ ،main‬ابتدا آرایه ‪ a‬را برای نگهداری مقدار فاکتوریل اعداد بزرگ تعریف میکند‪ .‬سس ‪ ،‬متغیر ‪number‬‬
‫را تعریف میکند و مقدار آن را از ورودی میخواند‪ .‬در ادامه‪ ،‬با فراخوانی متد )(‪ ،initArray‬مقادیر آرایه ‪ a‬را برابر‬
‫صفر قرار میدهد و با فراخوانی متد )(‪ ،printArray‬عناصر آرایه ‪( a‬نتیجه فاکتوریل) را نمایش میدهد‪.‬‬
‫متد )(‪ ،initArray‬آرایه ‪ a‬را بهعنوان پارامتر دریافت کرده‪ ،‬به همه عناصر آن مقدار صفر تخصیص میدهد‪.‬‬
‫متد )(‪ ،printArray‬آرایه ‪ a‬را بهعنوان پارامتر دریافت کرده‪ ،‬با استفاده از یک حلقه تکرار‪ ،‬مقادیر صفر ابتیدای‬
‫آرایه را رد میکند و با استفاده از حلقه تکرار دیگر‪ ،‬بقیه عناصر آرایه (یعنی‪ ،‬همان نتیجه فاکتوریل) را نمایش میدهد‪.‬‬
‫متد )(‪ ،fact‬آرایه ‪( a‬نتیجه فاکتوریل را نگهداری میکند) و ‪( number‬عددی کیه بایید فاکتورییل آن محاسیبه‬
‫شود) را بهعنوان پارامتر دریافت کرده‪ ،‬با استفاده از یک الگوریتم فاکتوریل عدد ‪ number‬را محاسبه میکنید و در‬
‫آرایه ‪ a‬قرار میدهد‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫تعداد عناصر آرایه ‪ a‬برای نگهداری فاکتوریل اعداد بزرگ (ثابت ‪)31‬‬ ‫‪n‬‬ ‫سراسری‬
‫آرایهای که فاکتوریل را نگهداری میکند‬ ‫‪a‬‬ ‫‪main‬‬
‫عددی که باید فاکتوریل آن محاسبه شود‬ ‫‪number‬‬
‫]‪ a[i‬تقسیمبر ‪ 01‬در هر مرحله‬ ‫‪c‬‬
‫آرایهای که باید عناصر آن صفر شوند‬ ‫‪a‬‬ ‫‪initArray‬‬

‫شمارنده‬ ‫‪i‬‬
‫آرایهای که باید عناصر آن چاپ شود‪.‬‬ ‫‪a‬‬ ‫‪printArray‬‬
342 ‫فصل چهارم‬

a ‫شمارنده برای رد کردن مقادیر صفر ابتدای آرایه‬ j


‫ بعد از رد کردن صفرها‬j-1 ‫برای نمایش عناصر آرایه بعد از‬ i
‫ را نگهداری میکند‬number ‫آرایهای که فاکتوریل محاسبهشده‬ a
‫عددی که باید فاکتوریل آن محاسبه شود‬ number
‫شمارنده‬ i, j fact
‫ در هر مرحله‬01 ‫ تقسیمبر‬a[j] ‫خارجقسمت‬ p
‫رقم نقلی در هر مرحله‬ c
using System;
namespace p69
{
class Program
{
const int N = 32;
static void initArray(int[] a)
{
int i;
for (i = 0; i <= N - 1; i++)
a[i] = 0;
}
static void printArray(int[] a)
{
int j = 0, i;
while (a[j++] == 0) ;
for (i = j - 1; i <= N - 1; i++)
Console.Write(a[i]);
}
static void fact(int[] a, int number)
{
int p, i, j, c;
a[N - 1] = 1;
for (i = 1; i <= number; i++)
{
c = 0;
for (j = N - 1; j >= 1; j--)
{
a[j] = a[j] * i + c;
if (a[j] > 9)
{
p = a[j] / 10;
a[j] %= 10;
c = p;
}
else
c = 0;
}
}
}
static void Main(string[] args)
{
int[] a = new int[N];
Console.Write("Enter a number:");
int number = int.Parse(Console.ReadLine());
initArray(a);
Console.Write("Fact {0} is ", number);
fact(a, number);
printArray(a);
‫آرایهها و رشتهها‬ ‫‪346‬‬

‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫زیر را در آرایه دیگر به نام ‪ z‬قرار می‪-‬‬ ‫برنامهای که دو آرایه ‪ 3 × 4‬به نامهای ‪ x‬و ‪ y‬را خوانده‪ ،‬حاصل عبار‬ ‫‪.69‬‬
‫دهد‪:‬‬
‫‪Z = 2x – 3y‬‬
‫متد )(‪ ،main‬ابتدا آرایههای ‪ y ،x‬و ‪ z‬را تعریف کرده‪ ،‬با فراخوانی دو بار متد )(‪ ،readA2D‬عناصر آرایه ‪ x‬و ‪ y‬را‬
‫میخواند‪ ،‬سس ‪ ،‬با فراخوانی متد )(‪ ،Zarray‬حاصل عبار را حساب کرده‪ ،‬در آرایه ‪ z‬قرار میدهید‪ .‬در ادامیه‪ ،‬بیا‬
‫پیغامهای مناسب و فراخوانی متد )(‪ printA2D‬آرایههای ‪ y ،x‬و ‪ z‬را نمایش میدهد‪.‬‬
‫متد )(‪ ،readA2D‬پارامترهای ‪( x‬آرایهای که باید اطالعا آن از ورودی خوانده شود)‪( n ،‬تعداد سیطرها) و ‪m‬‬
‫(تعداد ستونها) را دریافت کرده‪ ،‬عناصر آرایه را از ورودی میخواند‪.‬‬
‫آن نمایش داده شود)‪( n ،‬تعداد سطرها) و ‪( m‬تعداد‬ ‫متد )(‪ ،printA2D‬پارامترهای ‪( x‬آرایهای که باید اطالعا‬
‫آرایه ‪ x‬را نمایش میدهد‪.‬‬ ‫ستونها) را دریافت کرده‪ ،‬اطالعا‬
‫‪2x – 3y‬‬ ‫متد )(‪ ،Zarray‬پارامترهای آرایه ‪( x‬آرایه اول)‪ ،‬آرایه ‪( y‬آرایه دوم)‪ ،‬آرایه ‪( z‬آرایه که حاصل عبیار‬
‫را محاسبه میکند و در‬ ‫را نگهداری میکند)‪( n ،‬تعداد سطرها) و ‪( m‬تعداد ستونها) را دریافت کرده‪ ،‬حاصل عبار‬
‫آرایه ‪ z‬قرار میدهد‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫آرایه ‪ 3× 4‬که باید دادههای خواندهشده در آن قرار گیرد‪.‬‬ ‫‪x‬‬ ‫‪readA2D‬‬
‫تعداد سطرها‬ ‫‪n‬‬
‫تعداد ستونها‬ ‫‪m‬‬
‫شمارندهای برای پیمایش سطرها و ستونهای آرایه‬ ‫‪i, j‬‬
‫آرایه اول‬ ‫‪x‬‬ ‫‪Main‬‬
‫آرایه دوم‬ ‫‪y‬‬
‫آرایهای که حاصل عبارت را نگهداری میکند‪.‬‬ ‫‪z‬‬
‫آرایهای که باید اطالعات آن نمایش داده شود‪.‬‬ ‫‪x‬‬
‫تعداد سطرها‬ ‫‪n‬‬
‫‪printA2D‬‬
‫تعداد ستونها‬ ‫‪m‬‬
‫شمارندهای برای پیمایش سطرها و ستونهای آرایه‬ ‫‪i, j‬‬
‫آرایه اول‬ ‫‪x‬‬
‫آرایه دوم‬ ‫‪y‬‬
‫آرایهای که حاصل عبارت را نگهداری میکند‬ ‫‪z‬‬
‫‪Zarray‬‬
‫تعداد سطرها‬ ‫‪n‬‬
‫تعداد ستونها‬ ‫‪m‬‬
‫شمارندهای برای پیمایش سطرها و ستونهای آرایه ‪ x‬و ‪y‬‬ ‫‪i, j‬‬
343 ‫فصل چهارم‬

using System;
namespace p70
{
class Program
{
static void readA2D(int[,] a, int n, int m)
{
for (int i = 0; i < n; i++)
{
Console.Write("Enter {0} number for row[{1}]:", m, i);
string[] s = Console.ReadLine().Split(' ');
for (int j = 0; j < m; j++)
a[i, j] = int.Parse(s[j]);
}
}
static void printA2D(int[,] a, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
Console.Write("{0}\t", a[i, j]);
Console.WriteLine();
}
}
static void ZArray(int[,] x, int[,] y, int[,] z,
int n, int m)
{
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
z[i, j] = 2 * x[i, j] - 3 * y[i, j];
}
}
static void Main(string[] args)
{
int[,] x = new int[3, 4];
int[,] y = new int[3, 4];
int[,] z = new int[3, 4];
readA2D(x, 3, 4);
readA2D(y, 3, 4);
ZArray(x, y, z, 3, 4);
Console.WriteLine("\n\tArray x ");
printA2D(x, 3, 4);
Console.WriteLine("\n\t Array y ");
printA2D(y, 3, 4);
Console.WriteLine("\n\t Array z ");
printA2D(z, 3, 4);
Console.ReadKey();
}
}
}
‫آرایهها و رشتهها‬ ‫‪344‬‬

‫مقدار و مکانهیای آنهیا را‬ ‫‪ .74‬برنامهای که بی تعدادی عدد که در آرایه قرار دارند‪ ،‬بزرگتری ‪ ،‬کوچکتری‬
‫پیداکرده‪ ،‬نمایش میدهد‪.‬‬
‫متد )(‪ ،main‬ابتدا آرایه ‪ a‬را تعریف کرده و به عناصر آن مقدار اولیه تخصییص مییدهید‪ .‬سیس متغیرهیا ‪،min‬‬
‫‪ lmin ،max‬و ‪ lmax‬را تعریف میکند‪ .‬در ادامه‪ ،‬با عملگر ‪ ،sizeof‬تعداد عناصر آراییه ‪ a‬را در ‪ d‬قیرار مییدهید‪ .‬در‬
‫پایان‪ ،‬با فراخوانی متد )(‪ getExtremes‬بزرگتری مقدار‪ ،‬کوچکتری مقدار‪ ،‬مکیان بیزرگ تیری مقیدار‪ ،‬مکیان‬
‫کوچکتری مقدار را برمیگرداند (چون ای پارامترها از نوع ارجاع هسیتند) و آنهیا را بیا پیغیام مناسیب نمیایش‬
‫میدهد‪.‬‬
‫متد )(‪ ،getExtremes‬پارامترهای ‪( &min‬کوچک تری مقیدار)‪( &max ،‬بییشتیری مقیدار)‪( &lmin ،‬مکیان‬
‫کوچکتری مقدار)‪( &lmax ،‬مکان بیشتری مقدار)‪ ،‬آرایه ‪ a‬و ‪( n‬تعداد عناصر آرایه ‪ )a‬را دریافت میکنید‪ .‬ابتیدا‪،‬‬
‫]‪ a[0‬را برابر ‪ min‬و ]‪ a[1‬را برابر ‪ max‬قرار میدهد (‪ lmin‬را برابر صفر و ‪ lmax‬را برابر یک قرار مییدهید)‪ .‬سیس‬
‫]‪ a[0‬را با ]‪ a[1‬مقایسه میکند‪ ،‬اگر ]‪ a[0‬بزرگتر از ]‪ a[1‬باشد‪ ،‬جیای ‪ min‬و ‪( max‬و همیی طیور ‪ lmin‬و ‪ )lmax‬را‬
‫عوض میکند‪ .‬سس ‪ ،‬عناصر آرایه ‪i‬امی عنصر آرایه را با ‪ max‬مقایسه میکند‪ ،‬اگر ‪i‬امی عنصر آرایه بیزرگتیری از‬
‫‪ max‬باشد‪ max ،‬را در ‪ lmax ،min‬را در ‪ lmin‬و ‪i‬امی عنصیر آراییه در ‪ max‬و ‪ i‬را در ‪ )lmax‬قیرار مییدهید‪ .‬در‬
‫ادامه‪i ،‬امی عنصر آرایه با ‪ min‬مقایسه میکند‪ .‬اگر ‪i‬امی عنصر آرایه کوچک از ‪ min‬باشید‪ ،‬آن را در ‪ min‬و ‪ i‬را در‬
‫‪ lmin‬قرار میدهد‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫آرایهای که باید بزرگترین‪ ،‬کوچکترین مقدار و مکان آنها پیدا شود‪.‬‬ ‫‪a‬‬ ‫‪main‬‬
‫کوچکترین مقدار‬ ‫‪min‬‬
‫مکان کوچکترین مقدار‬ ‫‪lmin‬‬
‫بزرگترین مقدار‬ ‫‪max‬‬
‫مکان بزرگترین مقدار‬ ‫‪lmax‬‬
‫تعداد عناصر آرایه‬ ‫‪n‬‬
342 ‫فصل چهارم‬

main() ‫ این مقدار به متد‬.‫پارامتری که کمترین مقدار را مشخص میکند‬ &min Get
Extremes
‫برمیگردد‬
‫ برگشت‬main() ‫ این مقدار به متد‬.‫پارامتری که بیشترین مقدار را مشخص میکند‬ &max
.‫داده میشود‬
‫ این مقدار به متد‬.‫پارامتری که مکان کوچکترین مقدار را مشخص میکند‬ &lmin
‫ برگشت داده میشود‬main()
‫ این مقدار نیز به متد‬.‫پارامتری که مکان بیشترین مقدار را مشخص میکند‬ &lmax
‫ برگشت داده میشود‬main()
‫آرایه موردنظر‬ a
‫مقدار عناصر آرایه‬ n
using System;
namespace p72
{
class Program
{
static void printArray(int[] a, int n)
{
int i;
Console.Write("Array is:");
for (i = 0; i < n; i++)
Console.Write(" {0}", a[i]);
Console.WriteLine();
}
static void createRand(int[] a, int n)
{
Random r = new Random();
for (int i = 0; i < n; i++) a[i] = r.Next(2000);
}
static void largest(out int max1,out int max2,int[] a,int n)
{
max1 = a[0];
max2 = a[1];
if (a[0] < a[1])
{
int temp = max1;
max1 = max2;
max2 = temp;
}
for (int i = 2; i < n; i++)
{
if (a[i] > max2)
{
int temp = max2;
max2 = a[i];
a[i] = temp;
}
if (max2 > max1)
{
int temp = max1;
max1 = max2;
max2 = temp;
}
}
‫آرایهها و رشتهها‬ ‫‪342‬‬

‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int n = 10‬‬
‫;]‪int[] a = new int[n‬‬
‫;)‪createRand(a, n‬‬
‫;‪int max1, max2‬‬
‫;)‪printArray(a, n‬‬
‫;)‪largest(out max1, out max2, a, n‬‬
‫;)‪Console.Write("Max1 = {0}\tMax2 ={1} ", max1, max2‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .71‬برنامهای که ‪ 24‬عدد تصادفی (دو سری اعداد تصادفی ‪ 14‬تایی) ایجاد کرده‪ ،‬در دو آرایه قرار میدهد‪ .‬سیس‬
‫یک عدد را خوانده‪ ،‬تمام عناصر آرایه دوم را در آرایه اول از مکان واردشده درج مینماید‪.‬‬
‫متد )(‪ ،main‬ابتدا آرایههای ‪(a‬با ‪ 24‬عنصر‪ ،‬چون بعد از درج عناصر ‪ b‬در ‪ 24 ،a‬عنصری خواهید شید)‪( b ،‬بیا ‪14‬‬
‫عنصر) و متغیرهای ‪ n‬و ‪ index‬را تعریف میکند‪ .‬سس ‪ ،‬با فراخیوانی متید )(‪ 14 ،createRand‬عیدد تصیادفی تولیید‬
‫کرده‪ ،‬در آرایه ‪ a‬قرار میدهد و با فراخوانی متد )(‪ ،printArray‬مقادیر آرایه ‪ a‬را نمیایش مییدهید‪ .‬در ادامیه‪ ،‬بیا‬
‫فراخوانی متد )(‪ 14 ،createRand‬عدد تصادفی دیگر تولید کرده‪ ،‬در آرایه ‪ b‬قرار مییدهید و بیا فراخیوانی متید‬
‫)(‪ printArray‬مقادیر آرایه ‪ b‬را نمایش میدهد‪ .‬در پایان‪ ،‬مقیدار ‪ index‬را خوانیده‪ ،‬بیا فراخیوانی متید )(‪،insert‬‬
‫مقادیر آرایه ‪ b‬را از مکان ‪ index‬آرایه ‪ a‬درج نموده و با فراخوانی متد )(‪ ،printArray‬مقیادیر جدیید آراییه ‪ a‬را‬
‫نمایش میدهد‪.‬‬
‫متد )(‪ ،createRand‬پارامترهای ‪( a‬آرایهای که اعداد تصادفی تولیدشده را نگهداری میکند) و ‪( n‬تعداد عناصر‬
‫آرایه) را دریافت کرده‪ n ،‬عدد تصادفی بی صفر تا ‪ 24‬تولید مینماید و به عناصر آرایه ‪ a‬تخصیص میدهد‪.‬‬
‫متد )(‪ ،printArray‬پارامترهای ‪( a‬آرایهای که باید اطالعا آن نمایش داده شود) و ‪( n‬تعداد عناصر) آراییه را‬
‫دریافت کرده‪ ،‬مقادیر آرایه ‪ a‬را نمایش میدهد‪.‬‬
‫متد )(‪ ،insert‬پارامترهای ‪( a‬آرایهای اول)‪ ،‬آرایه ‪( b‬آرایه دوم)‪( &n ،‬تعداد عناصیر آراییه ‪ a‬و ‪ )b‬و ‪( m‬انیدی‬
‫درج آرایه ‪ b‬در آرایه ‪ )a‬را گرفته‪ ،‬عناصر آرایه ‪ b‬در اندی ‪ m‬آرایه ‪ a‬درج میکند‪ .‬نکتهای که در ای متد فیراوان‬
‫است‪ ،‬ای است که پارامتر ‪ n‬بهصور ارجاع تعریفشده است‪ ،‬چون بعد از درج مقادیر آرایه ‪ b‬در آراییه ‪ ،a‬تعیداد‬
‫عناصر آرایه ‪ a‬تغییر مییابد که باید به متید )(‪ main‬برگردانیده شیود‪ .‬بیه همیی دلییل ‪ n‬بیهصیور ‪( &n‬ارجیاع)‬
‫تعریفشده است‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫آرایه اول که تعداد عناصر آن ‪ 11‬میباشد‪.‬‬ ‫‪a‬‬ ‫‪Main‬‬
‫آرایه دوم که تعداد عناصر آن ‪ 01‬است‪.‬‬ ‫‪b‬‬
‫تعداد عناصر آرایه دوم‬ ‫‪n‬‬
‫مکان درج عناصر آرایه دوم در آرایه اول‬ ‫‪index‬‬
‫آرایهای که اعداد تصادفی را نگهداری میکند‬ ‫‪a‬‬ ‫‪createRand‬‬
‫تعداد عناصر آرایه ‪a‬‬ ‫‪n‬‬
‫شمارندهای برای پیمایش عناصر آرایه ‪ a‬جهت قرار دادن اعداد تصادفی تولیدشده در آرایه‬ ‫‪i‬‬
‫آرایهای که مقادیر عناصر آن باید چاپ شود‬ ‫‪a‬‬ ‫‪printArray‬‬
‫تعداد عناصر آرایه ‪a‬‬ ‫‪n‬‬
342 ‫فصل چهارم‬

a ‫شمارندهای برای پیمایش عناصر آرایه‬ i


.‫ آن درج شود‬m ‫ باید در مکان‬b ‫آرایهای که اطالعات آرایه‬ a Insert
.‫ درج شود‬a ‫ آرایه‬m ‫آرایهای که باید در مکان‬ b
b ‫ و‬a ‫تعداد عناصر آرایه‬ n
.‫ را تعیین میکند‬a ‫ در آرایه‬b ‫مکان درج اطالعات آرایه‬ m
m ‫ بعد از اندیس‬a ‫تعداد عناصر مانده‬ k
‫ به مکان جدید و درج عناصر‬a ‫ آرایه‬m ‫شمارندهای جهت انتقال عناصر بعد از مکان‬ j
a ‫ در آرایه‬b ‫آرایه‬
using System;
namespace p73
{
class Program
{
static void printArray(int[] a, int n)
{
int i;
for (i = 0; i < n; i++)
Console.Write(" {0}", a[i]);
Console.WriteLine();
}
static void createRand(int[] a, int n)
{
Random r = new Random();
for (int i = 0; i < n; i++) a[i] = r.Next(2000);
}
static void insert(int[] a, int[] b, ref int n, int m)
{
int k = n - m;
int j = n - 1;
for (int i = n - 1; i >= m; i--)
{
a[i + n] = a[j--];
}
j = m;
for (int i = 0; i < n; i++)
{
a[j] = b[i];
j++;
}
n = n + n;
}
static void Main(string[] args)
{
int n = 10, index;
int[] a = new int[20];
int[] b = new int[10];
createRand(a, n);
Console.Write("A is:");
printArray(a, n);
createRand(b, n);
Console.Write("B is:");
printArray(b, n);
Console.Write("\nEnter index for insert :");
index = int.Parse(Console.ReadLine());
‫آرایهها و رشتهها‬ ‫‪342‬‬

‫;)‪insert(a, b, ref n, index‬‬


‫;)‪printArray(a, n‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .72‬برنامهای که یکرشته را خوانده‪ ،‬سس دو عدد را میخواند و از کاراکترهای عدد اول واردشده تا عیدد دوم‬
‫واردشده رشته ورودی را حذف میکند (یعنی‪ ،‬بخشی از رشته را حذف مینماید)‪.‬‬
‫متد )(‪ ،main‬ابتدا رشته ‪ str1‬را تعریف کرده‪ ،‬با یک پیغام مناسیب آن را از ورودی مییخوانید‪ ،‬سیس انیدی‬
‫شروع و پایان حذف رشته را با پیغامهای مناسب میخواند و در متغیرهای ‪ a‬و ‪ b‬که تعریف میکند‪ ،‬قرار میدهید‪ .‬در‬
‫ادامه‪ ،‬با فراخوانی متد )(‪ ،delStr‬بخش تعیی شده رشته ‪ str1‬را حیذف مییکنید و در پاییان‪ ،‬رشیته ‪ str1‬را نمیایش‬
‫میدهد‪.‬‬
‫تابه )(‪ ،lenStr‬رشته ‪ str‬را بهعنیوان پیارامتر دریافیت کیرده‪ ،‬بیا اسیتفاده از ییک حلقیه ‪ while‬طیول رشیته را‬
‫برمیگرداند‪.‬‬
‫متد )(‪ ،delStr‬رشته ‪ ،str1‬مکان شروع حذف (‪ )a‬و مکان پایان حذف رشته (‪ )b‬را بهعنوان پارامتر دریافت کرده‪،‬‬
‫کاراکترهای از مکان ‪ b‬تا انتهای رشته (مکان ‪i‬ام) را در مکان ‪ i – b + a‬قرار میدهد تیا کاراکترهیای از مکیان ‪ a‬تیا‬
‫مکان ‪ b‬رشته حذف شوند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫رشته خواندهشده‬ ‫‪str1‬‬ ‫‪main‬‬
‫اندیس شروع حذف کاراکترهای رشته‬ ‫‪a‬‬
‫اندیس پایان حذف کاراکترهای رشته‬ ‫‪b‬‬
‫رشتهای که باید بخشی از آن حذف شود‪.‬‬ ‫‪str1‬‬ ‫‪delStr‬‬
‫اندیس شروع حذف کاراکترهای رشته‬ ‫‪a‬‬
‫‪using‬‬ ‫;‪System‬‬
‫‪namespace‬‬ ‫‪ b‬اندیس پایان حذف کاراکترهای رشته‬ ‫‪p74‬‬
‫{‬ ‫‪ s‬رشته نتیجه بعد حذف بخشی از آن‬
‫‪class‬‬ ‫‪Program‬‬
‫{‬
‫)‪public static string delStr(string str1, int a, int b‬‬
‫{‬
‫;"" = ‪string s‬‬
‫;)‪s = str1.Substring(0, a - 1) + str1.Substring(b - 1‬‬
‫;‪return s‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)]‪string str1 = new string(new char[256‬‬
‫;)" ‪Console.Write("Enter string1 :‬‬
‫;)(‪str1 = Console.ReadLine‬‬
‫;)" ‪Console.Write("start position:‬‬
‫;))(‪int a = int.Parse(Console.ReadLine‬‬
‫;)" ‪Console.Write("End position:‬‬
‫;))(‪int b = int.Parse(Console.ReadLine‬‬
‫‪342‬‬ ‫فصل چهارم‬

‫;)‪str1=delStr(str1, a, b‬‬
‫;)" ‪Console.Write("Str1:‬‬
‫;)‪Console.Write(str1‬‬
‫;)‪Console.ReadKey(true‬‬
‫}‬
‫}‬
‫}‬

‫‪ .73‬برنامهای که تعداد اعداد تصادفی تولید کرده‪ ،‬در آرایه ‪ 4 × 4‬قرار میدهد‪ .‬سس هر سیطر آراییه را جداگانیه‬
‫مرتب مینماید‪ .‬در پایان‪ ،‬آرایهای که عناصر سطرهای آن مرتبشدهاند را نمایش میدهد‪.‬‬
‫متد )(‪ ،main‬ابتدا آرایه ‪ arr‬با ‪ 4‬سطر و ‪ 4‬ستون تعریف کرده‪ ،‬سس ‪ ،‬با فراخوانی متد )(‪ ،CreateRand‬تعدادی‬
‫اعداد تصادفی را تولید میکند و در آرایه قرار میدهد‪ ،‬در ادامه‪ ،‬برای هر سطر متد )(‪ insertionSort‬را فراخیوانی‬
‫میکند تا عناصر هر سطر آرایه را جداگانه مرتب نماید‪ .‬در پایان‪ ،‬عناصر آرایه را جداگانه مرتب نماید و عناصر آراییه‬
‫(آرایهای که عناصر هر سطر آن مرتب هستند) را نمایش میدهد‪.‬‬
‫تابه )(‪ ،insertionSort‬آرایه ‪( arr‬آرایهای که یک سطر آن باید مرتب شیود) و ‪( row‬شیماره سیطری کیه بایید‬
‫مرتب شود) را بهعنوان پارامتر دریافت کرده‪ ،‬عناصر آن سطر را بهصور صعودی مرتب میکند و نمایش میدهد‪.‬‬
‫متد )(‪ ،CreateRand‬آرایه ‪( arr‬آرایه ای که عناصر آن باید با اعیداد تصیادفی تولیدشیده پیر گیردد)‪rows ،‬‬
‫(تعداد سطرها) و ‪( cols‬تعداد ستونها) را بهعنوان پارامتر دریافت کرده‪ ،‬به تعیداد ‪ rows‬ضیرب ‪ cols‬عیدد تصیادفی‬
‫تولید میکند و در آرایه قرار میدهد‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫تعداد ستونها‬ ‫‪cols‬‬ ‫سراسری‬
‫تعداد سطرها‬ ‫‪rows‬‬
‫آرایه دوبعدی که عناصر هر سطر آن باید مرتب شود‬ ‫‪arr‬‬
‫شمارنده سطرهای آرایه‬ ‫‪i‬‬
‫شمارنده ستونهای آرایه‬ ‫‪j‬‬
‫آرایهای که عناصر هر سطر آن باید مرتب شوند‬ ‫‪arr‬‬ ‫‪insertionSort‬‬
‫شماره سطری که باید مرتب شود‬ ‫‪row‬‬
‫شمارنده برای پیمایش ستونهای آرایه‬ ‫‪j‬‬
‫عنصر فعلی سطر و ستون خاص‬ ‫‪x‬‬
‫مکان درج عنصر ‪ x‬در آرایه‬ ‫‪index‬‬
‫آرایهای که اعداد تصادفی تولیدشده را در آن قرار میدهد‪.‬‬ ‫‪arr‬‬
‫تعداد سطرها‬ ‫‪rows‬‬
‫‪createRand‬‬
‫تعداد ستونها‬ ‫‪cols‬‬
‫شمارندههایی برای پیمایش سطرها و ستونهای آرایه‬ ‫‪i, j‬‬
‫آرایهها و رشتهها‬ 322

using System;
namespace p75
{
class Program
{
public static readonly int cols = 4;
public static readonly int rows = 4;
public static void createRand(int[,] arr,int rows,int cols)
{
Random r = new Random();
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
arr[i , j] = r.Next(10, 100);
}
}
}
public static void insertionSortM(int[,] arr, int row)
{
int X;
int index;
for (int j = 1; j < cols; j++)
{
X = arr[row, j];
index = j;
while ((index > 0) && (arr[row, index - 1] > X))
{
arr[row, index] = arr[row, index - 1];
index = index - 1;
}
arr[row, index] = X;
}
}
static void Main(string[] args)
{
int[,] arr = new int[rows, cols];
createRand(arr, rows, cols);
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
Console.Write(" {0}", arr[i, j]);
}
Console.WriteLine();
}
for (int i = 0; i < rows; i++)
{
insertionSortM(arr, i);
}
Console.WriteLine("=========================");
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
Console.Write(" {0}", arr[i, j]);
}
Console.WriteLine();
}
‫‪322‬‬ ‫فصل چهارم‬

‫;)‪Console.ReadKey(true‬‬
‫}‬
‫}‬
‫}‬

‫‪ .74‬برنامهای که آرایه ‪ 5‬عنصری را خوانده‪ ،‬به مقدار هر یک از عناصر آرایه توسط عالمت ستار (*) میله افقی رسیم‬
‫میکند‪.‬‬
‫متد )(‪،main‬آرایه ‪ a‬را تعریف کرده‪ ،‬و مقدار عناصر آن ‪ n‬را با مقدار اولیه ‪ 5‬تعریف میکند‪ .‬سس بیا فراخیوانی‬
‫متد )(‪ readArray‬عناصر آرایه ‪ a‬را میخواند و در پایان‪ ،‬با فراخوانی متید )(‪ ،printArray‬مقیدار آراییه و تعیداد‬
‫ستارهها را بهصور افقی نمایش میدهد‪.‬‬
‫متد )(‪ ،readArray‬آرایه ‪ x‬و تعداد عناصر آن (‪ )n‬را بهعنوان پارامتر دریافت کرده‪ n ،‬عیدد را مییخوانید و در‬
‫آرایه قرار میدهد‪.‬‬
‫متد )(‪ ،printStar‬پارامتر ‪ n‬را دریافت کرده و به تعداد ‪ n‬کاراکتر * را نمایش میدهد‪.‬‬
‫متد )(‪ ،printArray‬پارامترهای آرایه ‪ x‬و تعداد عناصر آن (‪ )n‬را دریافت کرده‪ ،‬ابتدا هر یک از عناصر آراییه را‬
‫نمایش میدهد و در ادامه‪ ،‬نمایش تعداد هر یک از متد )(‪ Strar‬را فراخوانی میکند تا به تعداد هیر ییک از عناصیر‬
‫آرایه * نمایش دهد‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫آرایهای موردنظر‬ ‫‪a‬‬ ‫‪main‬‬
‫تعداد عناصر آرایه‬ ‫‪n‬‬
‫آرایهای که باید عناصر آن خوانده شود‬ ‫‪x‬‬
‫تعداد عناصر آرایه‪x‬‬ ‫‪n‬‬ ‫‪readArray‬‬
‫شمارندهای برای پیمایش عناصر آرایه‬ ‫‪i‬‬
‫تعداد ستارههایی که باید چاپ شود‬ ‫‪n‬‬
‫‪printStar‬‬
‫شمارندهای برای چاپ تعداد ستارهها‬ ‫‪i‬‬
‫آرایهای که باید عناصر آن نمایش داده شود‬ ‫‪x‬‬
‫تعداد عناصر آرایه‬ ‫‪n‬‬ ‫‪printArray‬‬
‫شمارندهای برای پیمایش و چاپ عناصر آرایه‬ ‫‪i‬‬
‫آرایهها و رشتهها‬ 326

using System;
namespace p76
{
class Program
{
static void readArray(int[] x, int n)
{
int i;
Console.Write("Enter {0} numbers:", n);
string[] s = Console.ReadLine().Split(' ');
for (i = 0; i < n; i++)
x[i] = Convert.ToInt32(s[i]);
}
static void printArray(int[] x, int n)
{
int i;
for (i = 0; i < n; i++)
{
Console.Write("{0}\t", x[i]);
printStar(x[i]);
Console.WriteLine();
}
}
static void printStar(int n)
{
for (int i = 1; i <= n; i++)
Console.Write( "*");
}
static void Main(string[] args)
{
int n = 5;
int[] a = new int[5];
readArray(a, n);
printArray(a, n);
Console.ReadKey();
}
}
}

‫ عیدد دوم را‬،‫ سس دو عدد دیگر را میخواند و از ای دو عیدد خوانیدهشیده‬،‫ عدد را خوانده‬7 ‫ برنامهای که‬.75
.‫جایگزی عدد اول در آن هفت عدد مینماید‬
‫ را فراخوانی‬readArray() ‫ سس متد‬،‫ را تعریف کرده‬y ‫ و‬x ،n ‫ عنصر و متغیرهای‬7 ‫ با‬a ‫ آرایه‬،main() ‫متد‬
‫ در‬.‫ را نمایش میدهد‬a ‫ مقادیر آرایه‬printArray() ‫ با فراخوانی متد‬،‫ در ادامه‬،‫ را بخواند‬a ‫میکند تا عناصر آرایه‬
printArray() ‫ جایگزی میکند و با فراخوانی متد‬y ‫ را با‬a ‫ در آرایه‬x ‫ مقدار‬replace() ‫ با فراخوانی متد‬،‫پایان‬
.‫ را نمایش میدهد‬a ‫آرایه‬
‫ عیدد را مییخوانید و در‬n ،‫) را بهعنوان پارامتر دریافت کرده‬n( ‫ و تعداد عناصر آن‬x ‫ آرایه‬،readArray() ‫متد‬
.‫آرایه قرار میدهد‬
‫‪323‬‬ ‫فصل چهارم‬

‫متد )(‪ ،printArray‬پارامترهای آرایه ‪ x‬و تعداد عناصر آن (‪ )n‬را دریافت کرده‪ ،‬ابتدا هر یک از عناصر آرایه را‬
‫نمایش میدهد‬
‫متد )(‪ ،replalce‬پارامترهای ‪( x‬آرایه)‪( n ،‬تعداد عناصر آرایه)‪( s ،‬مقدار اول) و ‪( k‬مقدار دوم) را دریافت کرده‪،‬‬
‫تمام مقادیر ‪ s‬در آرایه ‪ x‬را با ‪ k‬جایگزی میکند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫آرایهای با ‪ 7‬عنصر‬ ‫‪a‬‬ ‫‪main‬‬
‫تعداد عناصر آرایه‬ ‫‪n‬‬
‫عدد اول که باید ‪ y‬جایگزین آن شود‬ ‫‪x‬‬
‫عدد دوم که باید جایگزین ‪ x‬گردد‬ ‫‪y‬‬
‫آرایهای که دادههای خواندهشده را نگهداری میکند‪.‬‬ ‫‪x‬‬ ‫‪readArray‬‬
‫تعداد عناصر آرایه‪x‬‬ ‫‪n‬‬
‫شمارندهای برای پیمایش عناصر جهت چاپ‬ ‫‪i‬‬
‫آرایهای که دادههای آن باید نمایش داده شود‪.‬‬ ‫‪x‬‬
‫تعداد عناصر آرایه ‪x‬‬ ‫‪n‬‬ ‫‪printArray‬‬
‫شمارندهای برای پیمایش عناصر جهت چپ‬ ‫‪i‬‬
‫مقداری که جایگزین ‪ s‬در آرایه ‪ x‬میشود‬ ‫‪k‬‬
‫آرایهای که در آن مقادیر ‪ s‬باید با ‪ k‬جایگزین شود‪.‬‬ ‫‪x‬‬
‫تعداد عناصر آرایه‬ ‫‪n‬‬ ‫‪replalce‬‬
‫مقداری که باید ‪ k‬جایگزین آن شود‪.‬‬ ‫‪s‬‬
‫شمارندهای برای پیمایش آرایه ‪x‬‬ ‫‪i‬‬
‫;‪using System‬‬
‫‪namespace p77‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void readArray(int[] x, int n‬‬
‫{‬
‫;‪int i‬‬
‫;)‪Console.Write("Enter {0} numbers:", n‬‬
‫;)' '(‪string[] s = Console.ReadLine().Split‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫;)]‪x[i] = Convert.ToInt32(s[i‬‬
‫}‬
‫)‪static void printArray(int[] x, int n‬‬
‫{‬
‫;‪int i‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫;)]‪Console.Write(" {0}", x[i‬‬
‫;)(‪Console.WriteLine‬‬
‫}‬
‫)‪static void replace(int[] x, int n, int s, int k‬‬
‫{‬
‫)‪for (int i = 0; i < n; i++‬‬
‫; ;‪if (x[i] == s) x[i] = k‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫آرایهها و رشتهها‬ ‫‪324‬‬

‫;‪int n = 7, x, y‬‬
‫;]‪int[] a = new int[7‬‬
‫;)‪readArray(a, n‬‬
‫;)‪printArray(a, n‬‬
‫;)"‪Console.Write("Enter x:‬‬
‫;))(‪x = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter y:‬‬
‫;))(‪y = Convert.ToInt32(Console.ReadLine‬‬
‫;)‪replace(a, n, x, y‬‬
‫;)‪printArray(a, n‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .76‬برنامهای که عدد صحیح ‪( n‬کوچکتر از ‪ )9‬را از ورودی خوانده‪ ،‬خروجی زیر را با استفاده از آرایه دوبعیدی‬
‫(ماتری ) تولید و چاپ میکند‪:‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫…‬ ‫‪n‬‬

‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫…‬ ‫‪n+1‬‬

‫‪...‬‬ ‫‪...‬‬ ‫‪...‬‬ ‫…‬ ‫‪...‬‬

‫‪n +1‬‬ ‫‪n+2‬‬ ‫‪n+3‬‬ ‫…‬ ‫‪2n‬‬


‫متد )(‪ ،main‬ابتدا آرایه ‪ matrix‬را ‪ 9 × 9‬تعریف میکند‪ ،‬سس ‪ n‬را تعریف کرده و یک عدد را خوانده‪ ،‬در ‪n‬‬
‫قرار میدهد‪ .‬اگر عدد بی ‪ 1‬تا ‪ 9‬نباشد‪ ،‬مجدداً ‪ n‬را میخواند تا یک عدد بی ‪ 1‬تا ‪ 9‬بخواند‪ .‬اگر یک عدد بی یک تا‬
‫‪ 9‬خوانده‪ ،‬در ادامه‪ ،‬متد )(‪ fillArray‬را فراخوانی میکند تا آرایه را پر کند و در پایان‪ ،‬با فراخوانی متد‬
‫)(‪ ،printArray‬اطالعا آرایه تولیدشده را نمایش میدهد‪.‬‬
‫متد )(‪ ،fillArray‬آرایه ‪ ،a‬تعداد سطرها و ستونهای آن (‪ )n‬را بهعنوان پارامتر دریافت کرده‪ ،‬با استفاده از حلقه‬
‫تکرار تودرتو آرایه را پر میکند و نمایش میدهد‪.‬‬
‫متد )(‪ ،printArray‬آرایه ‪ ،a‬تعداد سطرها و ستونهای آن (‪ )n‬را بهعنوان پارامتر دریافت کرده‪ ،‬عناصر آرایه را‬
‫نمایش میدهد‪.‬‬
‫در ای متدها چون تعداد و سطر و ستونها برابر بود‪ ،‬یک پارامتر (‪ )n‬برای سطرها و ستونها در نظر گرفته شد‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫آرایه ‪0 × 0‬‬ ‫‪matrix‬‬ ‫‪main‬‬
‫عدد ورودی که بین ‪ 0‬تا ‪ 0‬میباشد‪.‬‬ ‫‪n‬‬
‫آرایهای ‪ 0×0‬که با اطالعات باال پر میشود‬ ‫‪a‬‬ ‫‪fillArray‬‬
‫عدد ورودی که تعداد ستونها را مشخص میکند‪.‬‬ ‫‪n‬‬
‫شمارندههای برای تولید و پر کردن آرایه‬ ‫‪i, j‬‬
‫آرایهای که باید چاپ شود‬ ‫‪a‬‬
‫تعداد سطرها و ستونهای آرایه‬ ‫‪n‬‬ ‫‪printArray‬‬
‫شمارندهای جهت پیمایش سطرها و ستونهای آرایه‬ ‫‪i, j‬‬
322 ‫فصل چهارم‬

using System;
namespace p78
{
class Program
{
static void fillArray(int[,] a, int n)
{
for (int i = 0; i <= n; i++)
for (int j = 1; j <= n; j++)
a[i, j - 1] = i + j;
}
static void printArray(int[,] a, int n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
Console.Write("{0}\t", a[i, j]);
Console.WriteLine();
}
}
static void Main(string[] args)
{
int[,] matrix = new int[9, 9];
int n;
do
{
Console.Write("Enter a positive integer number(1-8): ");
n = int.Parse(Console.ReadLine());
} while (!(n >= 1 && n < 9));
Console.WriteLine();
fillArray(matrix, n);
printArray(matrix, n);
Console.ReadKey();
}
}
}

‫ با استفاده از یک متد فضای خالی سمت چپ (ابتدا رشته) را حذف میکنید و‬،‫برنامهای که رشتهای را خوانده‬ .77
.)‫ است‬32 ‫نمایش میدهد (کد اسکی کاراکترهای خالی‬
‫ جاهای‬lTrim() ‫ با یک پیغام یکرشته را میخواند و با فراخوانی متد‬،‫ را تعریف کرده‬s ‫ ابتدا رشته‬،main() ‫متد‬
.‫ را چاپ میکند‬s ‫خالی سمت چپ رشته را حذف مینماید و درنهایت رشته‬
.‫ طول آن را برمیگرداند‬،‫ را میگیرد‬s ‫ رشته‬،strLen() ‫متد‬
.‫ جاهای خالی سمت چپ رشته را حذف میکند‬،‫ گرفته‬s ‫ رشته‬،lTrim() ‫متد‬
‫آرایهها و رشتهها‬ ‫‪322‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫رشته ورودی‬ ‫‪s‬‬ ‫‪main‬‬
‫رشتهای که باید طول آن برگردانده شود‬ ‫‪s‬‬ ‫‪strLen‬‬
‫اندیش برای پیمایش تا انتهای رشته و درنهایت طول رشته‬ ‫‪i‬‬
‫رشتهای که باید جاهای خالی سمت چپ آن حذف شود‬ ‫‪s‬‬
‫شمارندهای برای جایگزین کردن کاراکترهای )‪(i+1‬ام بهجای کاراکتر ‪( i‬وقتیکه‬ ‫‪i‬‬ ‫‪lTrim‬‬
‫کاراکتر صفر) رشته جای خالی باشد‪.‬‬
‫;‪using System‬‬
‫‪namespace p79‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static string lTrim(string s‬‬
‫{‬
‫;"" = ‪string s1‬‬
‫;‪int j = 0‬‬
‫;‪while (s[j] == 32 || s[j] == 9) j++‬‬
‫)‪for (int i = j; i < s.Length; i++‬‬
‫;)(‪s1 += s[i].ToString‬‬
‫;‪return s1‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪string s‬‬
‫;)" ‪Console.Write("Enter a string:‬‬
‫;)(‪s = Console.ReadLine‬‬
‫;))‪Console.Write("\nLtrimmed string is {0}", lTrim(s‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .70‬برنامهای که رشتهای را خوانده‪ ،‬با استفاده از اشارهگر و بازگشتی‪ ،‬طول رشته را حساب کرده‪ ،‬نمایش میدهد‪.‬‬
‫متد )(‪ ،main‬ابتدا رشته ‪ s‬را تعریف کرده و آن را میخواند و با فراخوانی متد )(‪ ،pointerLen‬طول رشیته ‪ s‬را‬
‫نمایش میدهد‪.‬‬
‫متد )(‪ ،pointerLen‬اشارهگر ‪ s‬را بهعنوان پارامتر دریافت میکند و طول آن را بهصور بازگشتی برمیگرداند‪.‬‬
‫‪322‬‬ ‫فصل چهارم‬

‫هدف‬ ‫متغیر‬ ‫متد‬

‫;‪using System‬‬ ‫رشته ‪ s‬که خوانده میشود‬ ‫‪S‬‬ ‫‪Main‬‬


‫‪namespace p80‬‬
‫{‬ ‫اشارهگری به رشتهای اشاره میکند‬ ‫‪*s‬‬ ‫‪pointerLen‬‬
‫‪class Program‬‬ ‫که طول آن باید مشخص شود‪.‬‬
‫{‬
‫)‪public static int pointerLen(ref string s‬‬
‫{‬
‫)"" =! ‪if (s‬‬
‫{‬
‫;)‪s = s.Substring(1‬‬
‫;) ‪return 1 + pointerLen(ref s‬‬
‫}‬
‫;‪return 0‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;"" = ‪string s‬‬
‫;)" ‪Console.Write("Enter a string:‬‬
‫;)(‪s = Console.ReadLine‬‬
‫;)" ‪Console.Write("Length‬‬
‫;)‪Console.Write(s‬‬
‫;)" ‪Console.Write(" is‬‬
‫;))‪Console.Write(pointerLen(ref s‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫پروژه برنامهنویسی ‪ : 1‬یک پروژه هواپیمایی قصد دارد سیستم ذخیره و فروش بلیط را کامسیوتری کند‪ .‬برنامه‬
‫سیستم رزرو بلیط مراحل زیر را انجام میدهد (تعداد صندلی ‪ 44‬میباشد که شماره ‪ 1‬تا ‪ 24‬برای سیگاریهیا و از ‪21‬‬
‫تا ‪ 44‬برای غیر سیگاریها در نظر گرفته میشود‪ .‬در ضم حداکثر ‪ 14‬شماره پرواز از ‪ 1‬تا ‪ 14‬داریم)‪:‬‬
‫الف‪ :‬آرایه دوبعدی با ‪ 44‬سطر و ‪ 14‬ستون در نظر گرفتهشده که ستونهای صفر تا ‪ 9‬شماره پروازهای ‪ 1‬تا ‪ 14‬را تعیی‬
‫میکنند‪.‬‬
‫ب‪ :‬شماره مسافر‪ ،‬نوع مسافر (سیگاری(‪ ،)1‬غیر سیگاری(‪ ))4‬و شماره پیرواز را دریافیت مییکنید‪ ،‬سیس بلییط را رزرو‬
‫میکند‪.‬‬
‫ج‪ :‬اگر نوع مسافر سیگاری باشد‪ ،‬با توجه به شماره پرواز‪ ،‬به آن شمار پرواز در بخش سیگاری صیندلی تخصییص میی‪-‬‬
‫دهد‪ .‬درصورتیکه پر بودن بخش سیگاریها از مشتری سؤال میکند آیا در بخش غیر سیگاریها پذیرفته شود یا خیر‬
‫و برعک ‪.‬‬
‫د‪ :‬شماره مسافر به شماره صندلی در آرایه تخصیص مییابد‪.‬‬
‫متد )(‪ ،main‬متغیرهای برنامه را تعریف میکند‪ ،‬آرایه را مقداردهی اولیه میکند (با فراخوانی متد‬
‫)(‪ .)initArray‬در یک حلقه بینهایت ‪ ،‬شماره مسافر‪ ،‬نوع مسافر(سیگاری بودن یا نبودن) و شماره پرواز را دریافت‬
‫میکند و اگر سیگاری باشد‪ ،‬با فراخوانی متد )(‪ setSomkeArray‬برای آن صندلی تعیی میکند‪ ،‬اگر جا نباشد‬
‫(یعنی‪ ret ==1 ،‬باشد‪ ،‬از او میپرسد که آیا میخواهد در بخش غیر سیگاریها صندلی بگیرد‪ ،‬اگر پاسخ ‪ y‬بدهد‪ ،‬با‬
‫فراخوانی متد )(‪ setNotSomkeArray‬برای او در بخش غیر سیگاری صندلی میگیرد‪ ،‬اگر متد ‪ ret‬برابر ‪ 1‬باشد‪،‬‬
‫پیغام پرواز پر میباشد را میدهد‪ .‬اما‪ ،‬اگر فرد غیر سیگاری باشد‪ ،‬با فراخوانی )(‪ ،setNotSomkeArray‬سعی میکند‬
‫یک شماره صندلی در بخش غیر سیگاری برای او پیدا کند‪ ،‬اگر صندلی در بخش غیر سیگاری برای او وجود نداشته‬
‫آرایهها و رشتهها‬ ‫‪322‬‬

‫باشد (یعنی ‪ ret == 1‬باشد)‪ ،‬از او میپرسد که آیا میخواهد در بخش سیگاریها به او صندلی تخصیص دهد یا نه‪.‬‬
‫اگر مسافر پاسخ ‪ y‬را بدهد‪ ،‬با فراخوانی متد )(‪ ،setSomkeArray‬سعی میکند برای ای مسافر در بخش سیگاریها‬
‫صندلی تخصیص دهد‪ .‬اگر در آنجا نیز صندلی نباشد (‪ ret == 1‬باشد)‪ ،‬به او پیغام پرواز پر است میدهد‪ .‬در ادامه از‬
‫کاربر میپرسد که آیا ادامه میدهد‪ .‬اگر کاربر ‪ y‬را وارد کند‪ ،‬فرآیند باال را دوباره اجرا میکند‪ .‬اگر کاربر ‪ n‬را وارد‬
‫کند‪ ،‬اطالعا آرایه را با فراخوانی )(‪ printArray‬نمایش میدهد تا وضعیت پر بودن صندلیها پروازها را نشان‬
‫دهد‪.‬‬
‫متد )(‪ ،initArray‬آرایه ‪ a‬را بهعنوان پارامتر گرفته‪ ،‬تمام عناصر آن را صفر میکند (یعنی‪ ،‬برای تمام پروازها‬
‫صندلیها را خالی میکند)‪.‬‬
‫متد )(‪ ،printArray‬آرایه ‪ a‬را دریافت کرده‪ ،‬اطالعا آرایه را نمایش میدهد تا وضعیت صندلیهای پرواز را‬
‫نمایش دهد‪.‬‬
‫متد )(‪ ،setSomkeArray‬آرایه ‪( a‬وضعیت صندلیهای پروازها) ‪( flyNo‬شماره پرواز) و ‪( code‬شماره مسافر) را‬
‫بهعنوان پارامتر دریافت کرده‪ ،‬اگر در بخش سیگاریها برای پرواز موردنظر صندلی موجود باشد‪ ،‬شماره مسافر را به‬
‫آن صندلی تخصیص میدهد و صفر را برمیگرداند‪.‬‬
‫متد )(‪ ،setNotSomkeArray‬آرایه ‪( a‬وضعیت صندلیهای پروازها) ‪( flyNo‬شماره پرواز) و ‪( code‬شماره‬
‫مسافر) را بهعنوان پارامتر دریافت کرده‪ ،‬اگر در بخش غیر سیگاریها برای پرواز موردنظر صندلی موجود باشد‪،‬‬
‫شماره مسافر را به آن صندلی تخصیص میدهد و صفر را برمیگرداند‪ .‬اگر نتواند صندلی خالی پیدا کند‪ ،‬یک را‬
‫برمیگرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫ثابتی که تعداد سطرهای آرایه را مشخص میکند (تعداد پروازها)‬ ‫‪n‬‬ ‫سراسری‬
‫ثابتی که تعداد ستونهای آرایه را مشخص میکند (تعداد صندلیهای هر‬ ‫‪m‬‬
‫پرواز)‬
‫شماره مسافر‬ ‫‪code‬‬ ‫‪main‬‬
‫سیگاری بودن یا سیگاری نبودن‬ ‫‪smoke‬‬
‫شماره پرواز‬ ‫‪flyno‬‬
‫آرایهای با ‪ N‬سطر و ‪ M‬ستون که پر بودن یا خالی بودن پروازهای را تعیین میکند‪.‬‬ ‫‪s‬‬
‫پر بودن یا پر نبودن بخش سیگارهای را تعیین میکند‪.‬‬ ‫‪ret‬‬
‫کاراکتری که تعیین میکند آیا ادامه میدهد یا نه‪.‬‬ ‫‪ch‬‬

‫آرایهای که پروازها و صندلیها را نگهداری میکند (پر بودن یا نبودن)‬ ‫‪a‬‬


‫‪initArray‬‬
‫شمارنده سطر و ستون برای خالی کردن تمام صندلیهای تمام پروازها‬ ‫‪i, j‬‬

‫آرایه نه و بعدی که باید چاپ شود‬ ‫‪a‬‬


‫‪printArray‬‬
‫شمارنده سطر و ستونهای را تعیین میکند‪.‬‬ ‫‪i, j‬‬

‫آرایه که شماره پرواز و صندلیها را نگهداری میکند‬ ‫‪a‬‬

‫شماره پرواز‬ ‫‪flyno‬‬


‫‪setSomkeArray‬‬
‫شماره مسافر‬ ‫‪code‬‬
‫شمارندهای که برای پیدا کردن اولین صندلی خالی در بخش سیگارها‬ ‫‪i‬‬

‫آرایه که شماره پرواز و صندلیها را نگهداری میکند‬ ‫‪a‬‬

‫شماره پرواز‬ ‫‪flynno‬‬ ‫‪setNotSomkeArray‬‬


‫شماره مسافر‬ ‫‪code‬‬
322 ‫فصل چهارم‬

‫شمارندهای که برای پیدا کردن صندلی خالی در بخش غیر سیگارها به کار‬ i
.‫میرود‬
using System;
namespace Project1
{
class Program
{
const int N =40;
const int M =10;
public static void initArray(int[,] a)
{
int i;
int j;
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
a[i, j] = 0;
}
}
}
public static void printArray(int[,] a)
{
int i;
int j;
Console.Write("\n");
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
Console.Write(a[i, j]);
Console.Write(" ");
}
Console.Write("\n");
}
}
public static int setSmokeArray(int[,] a, int flyNo, int code)
{
int i;
for (i = 0; i < N / 2; i++)
{
if (a[i, flyNo] == 0)
{
a[i, flyNo] = code;
return (0);
}
}
return (1);
}
public static int setNotSmokeArray(int[,] a,int flyNo,int code)
{
int i;
for (i = N / 2; i < N; i++)
{
if (a[i, flyNo] == 0)
‫آرایهها و رشتهها‬ 322

{
a[i, flyNo] = code;
return (0);
}
}
return (1);
}
static void Main(string[] args)
{
int code, smoke, flyNo, ret;
char ch;
int[,] a = new int[N, M];
initArray(a);
while (true)
{
Console.Write("Enter Code, Smoke[0 or 1] and Fly Number:");
string input = Console.ReadLine();
string[] inputs = input.Split(' ');
code = int.Parse(inputs[0]);
smoke = int.Parse(inputs[1]);
flyNo = int.Parse(inputs[2]);
flyNo--;
if (flyNo >= M || flyNo < 0)
{
Console.WriteLine("Enter Fly number 1 to {0}", M);
}
else if (smoke!=0)
{
ret = setSmokeArray(a, flyNo, code);
if (ret == 1)
{
Console.Write("\nAre you want sit in not smoke part:");
ch = Convert.ToChar(Console.ReadLine());
if (ch == 'y' || ch == 'Y')
{
ret = setNotSmokeArray(a, flyNo, code);
}
if (ret == 1)
{
Console.Write(flyNo);
Console.Write(" is full");
}
}
}
else
{
ret = setNotSmokeArray(a, flyNo, code);
if (ret == 1)
{
Console.Write("\nAre you want sit in smoke part:");
ch = Convert.ToChar(Console.ReadLine());
if (ch == 'y' || ch == 'Y')
{
ret = setSmokeArray(a, flyNo, code);
}
if (ret == 1)
‫‪322‬‬ ‫فصل چهارم‬

‫{‬
‫;)‪Console.Write(flyNo‬‬
‫;)"‪Console.Write(" is full‬‬
‫}‬
‫}‬
‫}‬
‫;)"? ‪Console.Write("Continue‬‬
‫;))(‪ch = Convert.ToChar(Console.ReadLine‬‬
‫)'‪if (ch == 'N' || ch == 'n‬‬
‫{‬
‫;‪break‬‬
‫}‬
‫}‬
‫;)‪printArray(a‬‬
‫;)‪Console.ReadKey(true‬‬
‫}‬
‫}‬
‫}‬
‫زیر را وارد کنید‪:‬‬ ‫اکنون اطالعا‬

‫کلید ‪ n‬را فشار دهید تا وضعیت صندلیهای پرواز را به شکل زیر بینید‪:‬‬ ‫سس‬
‫منو کاربر میتواند یکی از گزینههای زییر‬ ‫پروژه برنامه نویسی ‪ : 2‬برنامهای که منوی نمایش میدهد‪ .‬از ای‬
‫را انتخاب کند‪:‬‬
‫‪ ،Read Array1 .1‬اطالعا آرایه اول را میخواند‪.‬‬
‫‪ ،Read Array2 .2‬اطالعا آرایه دوم را میخواند‪.‬‬
‫‪ ،Find Share .3‬اشتراک بی آرایه اول و دوم را پیدا میکند‪.‬‬
‫آرایهها و رشتهها‬ ‫‪326‬‬

‫‪ ،Find Union .4‬اجتماع بی آرایه اول و دوم را پیدا میکند‪.‬‬


‫‪ ،Find difference a Form b .5‬تفاضل آرایه ‪ a‬را از ‪ b‬حساب میکند‪.‬‬
‫‪ ،Find difference b Form a .6‬تفاضل آرایه ‪ b‬را از ‪ a‬حساب میکند‪.‬‬
‫متد )(‪ ،main‬ابتدا ثابت ‪ )7( n‬را تعریف کرده‪ ،‬سس آرایههیای ‪ b ،a‬و ‪ c‬را تعرییف مییکنید و متغییرهیای ‪ k‬و‬
‫‪ choice‬را تعریف میکند‪ .‬در ادامه‪ ،‬یک حلقه تکرار بینهایت ایجاد میکند‪ .‬در داخل حلقه تکرار اعمال زیر را انجام‬
‫میدهد‪:‬‬
‫‪ .1‬متد )(‪ menu‬را فراخوانی میکند تا منوی را نمایش دهد‪.‬‬
‫‪ .2‬اگر کاربر گزینه ‪ 7‬را انتخاب کند‪ ،‬برنامه خاتمه مییابد‪.‬‬
‫‪ .3‬با توجه به انتخاب کاربر‪ ،‬یکی از اعمال داخل ‪ switch‬انجام میشود‪.‬‬
‫متد )(‪ ،readArray‬پارامترهای ‪( a‬آرایه) و ‪( n‬تعداد عناصر آرایه ‪ )a‬را دریافیت کیرده‪ n ،‬عیدد را خوانیده‪ ،‬در‬
‫آرایه ‪ a‬قرار میدهد‪.‬‬
‫متد )(‪ ،printArray‬پارامترهای ‪( a‬آرایه) و ‪( n‬تعیداد عناصیر آراییه ‪ )a‬را دریافیت کیرده‪ ،‬عناصیر آراییه را بیه‬
‫خروجی میبرد‪.‬‬
‫متد )(‪ ،find‬پارامترهای آرایه ‪ ،a‬تعداد عناصر (‪ )n‬و ‪( x‬عدد مورد جستوجو) را دریافت کرده‪ ،‬اگیر ‪ x‬در آراییه‬
‫موجود باشد‪ ،‬مکان آن‪ ،‬وگرنه ‪ -1‬را برمیگرداند‪.‬‬
‫متد )(‪ ،diff‬پارامترهای آرایه ‪( a‬آرایه اول)‪ ،‬آرایه ‪( b‬آرایه دوم)‪( n ،‬تعداد عناصر آراییه اول و دوم) و آراییه ‪c‬‬
‫(آرایهای که تفاضل آرایه ‪ a‬و ‪ b‬را نگهداری میکند) را دریافت کرده‪ ،‬ابتدا تعداد‪ ،‬عناصر آراییه ‪ c‬را برابیر ‪ -1‬قیرار‬
‫میدهد‪ .‬اکنون‪ ،‬یکی‪ ،‬یکی عناصر آرایه را پیمایش میکند‪ ،‬اگر ای عنصر در آرایه ‪ b‬نباشد ]‪[find(b, n, a[i] == -1‬‬
‫و همچنی در ‪ c‬نباشد ]‪ ،[find(c, n, a[i] == -1‬آن را به آرایه ‪ c‬اضافه میکند‪ .‬در پایان‪ j ،‬را یک واحد اضافه کرده‬
‫و آن را برمیگرداند‪.‬‬
‫متد )(‪ ،share‬پارامترهای آرایه ‪( a‬آرایه اول)‪ ،‬آرایه ‪( b‬آرایه دوم)‪( n ،‬تعداد عناصر آرایه اول و دوم) و آرایه ‪c‬‬
‫(آرایهای که اشتراک آرایه ‪ a‬و ‪ b‬را نگهداری میکند) را دریافت کرده‪ ،‬عناصر آراییه ‪ b‬را پیمیایش مییکنید‪ .‬اگیر‬
‫عنصری از آرایه ‪ b‬در ‪ a‬باشد‪( ،‬یعنی‪ )find(a, n, b[i] != -1) ،‬و ]‪ b[i‬در ‪ c‬نباشید (یعنیی‪)find(c, n, b[i] == -1)( ،‬‬
‫آنگاه ]‪ b[i‬را بر ‪ c‬اضافه میکند‪ .‬در پایان‪ j ،‬را یک واحد اضافه کرده و برمیگرداند‪.‬‬
‫متد )(‪ ،union1‬آرایه ‪( a‬آرایه اول)‪ ،‬آرایه ‪( b‬آرایه دوم)‪( n ،‬تعداد عناصر آرایه اول و دوم) و آرایه ‪( c‬آراییهای‬
‫که اجتماع آرایه ‪ a‬و ‪ b‬را نگهداری میکند) را دریافت کرده‪ ،‬ابتدا‪ ،‬عناصر آرایه ‪ a‬را پیمایش مینماید‪ ،‬چنانچیه هیر‬
‫یک از عناصر آرایه ‪ a‬در ‪ c‬نباشد (یعنی )‪ ،)find(c, n, a[i] == -1‬آن عنصر را به آرایه ‪ c‬اضافه میکند‪ ،‬سیس عناصیر‬
‫آرایه ‪ b‬را پیمایش میکند‪ ،‬چنانچه هر یک از عناصر آراییه ‪ b‬در ‪ c‬نباشید (یعنیی )‪ ،)find(c, n, b[i] == -1‬آن را بیه‬
‫آرایه ‪ c‬اضافه میکند‪ .‬در پایان‪ j ،‬را یک واحد اضافه کرده‪ ،‬آن را برمیگرداند‪.‬‬
‫متد )(‪ ،init‬آرایه ‪ c‬و تعداد عناصر آن )‪ (n‬را بهعنوان پارامتر دریافت کرد‪ ،‬تمام عناصر آرایه ‪ c‬را صفر میکند‪.‬‬
‫متد )(‪ ،menu‬ابتدا منویی را نمایش میدهد و از کیاربر مییخواهید یکیی از اعیداد ‪ 1‬تیا ‪ 7‬را وارد کنید‪ .‬عیدد‬
‫واردشده توسط کاربر را برمیگرداند‪.‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫ثابت ‪ 7‬که تعداد عناصر آرایه ‪ a‬و ‪ b‬را تعیین میکند‪.‬‬ ‫‪n‬‬ ‫‪main‬‬
‫آرایه اول با ‪ 7‬عنصر‬ ‫‪a‬‬
‫آرایه دوم با ‪ 7‬عنصر‬ ‫‪b‬‬
‫آرایهای که اشتراک‪ ،‬تفاضل و اجتماع را نگهداری میکند‪.‬‬ ‫‪c‬‬
‫تعداد عناصر آرایه ‪ c‬در هر مرحله‬ ‫‪k‬‬
‫گزینه منوی انتخابشده توسط کاربر‬ ‫‪choice‬‬
‫آرایهای که باید خوانده شود‬ ‫‪a‬‬
‫‪readarray‬‬
‫تعداد عناصر آرایه ‪a‬‬ ‫‪n‬‬
‫‪323‬‬ ‫فصل چهارم‬

‫شمارندهای برای دریافت عناصر آرایه ‪a‬‬ ‫‪i‬‬


‫آرایهای که باید چاپ شود‬ ‫‪a‬‬
‫تعداد عناصر آرایه‬ ‫‪n‬‬ ‫‪printarray‬‬
‫شمارندهای که برای پیمایش آرایه به کار میرود‬ ‫‪i‬‬
‫آرایهای که ‪ x‬باید در آن جستوجو شود‪.‬‬ ‫‪a‬‬
‫تعداد عناصر آرایه ‪a‬‬ ‫‪n‬‬
‫‪find‬‬
‫مقداری که باید جستوجو گردد‬ ‫‪x‬‬
‫شمارندهای که برای پیمایش آرایه به کار میرود‬ ‫‪i‬‬
‫آرایه اول‬ ‫‪a‬‬
‫آرایه دوم‬ ‫‪b‬‬
‫تعداد عناصر آرایه ‪ a‬و ‪b‬‬ ‫‪n‬‬
‫‪diff‬‬
‫آرایه که تفاضل آرایههای ‪ a‬و ‪ b‬را نگهداری میکند‪.‬‬ ‫‪c‬‬
‫شمارندهای که آرایه ‪ a‬را پیمایش میکند‪.‬‬ ‫‪i‬‬
‫تعداد عناصر آرایه ‪c‬‬ ‫‪j‬‬
‫آرایه اول‬ ‫‪a‬‬
‫آرایه دوم‬ ‫‪b‬‬
‫تعداد عناصر آرایه ‪ a‬و ‪b‬‬ ‫‪n‬‬
‫‪share‬‬
‫آرایهای که اشتراک آرایههای ‪ a‬و ‪ b‬را نگهداری میکند‪.‬‬ ‫‪c‬‬
‫شمارندهای که آرایه ‪ a‬را پیمایش میکند‪.‬‬ ‫‪i‬‬
‫تعداد عناصر آرایه ‪c‬‬ ‫‪j‬‬
‫آرایه اول‬ ‫‪a‬‬
‫آرایه دوم‬ ‫‪b‬‬
‫تعداد عناصر آرایه اول و دوم‬ ‫‪n‬‬
‫آرایه اجتماع دو آرایه اول و دوم‬ ‫‪c‬‬ ‫‪union1‬‬
‫شمارندهای که آرایه ‪ a‬را پیمایش میکند‪.‬‬ ‫‪i‬‬
‫تعداد عناصر آرایه ‪c‬‬ ‫‪j‬‬
‫آرایهای که باید تمام عناصر آن صفر شوند‪.‬‬ ‫‪c‬‬
‫تعداد عناصر آرایه ‪c‬‬ ‫‪n‬‬ ‫‪init‬‬
‫شمارندههای برای پیمایش آرایه ‪c‬‬ ‫‪i‬‬
‫گزینه انتخابشده توسط کاربر‬ ‫‪choice‬‬ ‫‪menu‬‬
‫;‪using System‬‬
‫‪namespace Project2‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪public static void readArray(int[] a, int n‬‬
‫{‬
‫;)‪Console.Write("Enter {0} numbers:", n‬‬
‫آرایهها و رشتهها‬ 324

string input = Console.ReadLine();


string[] inputs = input.Split(' ');
for (int i = 0; i < n; i++)
{
a[i] = int.Parse(inputs[i]);
}
}
public static void printArray(int[] a, int n)
{
for (int i = 0; i < n; i++)
{
if (a[i] != 0)
{
Console.Write(a[i]);
Console.Write("\t");
}
}
Console.Write("\n");
}
public static int find(int[] a, int n, int x)
{
for (int i = 0; i < n; i++)
{
if (a[i] == x)
{
return i;
}
}
return -1;
}
public static int diff(int[] a, int[] b, int n, int[] c)
{
int j = -1;
for (int i = 0; i < n; i++)
{
if (find(b, n, a[i]) == -1)
{
if (find(c, n, a[i]) == -1)
{
j++;
c[j] = a[i];
}
}
}
return ++j;
}
public static int share(int[] a, int[] b, int n, int[] c)
{
int j = -1;
for (int i = 0; i < n; i++)
{
if (find(a, n, b[i]) != -1)
{
322 ‫فصل چهارم‬

if (find(c, n, b[i]) == -1)


{
j++;
c[j] = b[i];
}
}
}
return ++j;
}
public static int union1(int[] a, int[] b, int n, int[] c)
{
int j = -1;
for (int i = 0; i < n; i++)
{
if (find(c, n, a[i]) == -1)
{
j++;
c[j] = a[i];
}
}
for (int i = 0; i < n; i++)
{
if (find(c, n, b[i]) == -1)
{
j++;
c[j] = b[i];
}
}
return ++j;
}
public static void init(int[] c, int n)
{
for (int i = 0; i < n; i++)
{
c[i] = 0;
}
}
public static int menu()
{
Console.Write("\n");
Console.Write("\t1:Read array 1\n");
Console.Write("\t2:Read array 2\n");
Console.Write("\t3:Find Share\n");
Console.Write("\t4:Find Union\n");
Console.Write("\t5:Find differnce a from b\n");
Console.Write("\t6:Find differnce b from a\n");
Console.Write("\t7:Exit \n");
Console.Write(" Select 1 to 7 :");
int choice;
choice = int.Parse(Console.ReadLine());
return choice;
}
static void Main(string[] args)
‫آرایهها و رشتهها‬ 322

{
const int n = 7;
int[] a = new int[n];
int[] b = new int[n];
int[] c = new int[2 * n];
int k = 2 * n;
int choice;
for (; ; )
{
choice = menu();
if (choice == 7)
{
break;
}
switch (choice)
{
case 1:
readArray(a, n);
break;
case 2:
readArray(b, n);
break;
case 3:
k = share(b, a, n, c);
printArray(a, n);
printArray(b, n);
printArray(c, k);
init(c, 2 * n);
break;
case 4:
k = union1(a, b, n, c);
printArray(a, n);
printArray(b, n);
printArray(c, k);
init(c, 2 * n);
break;
case 5:
k = diff(a, b, n, c);
printArray(a, n);
printArray(b, n);
printArray(c, k);
init(c, 2 * n);
break;
case 6:
k = diff(b, a, n, c);
printArray(a, n);
printArray(b, n);
printArray(c, k);
init(c, 2 * n);
break;
}
}
‫‪322‬‬ ‫فصل چهارم‬

‫}‬
‫}‬
‫}‬

‫پروژه برنامهنویسی ‪ : 3‬برنامهای که دو آرایه ‪ 3 × 3‬را خوانده‪ ،‬دو آرایه را با هم جمع‪ ،‬تفریق و ضرب میی‪-‬‬
‫نماید‪ .‬در ای برنامه امکاناتی برای نمایش دو آرایه دارد‪ .‬در ضم ای برنامه میتوانید ‪ M ،N‬و ‪ k‬را بخوانید‪ .‬سیس‬
‫حاصل عبار ‪ N * A – M * B + K‬را محاسبه کنند و نمایش دهد (‪ A‬و ‪ B‬به ترتیب آرایههای اول و دوم هستند)‪.‬‬
‫متد )(‪ ،main‬ابتدا‪ ،‬آرایههای ‪ arr3 ،arr2 ،arr1‬و متغیر ‪ choice‬را تعریف کرده‪ ،‬یک حلقه تکرار ‪ while‬بی‪-‬‬
‫نهایت ایجاد میکند‪ ..‬در ای حلقه اعمال زیر انجام میشود‪:‬‬
‫‪ .1‬ابتدا با فراخوانی متد )(‪ ،menu‬منوی را به کاربر نمایش میدهد‪.‬‬
‫‪ .2‬در ای منو کاربر گزینهای را انتخاب میکند‪.‬‬
‫‪ .3‬بر اساس گزینهای که کاربر انتخاب میکند‪ ،‬با استفاده از یک ‪ switch‬عمل متناظر را انجام میدهد‪.‬‬
‫متد )(‪ 9 ،menu‬گزینه را نمایش میدهد (با ‪ cout‬چاپ میکند) و کاربر میتواند شماره یکی از گزینهها را وارد‬
‫کند‪ .‬در پایان‪ ،‬شماره واردشده توسط کاربر را برمیگرداند‪.‬‬
‫متد )(‪ ،readA2D‬آرایه ‪ ،arr1‬تعداد سطرها (‪ ،)n‬تعداد ستونها (‪ )m‬را بهعنوان پارامتر دریافت کرده‪ ،‬عناصر‬
‫آرایه را خوانده‪ ،‬در ‪ arr1‬قرار میدهد‪.‬‬
‫متد )(‪ ،printA2D‬آرایه ‪ ،arr1‬تعداد سطرها (‪ ،)n‬تعداد ستونها (‪ )m‬را بهعنوان پارامتر دریافت کرده‪ ،‬عناصر‬
‫آرایه را در خروجی نمایش میدهد‪.‬‬
‫متد )(‪ ،addArr‬پارامترهای ‪( arr1‬آرایه اول)‪( arr2 ،‬آرایه دوم)‪( arr3 ،‬جمع دو آرایه)‪( n ،‬تعداد سطرها)‪m ،‬‬
‫(تعداد ستونها) را دریافت کرده‪ ،‬حاصل جمع دو آرایه ‪ arr1‬و ‪ arr2‬را با استفاده از حلقه تودرتو حساب کرده‪ ،‬در‬
‫آرایه ‪ arr3‬قرار میدهد‪.‬‬
‫متد )(‪ ،subArr‬پارامترهای ‪( arr1‬آرایه اول)‪( arr2 ،‬آرایه دوم)‪( arr3 ،‬حاصل تفریق آرایه اول از آرایه دوم)‪،‬‬
‫‪( n‬تعداد سطرها)‪( m ،‬تعداد ستونها) را دریافت کرده‪ ،‬آرایه دوم را از آرایه اول کم کرده‪ ،‬در آرایه سوم قرار می‪-‬‬
‫دهد‪.‬‬
‫آرایهها و رشتهها‬ ‫‪322‬‬

‫متد )(‪ ،mulArr‬پارامترهای ‪( arr1‬آرایه اول)‪( arr2 ،‬آرایه دوم)‪( arr3 ،‬نتیجه حاصلضرب دو آرایه اول و‬
‫دوم)‪( n ،‬تعداد سطرها)‪( m ،‬تعداد ستون ها) را دریافت کرده‪ ،‬با استفاده از حلقه تکرار تودرتو حاصلضرب دو آرایه‬
‫را محاسبه میکند‪.‬‬
‫متد )(‪ ،scalarMulArr‬پارامترهای ‪( arr1‬آرایهای که باید با یک عدد ‪ value‬ضرب گردد)‪( arr2 ،‬آرایهای که‬
‫حاصلضرب عدد آرایه اول را نگهداری میکند)‪( n ،‬تعداد سطرها)‪( m ،‬تعداد ستونها) و ‪( value‬مقداری که باید‬
‫در آرایه ‪ arr1‬ضرب شود) را دریافت میکند و با استفاده از حلقه تکرار تودرتو حاصلضرب مقدار ‪ value‬را در‬
‫تکتک عناصر ‪ arr1‬محاسبه میکند‪ ،‬در ‪ arr2‬قرار میدهد‪.‬‬
‫متد )(‪ ،scalarCalArr‬پارامترهای ‪( arr1‬آرایهای که باید با عدد ‪ value‬جمع شود)‪( arr2 ،‬آرایهای که حاصل‬
‫جمع آرایه اول با عدد ‪ value‬را نگهداری میکند)‪( n ،‬تعداد سطرها)‪( m ،‬تعداد ستونها) و ‪( value‬مقداری که باید‬
‫با تکتک عناصر ‪ arr1‬جمع شود) را دریافت کرده‪ ،‬مقدار ‪ value‬را با عناصر آرایه ‪ arr1‬جمع کرده‪ ،‬در آرایه ‪arr2‬‬
‫قرار میدهد‪.‬‬
‫برنامه را اجرا کنید گزینه ‪ 1‬را انتخاب کرده و اطالعا زیر را برای آرایه اول وارد نمایید‪:‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫ثابت تعداد سطرهای آرایه دوبعدی‬ ‫ثابت ‪n‬‬ ‫سراسری‬
‫ثابت تعداد ستونهای آرایه دوبعدی‬ ‫ثابت ‪m‬‬
‫آرایه اول (آرایه ‪)A‬‬ ‫‪arr1‬‬ ‫‪main‬‬
‫آرایه دوم (آرایه ‪)B‬‬ ‫‪arr2‬‬
‫حاصل جمع‪ ،‬تفریق و ضرب دو آرایه‬ ‫‪arr3‬‬
‫گزینه انتخابشده توسط کاربر‬ ‫‪choice‬‬
‫عدد ورودی ضریب ماتریس اول (ماتریس ‪)A‬‬ ‫‪n‬‬
‫عدد ورودی ضریب ماتریس دوم (ماتریس ‪)B‬‬ ‫‪m‬‬
‫عدد ورودی جهت جمع شدن با ماتریس‬ ‫‪k‬‬
‫حاصل عبارت ‪N * A – M * B- M * B‬‬ ‫‪arr4‬‬
‫گزینه انتخابشده توسط کاربر‬ ‫‪choice‬‬ ‫‪menu‬‬
‫آرایهای که باید اطالعات خواندهشده در آن قرار گیرد‪.‬‬ ‫‪arr1‬‬
‫تعداد سطرهای آرایه‬ ‫‪n‬‬
‫‪readA2D‬‬
‫تعداد ستونهای آرایه‬ ‫‪m‬‬
‫شمارندههای برای پیمایش سطر و ستون‬ ‫‪i, j‬‬
‫آرایهای که باید اطالعات آن نمایش داده شود‪.‬‬ ‫‪arr1‬‬
‫تعداد سطرهای آرایه‬ ‫‪n‬‬
‫‪printA2D‬‬
‫تعداد ستونهای آرایه‬ ‫‪m‬‬
‫شمارندههای برای پیمایش سطر و ستون‬ ‫‪i,j‬‬
‫آرایه اول (آرایه ‪)A‬‬ ‫‪arr1‬‬
‫آرایه دوم (آرایه ‪)B‬‬ ‫‪arr2‬‬
‫آرایهای که حاصل جمع آرایه اول و دوم را نگهداری میکند‪.‬‬ ‫‪arr3‬‬ ‫‪addArr‬‬
‫تعداد سطرها‬ ‫‪n‬‬
‫تعداد ستونها‬ ‫‪m‬‬
‫‪322‬‬ ‫فصل چهارم‬

‫شمارندههای برای پیمایش سطر و ستون‬ ‫‪i, j‬‬


‫آرایه اول (آرایه ‪)A‬‬ ‫‪arr1‬‬
‫آرایه دوم (آرایه ‪)B‬‬ ‫‪arr2‬‬
‫آرایهای که حاصل تفریق آرایه اول و دوم را نگهداری میکند‪.‬‬ ‫‪arr3‬‬
‫‪subArr‬‬
‫تعداد سطرها‬ ‫‪n‬‬
‫تعداد ستونها‬ ‫‪m‬‬
‫شمارندههای برای پیمایش سطر و ستون‬ ‫‪i, j‬‬
‫آرایه اول (آرایه ‪)A‬‬ ‫‪arr1‬‬
‫آرایه دوم (آرایه ‪)B‬‬ ‫‪arr2‬‬
‫آرایه سوم (حاصلضرب آرایه ‪ A‬و ‪) B‬‬ ‫‪arr3‬‬
‫تعداد سطرها‬ ‫‪n‬‬ ‫‪mulArr‬‬
‫تعداد ستونها‬ ‫‪m‬‬
‫شمارندههای برای پیمایش سطر و ستون‬ ‫‪i, j‬‬
‫شمارندههای برای پیمایش ستونها‬ ‫‪k‬‬
‫آرایه که باید در ‪ value‬ضرب شود‬ ‫‪arr1‬‬
‫نتیجه حاصلضرب ‪ value‬در ‪ arr1‬را نگهداری میکند‪.‬‬ ‫‪arr2‬‬
‫تعداد سطرها‬ ‫‪n‬‬
‫‪scalarMulArr‬‬
‫تعداد ستونها‬ ‫‪m‬‬
‫مقداری است که باید در آرایه ‪ arr1‬ضرب شود‪.‬‬ ‫‪value‬‬
‫شمارندههای برای پیمایش سطر و ستون‬ ‫‪i, j‬‬
‫آرایه که باید مقادیر عناصر آن با ‪ value‬جمع شود‬ ‫‪arr1‬‬
‫آرایهای که حاصل جمع مقدار ‪ value‬در آرایه ‪ arr1‬را نگه‬ ‫‪arr2‬‬
‫داری میکند‪.‬‬
‫تعداد سطرها‬ ‫‪n‬‬ ‫‪scalarCalArr‬‬
‫تعداد ستونها‬ ‫‪m‬‬
‫مقداری است که باید در آرایه ‪ arr1‬جمع شود‪.‬‬ ‫‪value‬‬
‫شمارندههای برای پیمایش سطر و ستون‬ ‫‪i, j‬‬
‫;‪using System‬‬
‫‪namespace Project3‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫;‪public static readonly int n = 3‬‬
‫;‪public static readonly int m = 3‬‬
‫)‪public static void readA2D(int[,] a, int n, int m‬‬
‫{‬
‫)‪for (int i = 0;i < n;i++‬‬
‫{‬
‫;)" ‪Console.Write("Enter‬‬
‫;)‪Console.Write(m‬‬
‫;)"[ ‪Console.Write(" numbers for row‬‬
‫;))‪Console.Write((i + 1‬‬
‫آرایهها و رشتهها‬ 322

Console.Write("]:");
string input = Console.ReadLine();
string []inputs= input.Split(' ');
for (int j = 0;j < m;j++)
{
a[i, j] = int.Parse(inputs[j]);
}
}
}
public static void addArr(int[,] arr1, int[,] arr2, int[,]
arr3, int n, int m)
{
for (int i = 0;i < n;i++)
{
for (int j = 0;j < m;j++)
{
arr3[i, j] = arr1[i, j] + arr2[i, j];
}
}
}
public static void subArr(int[,] arr1, int[,] arr2, int[,]
arr3, int n, int m)
{
for (int i = 0;i < n;i++)
{
for (int j = 0;j < m;j++)
{
arr3[i, j] = arr1[i, j] - arr2[i, j];
}
}
}
public static void mulArr(int[,] arr1, int[,] arr2, int[,]
arr3, int n, int m)
{
for (int i = 0;i < n;i++)
{
for (int j = 0;j < m;j++)
{
int s = 0;
for (int k = 0;k < m;k++)
{
s = s + arr1[i, k] * arr2[k, j];
}
arr3[i, j] = s;
}
}
}
public static void printA2D(int[,] arr, int n, int m)
{
for (int i = 0;i < n;i++)
{
for (int j = 0;j < m;j++)
{
Console.Write(arr[i, j]);
Console.Write("\t");
}
Console.Write("\n");
}
Console.Write("--------------------------------------------
322 ‫فصل چهارم‬

----------\n");
Console.ReadKey(true);
}
public static void scalarMulArr(int[,] arr1, int[,] arr2, int
n, int m, int value)
{
for (int i = 0;i < n;i++)
{
for (int j = 0;j < m;j++)
{
arr2[i, j] = arr1[i, j] * value;
}
}
}
public static void scalarCalArr(int[,] arr1, int[,] arr2, int
n, int m, int value)
{
for (int i = 0;i < n;i++)
{
for (int j = 0;j < m;j++)
{
arr2[i, j] = arr1[i, j] + value;
}
}
}
public static int menu()
{
int choice;
Console.Write("\n\t\t1.Read array A");
Console.Write("\n");
Console.Write("\t\t2.Read array B");
Console.Write("\n");
Console.Write("\t\t3.Display array A");
Console.Write("\n");
Console.Write("\t\t4.Display array B");
Console.Write("\n");
Console.Write("\t\t5.Add array ");
Console.Write("\n");
Console.Write("\t\t6.Sub array ");
Console.Write("\n");
Console.Write("\t\t7.Mul array ");
Console.Write("\n");
Console.Write("\t\t8. N * A - M * B + K");
Console.Write("\n");
Console.Write("\t\t9.Exit ");
Console.Write("\n");
Console.Write("\tSelect 1 to 9: ");
choice = int.Parse(Console.ReadLine());
return choice;
}
static void Main(string[] args)
{
int[,] arr1 = new int[n, m];
int[,] arr2 = new int[n, m];
int[,] arr3 = new int[n, m];
int choice;
while (true)
{
choice = menu();
‫آرایهها و رشتهها‬ 326

switch (choice)
{
case 1:
readA2D(arr1, n, m);
break;
case 2:
readA2D(arr2, n, m);
break;
case 3:
Console.Write("\t\t A\n");
printA2D(arr1, n, m);
break;
case 4:
Console.Write("\t\t B \n");
printA2D(arr2, n, m);
break;
case 5:
Console.Write("\t\t A \n");
printA2D(arr1, n, m);
Console.Write("\t\t B \n");
printA2D(arr2, n, m);
Console.Write("\n\t\t A + B\n\n");
addArr(arr1, arr2, arr3, n, m);
printA2D(arr3, n, m);
break;
case 6:
printA2D(arr1, n, m);
Console.Write("\t\t B \n");
printA2D(arr2, n, m);
Console.Write("\tA - B\n");
subArr(arr1, arr2, arr3, n, m);
printA2D(arr3, n, m);
break;
case 7:
Console.Write("\t\t A \n");
printA2D(arr1, n, m);
Console.Write("\t\t B \n");
printA2D(arr2, n, m);
Console.Write("\t\t A * B \n");
mulArr(arr1, arr2, arr3, n, m);
printA2D(arr3, n, m);
break;
case 8:
int M;
int N;
int K;
Console.Write("Enter N, M, K:");
string input = Console.ReadLine();
string []inputs= input.Split(' ');
N = int.Parse(inputs[0]);
M = int.Parse(inputs[1]);
K = int.Parse(inputs[2]);
scalarMulArr(arr1, arr3, n, m, N);
Console.Write("\t\t A \n");
printA2D(arr1, n, m);
Console.Write("\t\t B \n");
printA2D(arr2, n, m);
Console.Write("\t\tN * A \n");
printA2D(arr3, n, m);
‫‪323‬‬ ‫فصل چهارم‬

‫* ‪Console.Write("\t\t -M‬‬ ‫;)"‪B\n‬‬


‫‪int[,] arr4 = new int[n,‬‬ ‫;]‪m‬‬
‫‪scalarMulArr(arr2, arr4,‬‬ ‫;)‪n, m, -M‬‬
‫;)‪printA2D(arr4, n, m‬‬
‫‪Console.Write("\t\tN * A‬‬ ‫;)"‪- M * B\n‬‬
‫‪addArr(arr4, arr3, arr3,‬‬ ‫;)‪n, m‬‬
‫;)‪printA2D(arr3, n, m‬‬
‫‪scalarCalArr(arr3, arr3,‬‬ ‫;)‪n, m, K‬‬
‫‪Console.Write("\t\tN * A‬‬ ‫;)"‪- M * B + K\n‬‬
‫;)‪printA2D(arr3, n, m‬‬
‫;‪break‬‬
‫‪case 9:‬‬
‫;)‪Environment.Exit(0‬‬
‫;‪break‬‬
‫}‬
‫}‬
‫}‬
‫}‬
‫}‬

‫سه در سه را خوانده‪ ،‬اعمال زیر را انجام میدهد‪:‬‬ ‫پروژه برنامهنویسی ‪ : 4‬برنامهای که عناصر یک ماتری‬
‫‪ .1‬تعیی میکند ماتری باال مثلثی است یا نه؟‬
‫‪ .2‬تعیی میکند ماتری پایی مثلثی است یا نه؟‬
‫‪ .3‬تعیی میکند ماتری باال و پایی مثلثی است یا نه؟‬
‫‪ .4‬تعیی میکند که آیا تمام عناصر هر سطر ماتری برابرند یا نه؟‬
‫‪ .5‬تعیی میکند که تمام عناصر هر ستون ماتری برابرند یا نه؟‬
‫متد )(‪ ،main‬ابتدا آرایه ‪ arr1‬با ‪ n‬سطر و ‪ m‬ستون تعریف کرده‪ ،‬با فراخوانی متد )(‪ ،readA2D‬عناصر آرایه را‬
‫میخواند و با فراخوانی متد )(‪ ،printA2D‬عناصر آرایه خواندهشده را نمایش میدهد‪ .‬در ادامه‪ ،‬با فراخوانی هر یک‬
‫از متدها )(‪ ،isEqualColumn()،isEqualRow()،isDownTri() ،isUPTri‬پیغام مناسب نمایش میدهد‪.‬‬
‫آرایهها و رشتهها‬ ‫‪324‬‬

‫متد )(‪ ،readA2D‬پارامترهای ‪( arr‬آرایهای دوبعدی اعداد خوانده را نگهداری میکند)‪( n ،‬تعداد سطرها) و ‪m‬‬
‫(تعداد ستونها) را دریافت کرده‪ ،‬دادهها را از ورودی خوانده‪ ،‬در ای آرایه قرار میدهد‪.‬‬
‫متد )(‪ ،printA2D‬پارامترهای ‪( arr‬آرایهای که عناصر آن باید چاپ شود)‪( n ،‬تعداد سطرها) و ‪( m‬تعداد‬
‫ستونها) را دریافت کرده‪ ،‬عناصر آرایه ‪ arr‬را به خروجی میبرد‪.‬‬
‫متد )(‪ ،isUPTri‬آرایه ‪( a‬آرایهای که باید تعیی شود‪ ،‬باال مثلثی است یا نه)‪( n ،‬تعداد سطرها) و ‪( m‬تعداد‬
‫ستونها) را دریافت کرده‪ ،‬اگر هر یک از عناصر که ‪( j‬شماره ستون) شماره آنها (‪ )j‬بزرگتر از ‪ i + 1‬باشد و مخالف‬
‫صفر باشد‪ ،‬متد ‪ false‬را برمیگرداند (یعنی‪ ،‬ماتری باال مثلثی نیست)‪ .‬اگر حلقه پیمایش شود‪ ،‬متد ‪ true‬را برگشت‬
‫میدهد ( یعنی‪ ،‬ماتری باال مثلثی است)‪.‬‬
‫متد )(‪ ،isDownTri‬آرایه ‪( a‬آرایهای که باید تعیی شود‪ ،‬که آیا پایی مثلثی است یا خیر)‪( n ،‬تعداد سطرها) و‬
‫‪( m‬تعداد ستونها) را بهعنوان پارامتر دریافت کرده‪ ،‬اگر هر یک از عناصر که شماره ستون آنها کوچکتر از ‪ 1‬باشد‬
‫و مخالف صفر باشد‪ ،‬متد ‪ false‬را برمیگردند (یعنی‪ ،‬ماتری پایی مثلثی نیست)‪ .‬اگر حلقهها خاتمه یابند‪ ،‬متد ‪ true‬را‬
‫برمیگرداند ( یعنی‪ ،‬ماتری پایی مثلثی است)‪.‬‬
‫متد )(‪ ،isEqualRow‬آرایه ‪( a‬آرایهای که باید تعیی شود‪ ،‬آیا همه عناصر هر سطر آن با هم برابرند یا نه)‪n ،‬‬
‫(تعداد سطرها) و ‪( m‬تعداد ستونها) را بهعنوان پارامتر دریافت کرده‪ ،‬شماره اولی سطری که همه عناصر آن برابر‬
‫نباشند‪ ،‬را برمیگرداند‪ .‬اگر همه سطرها‪ ،‬همه عناصرشان برابر باشند‪ ،‬متد ‪ -1‬را برگشت میدهد‪.‬‬
‫متد )(‪ ،isEqualColumn‬آرایه ‪( a‬آرایهای که باید تعیی شود‪ ،‬آیا همه عناصر هر ستون آن با هم برابرند یا نه)‪،‬‬
‫‪( n‬تعداد سطرها) و ‪( m‬تعداد ستونها) را بهعنوان پارامتر دریافت کرده‪ ،‬شماره اولی ستونی که همه عناصر آن برابر‬
‫نباشند‪ ،‬را برمیگرداند‪ .‬اگر همه ستونها‪ ،‬همه عناصرشان برابر باشند‪ ،‬متد ‪ -1‬را برگشت میدهد‪.‬‬
‫برنامه را اجرا کنید و اطالعا آرایه را بهصور زیر وارد نموده تا خروجی زیر را ببینید‪:‬‬
‫هدف‬ ‫متغیر‬ ‫متد‬
‫تعداد سطرها‬ ‫‪n‬‬ ‫سراسری‬
‫تعداد ستونها‬ ‫‪m‬‬
‫آرایهای (ماتریسی) که باید اعمال بیانشده بر روی آن بررسی شود‪.‬‬ ‫‪arr1‬‬ ‫‪main‬‬
‫پارامتری که دادههای خواندهشده برای ماتریس را در آن قرار میدهد‬ ‫‪arr‬‬ ‫‪readA2D‬‬

‫تعداد سطرها‬ ‫‪n‬‬


‫تعداد ستونها‬ ‫‪m‬‬
‫شمارندههایی برای پیمایش سطر و ستونهای ماتریس‬ ‫‪i, j‬‬
‫آرایهای که باید اطالعات آن نمایش داده شود‬ ‫‪arr‬‬
‫تعداد سطرها‬ ‫‪n‬‬
‫‪printA2D‬‬
‫تعداد ستونها‬ ‫‪m‬‬
‫شمارندهای برای پیمایش سطرها و ستونها‬ ‫‪i, j‬‬
‫آرایهای که باید تعیین شود باال مثلثی است یا نه‬ ‫‪a‬‬
‫تعداد سطرها‬ ‫‪n‬‬
‫‪isUPTri‬‬
‫تعداد ستونها‬ ‫‪m‬‬
‫شمارندههای سطرها و ستونها برای پیمایش عناصر آرایه‬ ‫‪i, j‬‬
‫آرایهای که باید تعیین شود پایین مثلثی است یا نه‬ ‫‪a‬‬
‫تعداد سطرها‬ ‫‪n‬‬ ‫‪isDownTri‬‬
‫تعداد ستونها‬ ‫‪m‬‬
322 ‫فصل چهارم‬

‫شمارندههای سطرها و ستونها برای پیمایش عناصر آرایه‬ i, j


‫آرایهای که باید تعیین شود آیا تمام مقادیر هر سطر یکی هستند یا نه‬ a
‫تعداد سطرها‬ n
isEqualRow
‫تعداد ستونها‬ m
‫شمارندههای سطرها و ستونها برای پیمایش عناصر آرایه‬ i, j
‫آرایهای که باید تعیین شود آیا تمام مقادیر هر ستون یکی هستند یا نه‬ a
‫تعداد سطرها‬ n
isEqualColumn
‫تعداد ستونها‬ m
‫شمارندههای سطرها و ستونها برای پیمایش عناصر آرایه‬ i, j
using System;
namespace Project4
{
class Program
{
public static readonly int n = 3;
public static readonly int m = 3;
public static void readA2D(int[,] arr, int n, int m)
{
for (int i = 0;i < n;i++)
{
Console.Write("Enter ");
Console.Write(m);
Console.Write(" numbers for row [");
Console.Write((i + 1));
Console.Write("]:");
string input = Console.ReadLine();
string[] inputs = input.Split(' ');
for (int j = 0; j < m; j++)
{
arr[i, j] = int.Parse(inputs[j]);
}
}
}
public static bool isUpTri(int[,] a, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < m; j++)
{
if (a [i, j] != 0)
{
return false;
}
}
}
return true;
}
public static bool isDownTri(int[,] a, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < i - 1; j++)
{
if (a [i, j] != 0)
{
return false;
}
}
}
‫آرایهها و رشتهها‬ 322

return true;
}
public static int isEqualRow(int[,] a, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (a [i, j] != a[i, 0])
{
return i;
}
}
}
return -1;
}
public static int isEqualColumn(int[,] a, int n, int m)
{
for (int j = 0; j < m; j++)
{
for (int i = 0; i < n; i++)
{
if (a [i, j] != a[0, j])
{
return j;
}
}
}
return -1;
}
public static void printA2D(int[,] arr, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
Console.Write(arr[i, j]);
Console.Write("\t");
}
Console.Write("\n\n");
}
Console.Write("--------------------\n");
Console.ReadKey(true);
}
static void Main(string[] args)
{
int[,] arr1 = new int[n, m];
readA2D(arr1, n, m);
printA2D(arr1, n, m);
if (isUpTri(arr1, n, m) == true)
{
Console.Write("\nUpper Tringle");
}
else
{
Console.Write("\nnot Upper Tringle");
}
if (isDownTri(arr1, n, m) == true)
{
Console.Write("\nDown Tringle");
}
else
{
Console.Write("\nnot Down Tringle");
}
if (isDownTri(arr1, n, m) == true && isUpTri(arr1, n, m) == true)
{
322 ‫فصل چهارم‬

Console.Write("\nDown and up Tringle");


}
else
{
Console.Write("\nnot Down and Up Tringle");
}
int res = isEqualRow(arr1, n, m);
if (res == -1)
{
Console.Write("\nEqual Each Row");
}
else
{
Console.Write("\nnot Equal row ");
Console.Write((res + 1));
}
res = isEqualColumn(arr1, n, m);
if (res == -1)
{
Console.Write("\nEqual Each Column");
}
else
{
Console.Write("\nnot Equal Column ");
Console.Write((res + 1));
}
Console.ReadKey();
}
}
}

‫ فرض کنید بخواهیم وضعیت مدالهای بی المللی یک کشیور را در رشیته ورزشیی‬.5 ‫پروژه برنامهنویسی‬
:‫ مطابق جدول زیر دریافت و پردازش کنیم‬1395 ‫ تا‬1305 ‫خاصی در مهرومومهای‬
‫تعداد مدال برنز‬ ‫تعداد مدال نقره‬ ‫تعداد مدال طال‬ ‫سال‬
0335
0370
0371
‫آرایهها و رشتهها‬ ‫‪322‬‬

‫‪0304‬‬
‫‪0305‬‬

‫برنامهای که ضم دریافت دادههای الزم (خانههای خالی طول) موارد زیر را نمایش میدهد‪.‬‬
‫‪ .1‬تعداد کل مدالهای کسبشده در همهی سالها‬
‫‪ .2‬تعداد کل مدالهای طالی کسبشده در همهی سالها‬
‫‪ .3‬شماره سالهایی که هیچ مدالی کسب نشده‬
‫‪ .4‬سالی که بیشتری مدال کسبشده‬
‫‪ .5‬سالی که بیشتری مدال طال کسبشده است‪.‬‬
‫‪ .6‬امتیاز تمام سالها به تفکیک سال‪ ،‬با فرض ای که هر مدال طال ‪ 3‬امتیاز‪ ،‬هر میدال نقیره ‪ 2‬امتییاز و هیر‬
‫مدال برنز ‪ 1‬امتیاز داشته باشد‪.‬‬
‫‪ .7‬تعداد سالهایی که امتیاز بیش از ‪ 14‬کسبشده است‪.‬‬
‫در ای برنامه متغیرهای زیر را داریم‪:‬‬
‫آرایه ‪ ،x‬آرایها ی که ستون اول آن تعداد طال‪ ،‬ستون دوم آن‪ ،‬تعداد نقره و ستون سوم آن تعداد برنز را‬
‫نگهداری میکند و سطرهای آن اطالعات سالها را نگهداری میکنند‪.‬‬
‫‪ I‬و ‪ j‬شمارندهها میباشند‪.‬‬
‫متغیرهای ‪( n1‬تعداد کل مدالهای کسبشده در همهی س اله ا)‪( n2 ،‬تع داد ک ل م داله ای ط الی‬
‫کسبشده در همهی سالها)‪( n3 ،‬سالی که هیچ مدالی کسب نشد)‪( n4 ،‬سالی که بیشترین مدال کس ب‬
‫شد)‪( n5 ،‬سالی که بیشترین مدال طال کسب شد)‪( n6 ،‬تعداد سالهایی که امتیاز بیش از ‪ 01‬کسب شد)‪.‬‬
‫متغیر ‪( m‬تعداد مدالهای کسبشده سال جاری)‪( maxm ،‬ب یشت رین م دال کس بش ده) و ‪maxg‬‬
‫(بیشترین مدال طالی کسبشده)‬
‫;‪using System‬‬
‫‪namespace Project5‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;]‪int[,] x = new int[11, 3‬‬
‫;‪int i, j‬‬
‫;‪int n1 = 0, n2 = 0, n4 = 0, n5 = 0, n7 = 0‬‬
‫;‪int maxg = 0, maxm = 0‬‬
‫;‪int m‬‬
‫)‪for (i = 0; i < 11; i++‬‬
‫{‬
‫;‪m = 0‬‬
‫‪Console.Write("tedade tala,noghre va boronze sale‬‬
‫;)‪{0} ?", 1385 + i‬‬
‫;)' '(‪string[] inputs = Console.ReadLine().Split‬‬
‫)‪for (j = 0; j < 3; j++‬‬
‫{‬
‫;)]‪x[i, j] = int.Parse(inputs[j‬‬
‫;]‪m += x[i, j‬‬
‫}‬
322 ‫فصل چهارم‬

n1 += m;
n2 += x[i, 0];
if (x[i, 0] * 3 + x[i, 1] * 2 + x[i, 2] > 10)
{
n7++;
}
if (m > maxm)
{
maxm = m;
n4 = i + 1385;
}
if (x[i, 0] > maxg)
{
maxg = x[i, 0];
n5 = i + 1385;
}
}
Console.WriteLine("--------- answer (1) -----");
Console.WriteLine(n1);
Console.WriteLine("--------- answer (2) -----");
Console.WriteLine(n2);
Console.WriteLine("--------- answer (3) -----");
for (i = 0; i < 11; i++)
{
if (x[i, 0] + x[i, 1] + x[i, 2] == 0)
{
Console.WriteLine((1385 + i));
}
}
Console.WriteLine("--------- answer (4) -----");
Console.WriteLine(n4);
Console.WriteLine("--------- answer (5) -----");
Console.WriteLine(n5);
Console.WriteLine("--------- answer (6) -----");
for (i = 0; i < 11; i++)
{
Console.Write("sal {0} : poan= ", 1385 + i);
Console.WriteLine((x[i, 0]*3+x[i, 1]*2+x[i, 2]));
}
Console.WriteLine("--------- answer (7) -----");
Console.WriteLine(n7);
Console.ReadKey();
}
}
}
‫آرایهها و رشتهها‬ ‫‪322‬‬

‫پروژه برنامهنویسی ‪ .6‬در یک تورنمنت ژیمناستیک با شرکت ‪ 14‬ورزشکار و ‪ 5‬داور امتییاز منظیر خیود را‬
‫در یک جدولی به شکل زیر یادداشت می کنند‪ .‬مالک انتخاب قهرمان امتیازا دادهشده توسط داوران بیه‬
‫هر ورزشکار است‪ .‬گزارش گردید یکی از داوران از یک ورزشکار رشوه گرفته تا به قهرمان شدن او کمیک‬
‫کند‪ .‬اما داور و ورزشکار متخلف شناسایی نشدند‪ .‬با توجه به ای که داور متخلف امتیازا پر تیری نسیبت‬
‫به همکارانش ثبت کرده است‪ ،‬کمیته برگزاری تصیمیم گرفتیه بیا بررسیی دادههیا او را شناسیایی کیرده و‬
‫امتیازا داده شده توسط وی را از جدول حذف نموده و درنهایت نام قهرمان واقعی و نام ورزشکار رشیوه‬
‫دهنده را مشخص کند‪ .‬ای برنامهای کار را انجام میدهد‪.‬‬
‫امتیاز داور پنجم‬ ‫‪.........‬‬ ‫امتیاز داور دوم‬ ‫امتیاز داور اول‬ ‫نام ورزشکار‬ ‫شماره پیراهن‬
‫‪0‬‬
‫‪1‬‬
‫‪3‬‬

‫‪‬‬
‫‪0‬‬
‫‪01‬‬

‫ثابتهای ‪ N‬و ‪ M‬به ترتیب تعداد ورزشکاران و داوران هستند‪.‬‬


‫‪ scores‬آرایهای که امتیاز تخصیص دادهشده دوران به ورزشکاران را نگهداری میکند‪.‬‬
‫‪ ،err‬آرایهای که اطالعاتی را نگهداری میکند تا داور متخلف را مییابد‪.‬‬
‫متغیر ‪ ،maxScore‬بیشترین امتیاز را نگهداری میکند‪.‬‬
322 ‫فصل چهارم‬

.‫ آرایهای که نام ورزشکاران را نگهداری میکند‬،name


.‫ به ترتیب شمارنده هستند‬j ،i
).‫ شماره ورزشکار برنده است‬c ‫ (شماره ورزشکار متخلف و‬،b
using System;
namespace Project6
{
class Program
{
static void Main(string[] args)
{
const int N = 10;
const int M = 5;
double[,] scores = new double[N, M];
double[] err = new double[M];
double m;
double maxScore = 0;
string[] names = new string[N];
int i, j, k, b=0, c=0;
for (i = 0; i < N; i++)
{
Console.Write("Enter name and scores of sportman # ");
Console.Write((i + 1));
Console.Write(" :");
string [] inputs= Console.ReadLine().Split(' ');
names[i] = inputs[0];
for (j = 0; j < M; j++)
{
scores[i, j] = double.Parse(inputs[1]);
}
}
for (i = 0; i < N; i++)
{
m = 0;
for (j = 0; j < M; j++)
{
m += scores[i, j] / M;
}
for (j = 0; j < M; j++)
{
err[j] += Math.Abs(scores[i, j] - m);
}
}
k = 0;
for (j = 1; j < M; j++)
{
if (err[j] > err[k])
{
k = j;
}
}
for (i = 0; i < N; i++)
{
m = 0;
for (j = 0; j < M; j++)
‫آرایهها و رشتهها‬ 326

{
if (j == k)
{
continue;
}
m += scores[i, j];
}
if (m > maxScore)
{
maxScore = m;
b = i;
}
}
maxScore = 0;
for (i = 0; i < N; i++)
{
if (scores[i, k] > maxScore)
{
maxScore = scores[i, k];
c = i;
}
}
Console.WriteLine("Briber is {0} ", names[c]);
Console.WriteLine("Winner is {0} ", names[b]);
Console.ReadKey();
}
}
}
‫برنامهنویسی شیءگرا‪ :‬کالسها‪،‬‬ ‫فصل‬
‫وراثت و چندریختی‬ ‫‪5‬‬
‫را‬ ‫‪ .1‬برنامهای که کالس ‪ Circle‬را طوری تغییر میدهد تا دو سازنده داشته باشد‪ .‬سازنده اول‪ ،‬ساازنده یای فار‬
‫ییادهسازی میکند و سازنده دوم شعاع دایره را بهعنوان یارامتر دریافت میکند و در فیلد شعاع (‪ )r‬قرار میدهد‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬کالس ‪ Circle‬را به پروژه اضافه کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p1‬‬
‫{‬
‫‪class Circle‬‬
‫{‬
‫;‪public const double PI = Math.PI‬‬
‫;‪private int r‬‬
‫‪public int R‬‬
‫{‬
‫‪get‬‬
‫{‬
‫;‪return r‬‬
‫}‬
‫‪set‬‬
‫{‬
‫;‪if (value > 0) r = value‬‬
‫;‪else r = 0‬‬
‫}‬
‫}‬
‫)(‪public Circle‬‬
‫{‬
‫;‪R = 0‬‬
‫}‬
‫)‪public Circle(int r1‬‬
‫{‬
‫;‪R = r1‬‬
‫}‬
‫)(‪public double Area‬‬
‫{‬
‫;‪return PI * r * r‬‬
‫}‬
‫)(‪public double Perime‬‬
‫{‬
‫;‪return 2 * PI * r‬‬
‫}‬
‫}‬
‫}‬
‫‪ .3‬به کالس ‪ Program‬برگردید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪ 483‬فصل پنجم‬

‫‪namespace p1‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)(‪Circle c1 = new Circle‬‬
‫‪Console.WriteLine("Radis is {0}\tArea is {1}\tPerime‬‬
‫;))(‪is {2}", c1.R, c1.Area(), c1.Perime‬‬
‫;)"‪Console.Write("Enter Radius:‬‬
‫;)))(‪Circle c2=new Circle(Convert.ToInt32(Console.ReadLine‬‬
‫‪Console.WriteLine("Radis is {0}\tArea is {1}\tPerime‬‬
‫;))(‪is {2}", c2.R, c2.Area(), c2.Perime‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این دستورات ابتدا نمونه ‪ c1‬ایجاد میشود‪ .‬برای ایجاد نمونه ‪ c1‬سازنده بدون پارامتر فراخوانی میشوود‬
‫تا شعاع برابر صفر خواهد شد‪ .‬در ادامه شعاع‪ ،‬محیط و مساحت را برای نمونه ‪ c1‬نمایش میدهد‪ .‬در ادامه شعاع‬
‫را از کاربر درخواست میکند‪ .‬با شعاع واردشده توسط کاربر‪ ،‬نمونه ‪ c2‬را ایجاد میکند که برای ایجاد نمونوه‬
‫‪ c2‬سازنده با یک پارامتر را فراخوانی میکند و در پایان شعاع‪ ،‬محیط و مساحت نمونه ‪ c2‬را نمایش میدهد‪.‬‬
‫‪ .4‬پروژه را ذخیره و اجرا کنید تا خروجی زیر را مشاهده نمایید‪:‬‬

‫میدهد‪.‬‬ ‫‪ .2‬برنامهای که تعداد اشیاء ایجادشده یک کالس را شمارش میکند و نمای‬


‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬کالسی به نام ‪ Counter‬ایجاد کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p2‬‬
‫{‬
‫‪class Counter‬‬
‫{‬
‫;‪public static int countObject = 0‬‬
‫)(‪public Counter‬‬
‫{‬
‫;‪countObject++‬‬
‫}‬
‫)(‪~Counter‬‬
‫{‬
‫;‪--countObject‬‬
‫}‬
‫}‬
‫}‬
‫کالس ‪ Counter‬دارای اعضای زیر است‪:‬‬
‫‪483‬‬ ‫برنامهنویسی شیءگرا‪ :‬کالسها‪ ،‬وراثت و چندریختی‬

‫عضو استاتیک ‪ ،countObject‬تعداد نمونههای (اشیا) ایجادشده کالس را نگهداری میکند‪.‬‬


‫سازنده )(‪ ،Counter‬به ‪ countObject‬یک واحد اضافه مویکنود توا تعوداد نمونوههوای ایجادشوده از‬
‫کالس در این فیلد قرار گیرد‪.‬‬
‫مخرب )(‪ ،Counter‬از فیلد ‪ countObject‬یک واحد کم میکند تا با تخریو (حو) ) شویایوی از‬
‫کالس از فیلد ‪ countObject‬یک واحد کم شود‪ .‬همانطور که در تعریف مخرب میبینید‪ ،‬عالموت( ~ )‬
‫قبل از نام کالس آمده است‪ .‬البته در مخرب نباید سطح دسترسی ‪ public‬یا ‪ private‬را تعیین کنید‪.‬‬
‫‪ .3‬به کالس ‪ Program‬بروید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p2‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)‪Console.WriteLine("Count Object is {0}", Counter.countObject‬‬
‫;)(‪Counter c1 = new Counter‬‬
‫;)(‪Counter c2 = new Counter‬‬
‫;)‪Console.WriteLine("Count Object is {0}", Counter.countObject‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫دستور اول داخل متد ‪ ،Main‬تعداد نمونههای ایجادشده کالس ‪ Counter‬را نمایش میدهد که صفر است‪.‬‬
‫دستورات دوم و سوم‪ ،‬دو نمونه به نامهای ‪ c1‬و ‪ c2‬از نوع کالس ‪ Counter‬ایجواد مویکننود و دسوتور اهوارم‪،‬‬
‫تعداد نمونههای ایجادشده کالس ‪( Counter‬یعنی‪ )2 ،‬را نمایش خواهد داد‪.‬‬
‫‪ .4‬پروژه را ذخیره و اجرا کنید تا خروجی زیر را ببینید‪:‬‬

‫‪ .3‬برنامهای که نام کاربر و کلمه عبور را دریافت میکند‪ .‬اگر نام کاربر ‪ fanavarienovin‬و کلمه عبور ‪654321‬‬
‫باشد‪ ،‬ییغام ‪ ،Correct‬وگرنه ییغام ‪ Not Correct‬را نمای میدهد‪.‬‬
‫توضیح‪ :‬این برنامه از کالسی به نام ‪ User‬استفاده میکند که دو فیلد ‪ static‬به نامهای ‪ userName‬و‬
‫‪ Password‬دارد و متدی به نام )(‪ isCorrect‬دارد تا تعیین کند‪ ،‬نام کاربر و کلمه عبور صحیح واردشده‬
‫است یا خیر‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬کالسی ‪ User‬را به برنامه اضافه کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p3‬‬
‫{‬
‫‪class User‬‬
‫{‬
‫‪ 483‬فصل پنجم‬

‫;"‪private static string UserName = "fanavarienovin‬‬


‫;"‪private static string Password = "1234556‬‬
‫)‪public static bool isCorrect(string userName,string password‬‬
‫{‬
‫;)‪return (userName == UserName && password == Password‬‬
‫}‬
‫}‬
‫}‬
‫‪ .3‬به کالسی ‪ Program‬بروید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p3‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter user name:‬‬
‫;)(‪string userName = Console.ReadLine‬‬
‫;)"‪Console.Write("Enter password:‬‬
‫;)(‪string password = Console.ReadLine‬‬
‫)‪if (User.isCorrect(userName, password) == true‬‬
‫;)"‪Console.WriteLine("Correct‬‬
‫‪else‬‬
‫;)"‪Console.WriteLine("Not Correct‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫دستورات اول تا اهارم درون متد ‪ ،Main‬با پیغامهایی‪ ،‬نام کواربر و کلموه عبوور را خوانوده‪ ،‬در متغیرهوای‬
‫‪ userName‬و ‪ Password‬قرار میدهند و دستور پونجم (‪ ،)if‬متود )(‪ isCorrect‬را بوا دو پوارامتر ‪ userName‬و‬
‫‪ Password‬فراخوانی میکند‪ .‬دقت کنید در هنگام فراخوانی از نام کالس (یعنی‪ )User ،‬اسوتفاده نمووده اسوت‬
‫(نمونهای از آن ایجاد نکرد)‪.‬‬
‫‪ .4‬پروژه را ذخیره و اجرا کنید تا نمونه خروجی زیر را مشاهده نمایید‪:‬‬

‫‪ .4‬برنامهای که شعاع کرهای را دریافت کرده مساحت و حجم کره را محاسبه مینماید و نمای میدهد (در این‬
‫برنامه از کالسی به نام ‪ Sphere‬استفاده میکند که فیلد شعاع (‪ )r‬آن فقط خواندنی میباشد)‪ .‬حجم و مساحت کره با‬
‫فرمولهای زیر محاسبه میشود‪:‬‬
‫‪ =3.1415 * r3 * 4 / 3‬حجم کره‬ ‫‪ = 3.1415 * r2 * 4‬مساحت کره‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬کالس ‪ Sphere‬را به پروژه اضافه کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫{ ‪namespace Ch5_7‬‬
‫‪class Sphere‬‬ ‫{‬
483 ‫ وراثت و چندریختی‬،‫ کالسها‬:‫برنامهنویسی شیءگرا‬

using System;
namespace p4
{
class Sphere
{
public const double PI = 3.1415;
public readonly int r;
public Sphere(int r)
{
if (r > 0) this.r = r;
else this.r = 0;
}
private long Pow(int r, int n)
{
long p = 1;
for (int i = 1; i <= n; i++) p *= r;
return p;
}
public double Volume()
{
return (4.0 / 3 * Pow(r, 3) * PI);
}
public double Area()
{
return (4.0 * Pow(r, 2) * PI);
}
}
}
:‫این کالس دارای اعضای زیر میباشد‬
.‫ را نگهداری میکند‬3.1415 ‫ مقدار‬،PI ‫ثابت‬
.‫ شعاع کره را نگهداری میکند‬،r ‫فیلد فقط خواندنی‬
‫) قورار مویدهود‬r( ‫ را بهعنوان پارامتر دریافت کرده در فیلد فقط خواندنی شوعاع‬r ‫ مقدار‬،Sphere ‫سازنده‬
.)‫ استفادهشده است‬this ‫(اون نام متغیر با نام فیلد یکی میباشد از اشارهگر‬
.‫ را برمیگرداند‬rn ،‫ را گرفته‬n ‫ و‬r ‫ پارامتر‬،Pow() ‫متد‬
.‫ برمیگرداند‬،‫ حجم کره را حساب کرده‬،Volume() ‫متد‬
.‫ برمیگرداند‬،‫ مساحت کره را محاسبه کرده‬،Area() ‫متد‬
:‫ بروید و دستورات آن را بهصورت زیر تغییر دهید‬Program ‫ به کالس‬.3
using System;
namespace p4
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter r:");
Sphere s = new Sphere(Convert.ToInt32(Console.ReadLine()));
Console.WriteLine("Volume is{0}\tArea is{1}",s.Volume(),s.Area());
Console.ReadKey();
}
}
‫‪ 488‬فصل پنجم‬

‫}‬
‫دستور اول داخل )(‪ ،Main‬یک پیغام نمایش میدهد تا کاربر شعاع کره را وارد کند‪ .‬دستور دوم بوا شوعاع‬
‫دریافتی یک نمونه به نام ‪ s‬از کالس ‪ Sphere‬ایجاد میکند و دسوتور سووم‪ ،‬مسواحت و حجوم کوره را محاسوبه‬
‫کرده‪ ،‬نمایش میدهد‪.‬‬
‫‪ .4‬پروژه را ذخیره و اجرا کنید تا نمونه خروجی زیر را مشاهده نمایید‪:‬‬

‫‪ .5‬برنامهای که کالسی طراحی میکند که اطالعات زیر را دارد‪:‬‬


‫‪ .4‬نام خانوادگی استاد‬ ‫‪ .5‬نام استاد‬ ‫‪ .6‬شماره استادی‬
‫‪ .2‬مبلغ یرداختی به ازای هر ساعت تدریس‬ ‫‪ .3‬ساعات تدریس‬
‫در این کالس مبلغ حقالتدریس استاد را محاسبه میکند که بهصورت زیر محاسبه میشود‪:‬‬
‫مبلغ یرداختی به ازای هر ساعت تدریس * ساعت تدریس = مبلغ حقالتدریس‬
‫برنامهای که از این کالس استفاده میکند‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬کالس ‪ Teacher‬را به پروژه اضافه کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p5‬‬
‫{‬
‫‪class Teacher‬‬
‫{‬
‫;‪private string id‬‬
‫;‪private string firstName‬‬
‫;‪private string lastName‬‬
‫;‪private int hour‬‬
‫;‪private int payPerOneHour‬‬
‫‪public string ID‬‬
‫{‬
‫‪get‬‬
‫{‬
‫;‪return id‬‬
‫}‬
‫‪set‬‬
‫{‬
‫;‪id = value‬‬
‫}‬
‫}‬
‫‪public string FirstName‬‬
‫{‬
‫‪get‬‬
‫{‬
‫;‪return firstName‬‬
‫}‬
‫‪set‬‬
‫{‬
‫;‪firstName = value‬‬
‫}‬
483 ‫ وراثت و چندریختی‬،‫ کالسها‬:‫برنامهنویسی شیءگرا‬

}
public string LastName
{
get
{
return lastName;
}
set
{
lastName = value;
}
}
public int Hour
{
get
{
return hour;
}
set
{
if (value > 0) hour = value;
else hour = 0;
}
}
public int PayPerOneHour
{
get
{
return payPerOneHour;
}
set
{
if (value > 0) payPerOneHour = value;
else payPerOneHour = 0;
}
}
public Teacher() { }
public Teacher(string i, string f, string l, int h, int p)
{
ID = i; FirstName = f; LastName = l;
Hour = h; PayPerOneHour = p;
}
public long Payment()
{
return hour * payPerOneHour;
}
}
}
:‫این کالس اعضای زیر را دارد‬
.‫ شماره استادی را نگهداری میکند‬،id ‫فیلد‬
.‫ به کار میرود‬id ‫ برای بازیابی و مقداری دهی به فیلد‬،ID ‫خاصیت‬
.‫ نام استاد را نگهداری میکند‬،firstName ‫فیلد‬
.‫ به کار میرود‬firstName ‫ برای بازیابی و مقداردهی به فیلد‬،FirstName ‫خاصیت‬
‫‪ 433‬فصل پنجم‬

‫فیلد ‪ ،lastName‬نام خانوادگی استاد را نگهداری مینماید‪.‬‬


‫خاصیت ‪ ،LastName‬برای بازیابی و مقداردهی به فیلد ‪ lastName‬استفاده میشود‪.‬‬
‫فیلد ‪ ،hour‬برای نگهداری ساعات تدریس استاد به کار میرود‪.‬‬
‫خاصیت ‪ ،Hour‬جهت بازیابی و مقداردهی فیلد ‪ hour‬به کار میرود‪ .‬متد ‪ set‬از ورود دادههای منفی بورای‬
‫فیلد ‪ hour‬جلوگیری میکند‪.‬‬
‫فیلد ‪ ،payPerOneHour‬مبلغ پرداختی به ازای هر ساعت تدریس استاد را ذخیره میکند‪.‬‬
‫خاصیت ‪ ،payPerOneHour‬جهت بازیابی و مقداردهی فیلد ‪ payPerOneHour‬به کار میرود و متد ‪set‬‬
‫آن از ورود مبلغ منفی در فیلد ‪ payPerOneHour‬جلوگیری خواهد کرد‪.‬‬
‫سازنده بدون یارامتر )(‪ ،Teacher‬سازنده پیشفرض را پیادهسازی میکند که به فیلدهای عددی مقدار اولیه‬
‫صفر‪ ،‬رشتهای مقدار اولیه ‪ null‬را میدهد‪.‬‬
‫سازنده با یارامتر )…(‪ ،Teacher‬پارامترهایی را میگیرد و به خواص تعیینشده در کالس تخصیص میدهد‪.‬‬
‫متد )(‪ ،Payment‬مبلغ حقالتدریس پرداختی به استاد را محاسبه کرده برمیگرداند‪.‬‬
‫‪ .3‬به کالس ‪ Program‬برگردید و دستورات آن را بهصورت تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p5‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)(‪Teacher t1 = new Teacher‬‬
‫‪Console.WriteLine(t1.ID + "\t" + t1.FirstName + "\t" +‬‬
‫‪t1.LastName + "\t" + t1.Hour.ToString() + "\t" +‬‬
‫‪t1.PayPerOneHour.ToString() + "\t" +‬‬
‫;))(‪t1.Payment().ToString‬‬
‫;)‪Teacher t2=new Teacher("12", "Ali", "Ahmadi", 140, 70000‬‬
‫‪Console.WriteLine(t2.ID + "\t" + t2.FirstName + "\t" +‬‬
‫‪t2.LastName + "\t" + t2.Hour.ToString() + "\t" +‬‬
‫‪t2.PayPerOneHour.ToString() + "\t" +‬‬
‫;))(‪t2.Payment().ToString‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫دستور اول داخل متد )(‪ ،Main‬یک نمونه به نام ‪ t1‬از نوع ‪ Teacher‬ایجاد میکند‪ .‬برای ایجواد ایون نمونوه‬
‫سازنده پیشفرض را فراخوانی مینماید تا مقودار اولیوه ‪ null‬را بورای فیلودهای ‪ firstName ،id‬و ‪ lastName‬و‬
‫مقدار اولیه صفر را برای فیلدهای ‪ hour‬و ‪ PayPerOneHour‬تعیین کند‪ .‬دستور دوم‪ ،‬از طریق خواص نمونه ‪t1‬‬
‫مقدار فیلدهای آن را نمایش میدهد‪ .‬دستور سوم‪ ،‬نمونه ‪ t2‬را ایجاد میکنود‪ .‬بورای ایجواد نمونوه ‪ t2‬سوازنده بوا‬
‫پوووارامتر کوووالس ‪ Teacher‬را فراخووووانی مووویکنووود و بوووه فیلووودهای ‪ hour ،LastName ،firstName ،id‬و‬
‫‪ payPerOneHour‬به ترتی مقادیر اولیه “‪ 241 ،“Ahmadi” ،“Ali” ،”22‬و ‪ 01111‬را تخصیص خواهد داد و‬
‫دستور اهارم‪ ،‬مقادیر فیلدها را از طریق خواص آنها نمایش میدهد‪.‬‬
‫‪ .4‬پروژه را ذخیره و اجرا کنید تا خروجی زیر را ببینید‪:‬‬
‫‪433‬‬ ‫برنامهنویسی شیءگرا‪ :‬کالسها‪ ،‬وراثت و چندریختی‬

‫‪ .6‬برنامهای که دو زمان را مقایسه میکند‪ .‬در این برنامه از کالسی به نام ‪ Time‬استفادهشده است‪ .‬این کالس‬
‫دارای سه فیلد ‪( hour‬ساعت)‪( minute ،‬دقیقه)‪( second ،‬ثانیه)‪ ،‬دو سازنده و یک متد به نام )(‪ isEqual‬است که‬
‫دو شیء از نوع ‪ Time‬را مقایسه میکند‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .2‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .3‬کالسی ‪ Time‬را به برنامه اضافه کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p6‬‬
‫{‬
‫‪class Time‬‬
‫{‬
‫;‪private int hour‬‬
‫;‪private int minute‬‬
‫;‪private int second‬‬
‫} { )(‪public Time‬‬
‫)‪public Time(int hour, int minute, int second‬‬
‫{‬
‫;‪this.hour=hour; this.minute = minute‬‬
‫;‪this.second = second‬‬
‫}‬
‫)‪public bool isEqual(Time t‬‬
‫{‬
‫&& ‪return (this.hour == t.hour‬‬
‫;)‪this.minute == t.minute && this.second == t.second‬‬
‫}‬
‫}‬
‫}‬
‫این کالس دارای اعضای زیر میباشد‪:‬‬
‫برای نگهوداری مقوادیر سواعت‪ ،‬دقیقوه و هانیوه بوه کوار‬ ‫فیلدهای ‪ minute ،hour‬و ‪ second‬که به ترتی‬
‫میروند‪.‬‬
‫سازنده بدون یارامتر )(‪ ،Time‬سازنده پیشفرض را پیادهسازی میکند‪.‬‬
‫سازنده با یارامتر )(‪ ،Time‬سه پارامتر برنامههای ‪ minute ،hour‬و ‪ second‬را دریافوت کورده‪ ،‬در فیلودهای‬
‫‪ this.minute ،this.hour‬و ‪ this.second‬قرار می دهد‪ .‬اون نام پارامترهوای متود بوا نوام فیلودها یکوی بوود‪ ،‬از‬
‫کلمه ‪ this‬برای دسترسی به فیلدهای کالس استفادهشده است‪.‬‬
‫متد )(‪ ،isEqual‬دو شیء از نوع ‪ Time‬را مقایسه میکند‪ .‬شیء اول بهصورت ضمنی بوه متود ارسوال موی‪-‬‬
‫شود‪.‬‬
‫‪ .4‬به کالس ‪ Program‬بروید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p6‬‬
‫{‬
‫‪class Program‬‬
‫‪ 433‬فصل پنجم‬

‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)(‪Time t1 = new Time‬‬
‫;)‪Time t2 = new Time(10, 55, 40‬‬
‫))‪if (t1.isEqual(t2‬‬
‫;)"‪Console.WriteLine("t1 Equals t2‬‬
‫‪else‬‬
‫;)"‪Console.WriteLine("t1 Not Equals t2‬‬
‫))‪if (t2.isEqual(t2‬‬
‫;)"‪Console.WriteLine("t2 Equals t2‬‬
‫‪else‬‬
‫;)"‪Console.WriteLine("t2 Not Equals t2‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫دستور اول داخل متد )(‪ ،Main‬نمونه ‪ t1‬را با مقادیر صفر برای ساعت‪ ،‬دقیقه و هانیه ایجاد میکنود‪ .‬دسوتور‬
‫دوم‪ ،‬نمونه ‪ t2‬را با مقادیر ‪ 55 ،21‬و ‪ 41‬برای فیلدهای ساعت‪ ،‬دقیقه و هانیه ایجاد نمایید‪ .‬دستور سوم شویء ‪ t1‬و‬
‫‪ t2‬را که با فراخوانی متد )(‪ isEqual‬هست مقایسه میکند (شیء ‪ t1‬بهصورت ضمنی برای متد ارسال میشوود)‬
‫و دستور ‪ if‬بعدی شیء ‪ t2‬را با ‪ t2‬مقایسه میکند (شیء ‪ t2‬هم از طریق پارامتر و هم بهصوورت ضومنی بوه متود‬
‫ارسال میشود)‪.‬‬
‫‪ .5‬پروژه را ذخیره و اجرا کنید تا خروجی زیر را ببینید‪:‬‬

‫‪ .7‬برنامهای که ییادهسازی ایندکسرها را برای ذخیره و بازیابی چند نام نشان میدهد (هدف این برنامه آشنایی با‬
‫‪ ،Indexer‬ییادهسازی و تعریف مجدد آن میباشد)‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬کالس ‪ Indexer‬را به برنامه اضافه کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p7‬‬
‫{‬
‫‪class Indexer‬‬
‫{‬
‫;‪private string[] name‬‬
‫)‪public Indexer(int size‬‬
‫{‬
‫;]‪name = new string[size‬‬
‫;"‪for (int i = 0; i < size; i++) name[i] = "Null‬‬
‫}‬
‫]‪public string this[int index‬‬
‫{‬
‫‪get‬‬
‫{‬
‫? )‪return ((index > name.Length && index < 0‬‬
‫‪434‬‬ ‫برنامهنویسی شیءگرا‪ :‬کالسها‪ ،‬وراثت و چندریختی‬

‫;)]‪"Error" : name[index‬‬
‫}‬
‫‪set‬‬
‫{‬
‫)‪if (index >= 0 && index < name.Length‬‬
‫;‪name[index] = value‬‬
‫}‬
‫}‬
‫]‪public string this[string data‬‬
‫{‬
‫‪get‬‬
‫{‬
‫;‪int count = 0‬‬
‫)‪for (int i = 0; i < name.Length; i++‬‬
‫;‪if (name[i] == data) count++‬‬
‫;)(‪return count.ToString‬‬
‫}‬
‫‪set‬‬
‫{‬
‫)‪for (int i = 0; i < name.Length; i++‬‬
‫;‪if (name[i] == data) name[i] = value‬‬
‫}‬
‫}‬
‫}‬
‫}‬
‫این کالس دارای اعضای زیر میباشد‪:‬‬
‫عضو ‪ ،name‬بهصورت آرایهای از رشته تعریفشده است و برای ذخیرهسازی نامهای مختلف به کار می‪-‬‬
‫رود‪.‬‬
‫سازنده )(‪ ،Indexer‬تعداد عناصر آرایه را از طریوق پوارامتر ‪ size‬دریافوت مویکنود از آرایوه ‪ name‬نمونوه‬
‫جدیدی ایجاد مینماید‪ ،‬سپس هر یک از عناصر آن را با کلمه ”‪ “Null‬مقداردهی خواهد کرد‪.‬‬
‫عضو ]‪ ،this[int index‬مکان عنصری از آرایه که میخواهید مقدار بگیرد یا مقدار آن برگردانده شوود‪ ،‬را‬
‫دریافت کرده‪ ،‬با متدهای ‪ get‬و ‪ set‬مقدار آن مکان را بازیابی یا مقداری را در آن مکان قرار مویدهود‪ .‬دقوت‬
‫کنید که در هریک از متدهای ‪ get‬و ‪ set‬اک میشود که ‪ index‬کواکتر از صفر و بزرگتر مساوی تعداد‬
‫عناصر آرایه ]‪ [name.Length‬نباشد‪.‬‬
‫عضو ]‪ ،this [string data‬ایندکسر را مجدداً تعریف )‪(overload‬کورده اسوت توا پوارامتری از نووع رشوته‬
‫(‪ )string‬را دریافت کند‪ .‬متد ‪ ،get‬تعداد عناصر آرایه که با مقدار پارامتر برابر هستند را برمیگردد‪ .‬ولوی متود‬
‫‪ ،set‬تمامی عناصر آرایه که مقدار آنها برابر ‪ data‬باشد‪ ،‬با مقدار جدید جایگزین خواهند شد‪.‬‬
‫‪ .3‬به کالس ‪ Program‬بروید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p7‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int size = 5‬‬
‫;)‪Indexer name = new Indexer(size‬‬
‫‪ 433‬فصل پنجم‬

‫;"‪name[4] = "Ali‬‬
‫;"‪name[0] = "Ahmad‬‬
‫;"‪name[2] = "Reza‬‬
‫;)"‪Console.WriteLine("Indexer Output‬‬
‫)‪for (int i = 0; i < size; i++‬‬
‫;)]‪Console.Write("name[{0}]: {1}\t", i, name[i‬‬
‫;"‪name["Null"] = "Empty‬‬
‫;)"‪Console.WriteLine("Indexer Output‬‬
‫)‪for (int i = 0; i < size; i++‬‬
‫{‬
‫;)]‪Console.Write("name[{0}]: {1}\t", i, name[i‬‬
‫}‬
‫‪Console.WriteLine("\nNumber of \"Empty\"entries:{0}",‬‬
‫;)]"‪name["Empty‬‬
‫;)(‪Console.ReadLine‬‬
‫}‬
‫}‬
‫}‬
‫در متد )(‪ Main‬اعمال زیر انجام میشود‪:‬‬
‫متغیر ‪ size‬تعریفشده در آن ‪ 5‬قرار میگیرد‪.‬‬
‫نمونه ‪ name‬با ‪ 5‬عنصر از نوع کالس ‪ Indexer‬تعریف میشود‪.‬‬
‫به عناصر با اندیسهای ‪ 0 ،4‬و ‪ 2‬مقادیر ”‪ “Ahmad” ،“Ali‬و ”‪ “Reza‬را تخصیص میدهد‪.‬‬
‫با پیغام مناس اطالعات موجود در نمونه ‪ name‬را نمایش میدهد‪.‬‬
‫بهجای تمام ‪ Null‬در ‪ name‬مقدار ”‪ “Empty‬را قرار میدهد‪ .‬این عمل با فراخووانی متود ‪ set‬مربوو بوه‬
‫ایندکسر که پارامتر از نوع رشتهای دارد‪ .‬انجام میشود‪.‬‬
‫با پیغام مناس تمام مقادیر نمونه ‪ name‬را نمایش میدهد‪.‬‬
‫تعداد عناصر ‪ name‬که مقدار آنها ‪ Empty‬باشود را نموایش مویدهود‪ .‬ایون عمول بوا فراخووانی متود ‪get‬‬
‫ایندکسری که پارامتر نوع رشتهای دارد‪ ،‬انجام میگردد‪.‬‬
‫‪ .4‬پروژه را ذخیره و اجرا کنید تا خروجی زیر را ببینید‪:‬‬

‫‪ .8‬برنامهای که ییادهسازی و استفاده از ‪ delegate‬را نشان میدهد‪.‬‬


‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬دستورات کالس ‪ Program‬را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p8‬‬
‫{‬
‫;)‪public delegate int FirstDelegate(int i, int j‬‬
‫;)(‪public delegate void SecondDelegate‬‬
‫‪class Program‬‬
‫{‬
‫‪433‬‬ ‫برنامهنویسی شیءگرا‪ :‬کالسها‪ ،‬وراثت و چندریختی‬

‫)‪public int Add(int i, int j‬‬


‫{‬
‫;‪return i + j‬‬
‫}‬
‫)‪public int Sub(int i, int j‬‬
‫{‬
‫;‪return i - j‬‬
‫}‬
‫)(‪public void Show‬‬
‫{‬
‫;)"‪Console.WriteLine("Second Delegate.‬‬
‫}‬
‫)(‪public void Display‬‬
‫{‬
‫;)"‪Console.WriteLine("www.Fanavrienovin.net‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)(‪Program p = new Program‬‬
‫;)‪FirstDelegate m = new FirstDelegate(p.Add‬‬
‫;)‪int result = m(9, 5‬‬
‫;)‪m = new FirstDelegate(p.Sub‬‬
‫;)‪int result1 = m(50, 10‬‬
‫" ‪Console.WriteLine(result +‬‬ ‫;)‪" + result1‬‬
‫;)‪SecondDelegate m2 = new SecondDelegate(p.Show‬‬
‫;)‪SecondDelegate m3 = new SecondDelegate(p.Display‬‬
‫;‪m2 = m2 + m3‬‬
‫;‪m3 = m2 - m3‬‬
‫;)(‪m2‬‬
‫;)(‪m3‬‬
‫;)(‪Console.Read‬‬
‫}‬
‫}‬
‫}‬
‫این کالس دارای اعضای زیر میباشد‪:‬‬
‫عضو )(‪ ،FirstDelegate‬یک ‪ delegate‬را تعریف میکند‪ .‬این ‪ delegate‬میتواند متودی بوا دو پوارامتر از‬
‫نوع ‪ int‬را بپ)یرد و یک مقدار ‪ int‬را برگرداند‪.‬‬
‫عضو )(‪ ،SecondDelegate‬یک ‪ delegate‬دیگر تعریف میکند این )(‪ delegate‬میتواند متدی را بپ)یرد‪،‬‬
‫که هیچ پارامتری ندارد و هیچ مقداری را برگشت نمیدهد‪.‬‬
‫متد )(‪ ،Add‬دو پارامتر ‪ i‬و ‪ j‬از نوع ‪ int‬را دریافت کرده‪ ،‬مجموع آنها را برمیگرداند‪.‬‬
‫متد )(‪ ،Sub‬دو پارامتر ‪ i‬و ‪ j‬از نوع ‪ int‬را دریافت کرده‪ ،‬حاصل تفریق آنها را برمیگرداند‪.‬‬
‫متد )(‪ ،Show‬پیغام ‪ SecondDelegate‬را نمایش میدهد‪.‬‬
‫متد )(‪ ،Display‬آدرس سایت فناوری نوین را نمایش میدهد‪.‬‬
‫متد )(‪ ،Main‬اعمال زیر را انجام میدهد‪:‬‬
‫‪ .1‬نمونهای از کالس ‪ Program‬به نام ‪ p‬ایجاد میکند تا بتواند متدهای آن را اجرا کند‪ .‬اون متدها از نووع‬
‫‪ static‬نیستند‪ ،‬برای اجرا باید نمونه از کالس ایجاد کرد‪.‬‬
‫‪ .2‬نمونه ‪ m‬را از نوع ‪ FirstDelegate‬ایجاد کرده‪ ،‬آدرس متد ‪ Add‬نمونه ‪ p‬را برای آن ارسال میکند‪.‬‬
‫‪ 433‬فصل پنجم‬

‫‪ .3‬متغیر ‪ result‬را از نوع ‪ int‬تعریف کرده‪ ،‬نمونه ‪ delegate‬ایجادشده ‪ m‬را بوا دو پوارامتر ‪ 9‬و ‪ 5‬فراخووانی‬
‫میکند‪ .‬اون‪ ،‬در ‪ m‬آدرس ‪ Add‬قرار دارد‪ .‬سپس‪ 9 ،‬با ‪ 5‬جمع میشود (‪ )24‬نتیجه در ‪ result‬قرار میگیرد‪.‬‬
‫‪ .4‬به ‪ m‬آدرس متد ‪ Sub‬مربو نمونه ‪ p‬را در آن قرار میدهد و نمونه ‪ m‬را با پارامترهای ‪ 51‬و ‪ 21‬فراخوانی‬
‫کرده‪ ،‬نتیجه را در ‪ result1‬قرار میدهد (اون‪ ،‬آدرس متد ‪ Sub‬در نمونه ‪ m‬قرار دارد‪ .‬پس ‪ 51‬منها ‪( 21‬یعنی‪،‬‬
‫‪ )41‬در ‪ result1‬قرار میگیرد‪.‬‬
‫‪ .5‬نمونوه ‪ m2‬را از نوووع ‪ SecondDelegate‬ایجواد موویکنوود و آدرس متود )(‪ Show‬نمونووه ‪ p‬را در آن قوورار‬
‫میدهد‪.‬‬
‫‪ .6‬نمونه ‪ m3‬را از نوع ‪ SecondDelegate‬ایجاد کورده‪ ،‬آدرس متود )(‪ Display‬از نمونوه ‪ p‬را در آن قورار‬
‫میدهد‪.‬‬
‫‪ .7‬آدرس متد موجود در نمونه ‪ m3‬را به لیست آدرس فراخوانیها نمونه ‪ m2‬اضافه مویکنود و در ‪ m2‬قورار‬
‫میدهد‪.‬‬
‫‪ .8‬از لیست فراخوانیهای نمونه ‪ ،m2‬آدرس موجود در نمونوه ‪ m3‬را حو) کورده‪ ،‬در ‪ m3‬قورار مویدهود‪.‬‬
‫بنابراین‪ m3 ،‬به آدرس ‪ Show‬اشاره خواهد کرد‪ .‬زیرا‪:‬‬
‫‪m2‬‬ ‫‪m‬‬ ‫‪m3‬‬

‫‪Show‬‬
‫‪Show‬‬ ‫)(‪Dispay‬‬
‫)(‪Dispay‬‬ ‫‪Show‬‬
‫‪Show‬‬
‫= ‪M3 = m2 – m‬‬
‫)(‪Dispay‬‬
‫)(‪Dispay‬‬

‫‪ .9‬نمونه ‪ m2‬احضار میشود‪ .‬پس متدهای آن از لیسوت متودهای فراخووانی (یعنوی‪ Show() ،‬و )(‪)Display‬‬
‫صدا زده میشود‪.‬‬
‫‪ .11‬نمونه )(‪ m3‬فراخوانی میگوردد‪ .‬یعنوی‪ Show() ،‬کوه آدرس آن در ‪ m3‬قورار دارد از طریوق ‪delegate‬‬
‫فراخوانی خواهد شد‪.‬‬
‫‪ .3‬پروژه را ذخیره و اجرا کنید تا خروجی زیر را مشاهده نمایید‪:‬‬

‫‪ .9‬برنامهای که کالس مربع را ییادهسازی میکند‪ .‬برای این منظور کالس ‪ Square‬را ایجاد مینماید‪ .‬متغیر‬
‫خصوصی ‪ side‬را در این کالس ایجاد میکند که توسط متدهای ‪ set‬و ‪ get‬بتوان به آن دسترسی یافت‪ .‬کالس باید‬
‫شامل دو متد سازنده باشد‪ .‬یکی از سازندهها آرگومان ندارد و متد سازنده دیگر مقدار ‪ side‬را باید بهعنوان آرگومان‬
‫بپذیرد‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬دستورات کالس ‪ Square‬را به پروژه اضافه کنید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p9‬‬
‫{‬
‫‪class Square‬‬
433 ‫ وراثت و چندریختی‬،‫ کالسها‬:‫برنامهنویسی شیءگرا‬

{
private int side;
public int Side
{
get
{
return side;
}
set
{
side = (value > 0) ? value : 0;
}
}
public Square() { }
public Square(int side)
{
Side = side;
}
public int Area()
{
return side * side;
}
public int Perime()
{
return 4 * side;
}
}
}
:‫ بروید و دستورات آن را بهصورت زیر تغییر دهید‬Program ‫ به کالس‬.3
using System;
namespace p9
{
class Program
{
static void Main(string[] args)
{
Square s1 = new Square();
Console.WriteLine("Side is {0}\tArea is {1}\tPerime is
{2}", s1.Side, s1.Area().ToString(),
s1.Perime().ToString());
Console.Write("Enter side:");
Square s2= new Square(Convert.ToInt32(Console.ReadLine()));
Console.WriteLine("Side is {0}\tArea is {1}\tPerime is
{2}", s2.Side, s2.Area().ToString(),
s2.Perime().ToString());
Console.ReadKey();
}
}
}
:‫ پروژه را ذخیره و اجرا کنید تا خروجی زیر را ببینید‬.4
‫‪ 438‬فصل پنجم‬

‫‪ .11‬برنامهای که کالسی به نام ‪ SavingAccount‬ایجاد میکند‪ .‬این کالس از متغیر استاتیکی به نام‬
‫‪ annualInterestRate‬برای ذخیرهسازی نرخ سود همه حسابها استفاده میکند‪ .‬هر شیء از این کالس شامل متغیر‬
‫خصوصی به نام ‪ SavingBalance‬میباشد که مقدار یسانداز جاری سپرده را در خود نگه میدارد‪ .‬متدی به نام‬
‫)(‪ CalculateModifyInterest‬دارد که سود ماهانه را با فرمول زیر محاسبه مینماید‪:‬‬
‫‪(SavingBalance * annualInterestRate)/12‬‬
‫سپس سود را به ‪ SavingBalance‬اضافه مینماید‪ .‬کالس متد استاتیکی به نام ‪ ModifyInterestRate‬که به مقدار‬
‫فیلد ‪ annualInterestRate‬یک مقدار جدید تخصیص میدهد‪ .‬برنامهای که از این کالس استفاده میکناد‪ .‬در ایان‬
‫برنامه دو شیء به نامهای ‪ saver1‬و ‪ saver2‬ایجاد میکناد و باه هار یاک تاراز ‪ 522222‬دالر و ‪ 422222‬دالر نسابت‬
‫میدهد‪ .‬مقدار ‪ annualInterestRate‬را ‪ %3‬قرار میدهد و سپس ساود ماهاناه را حسااب مایکناد و تاراز را بارای‬
‫‪ saver1‬و ‪ saver2‬محاسبه کرده‪ ،‬نمای میدهد‪ .‬سپس مقدار ‪ annualInterestRate‬را ‪ %2‬قرار میدهد و ساود مااه‬
‫بعد را حساب می نماید و تراز جدید را برای هر یک از حسابها نشان مایدهاد (تاراز هماان فیلاد ‪savingBalance‬‬
‫است)‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی به نام ‪ SolveCh5_ 2‬ایجاد کنید‪.‬‬
‫‪ .2‬کالس ‪ SavingAccount‬را به پروژه اضافه کنید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p10‬‬
‫{‬
‫‪class SavingAccount‬‬
‫{‬
‫;‪private double savingBalance‬‬
‫;‪public static double annualInterestRate‬‬
‫‪public double SavingBalance‬‬
‫{‬
‫} ;‪get { return savingBalance‬‬
‫} ;‪set { savingBalance = (value > 0) ? value : 0‬‬
‫}‬
‫} { )(‪public SavingAccount‬‬
‫)‪public SavingAccount(double saving‬‬
‫{‬
‫;‪SavingBalance = saving‬‬
‫}‬
‫)(‪public double CalculateModifyInterest‬‬
‫{‬
‫;‪return SavingBalance * annualInterestRate / 12‬‬
‫}‬
‫)‪public static void ModifyInterestRate(double rate‬‬
‫{‬
‫;‪annualInterestRate = rate‬‬
‫}‬
‫}‬
‫}‬
‫‪ .3‬به کالس ‪ program‬بروید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p10‬‬
433 ‫ وراثت و چندریختی‬،‫ کالسها‬:‫برنامهنویسی شیءگرا‬

{
class Program
{
static void Main(string[] args)
{
SavingAccount Saver1 = new SavingAccount(200000);
SavingAccount Saver2 = new SavingAccount(300000);
SavingAccount.ModifyInterestRate(0.04);
Saver1.SavingBalance += Saver1.CalculateModifyInterest();
Saver2.SavingBalance += Saver2.CalculateModifyInterest();
Console.WriteLine("Saving Balance1:{0}\t\tSaving
Balance2:{1}", Saver1.SavingBalance,
Saver2.SavingBalance);
SavingAccount.ModifyInterestRate(0.05);
Saver1.SavingBalance += Saver1.CalculateModifyInterest();
Saver2.SavingBalance += Saver2.CalculateModifyInterest();
Console.WriteLine("Saving Balance1:{0}\t\tSaving
Balance2:{1}", Saver1.SavingBalance,
Saver2.SavingBalance);
Console.ReadKey();
}
}
}
:‫ پروژه را ذخیره و اجرا کنید تا خروجی زیر را مشاهده نمایید‬.4

IsPrime() ‫ متد‬.‫ دارد‬LeastComFactor() ‫ و‬IsPrime() ‫ که دو متد به نامهای‬ChkNum ‫ کالسی به نام‬.11


‫ دو یارامتر به‬، LeastComFactor() ‫ تعیین میکند اول است یا خیر و متد‬،‫ را دریافت کرده‬x ‫یارامتری به نام‬
‫ را دریافت میکند و کوچکترین فاکتور مشترک بین آنها را برمیگرداند (کوچکترین فاکتور‬b ‫ و‬a ‫نامهای‬
.)‫ بخ یذیر باشد‬b ‫ و‬a ‫ کوچکترین عدد اولی است که به هر دو یارامتر‬،‫مشترک‬
‫مراحل طراحی و اجرا‬
.‫ پروژه جدیدی به نام ایجاد کنید‬.1
:‫ را به پروژه اضافه کنید و دستورات آن را بهصورت زیر تغییر دهید‬ChkNum ‫ کالس‬.2
using System;
namespace p11
{
class ChkNum
{
// Return true if x is prime.
public bool IsPrime(int x)
{
if (x <= 1) return false;
for (int i = 2; i <= x / i; i++)
if ((x % i) == 0) return false;
return true;
}
// Return the least common factor.
public int LeastComFactor(int a, int b)
{
int min = 0, i;
‫‪ 333‬فصل پنجم‬

‫;‪if (IsPrime(a) || IsPrime(b)) return 1‬‬


‫;‪min = a < b ? a : b‬‬
‫)‪for (i = 2; i <= min / 2; i++‬‬
‫;‪if (((a % i) == 0) && ((b % i) == 0)) break‬‬
‫;‪return i‬‬
‫}‬
‫}‬
‫}‬
‫این کالس دو متد زیر را دارد‪:‬‬
‫متد )(‪ ،IsPrime‬پارامتر ‪ x‬را دریافت کرده‪ ،‬تعیین مویکنود ‪ x‬اول اسوت یوا خیور‪ ،‬اگور ‪ x‬اول باشود‪،true ،‬‬
‫وگرنه ‪ false‬را برمیگرداند‪.‬‬
‫متد )(‪ ،LeastComFactor‬دو پارامتر ‪ a‬و ‪ b‬را دریافت کرده کواکترین فاکتور مشترک بوین دو پوارامتر‬
‫را برمیگرداند‪ .‬اگر یکی از دو پارامتر اول باشند‪ 2 ،‬را برمیگرداند (یعنی‪ ،‬کواکترین فاکتور مشترک یک‬
‫است)‪.‬در غیر این صورت عدد را تا نصف عدد بزرگتر تقسیم میکند‪ ،‬عددی که بر هر دو عدد بخوشپو)یر‬
‫باشد‪ ،‬کواکترین فاکتور مشترک بین دو عدد است‪.‬‬
‫‪ .3‬به کالس ‪ Program‬بروید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p11‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)(‪ChkNum ob = new ChkNum‬‬
‫;‪int a, b‬‬
‫)‪for (int i = 2; i < 10; i++‬‬
‫))‪if (ob.IsPrime(i‬‬
‫;)"‪Console.WriteLine(i + " is prime.‬‬
‫‪else‬‬
‫;)"‪Console.WriteLine(i + " is not prime.‬‬
‫;‪a = 7‬‬
‫;‪b = 8‬‬
‫‪Console.WriteLine("Least common factor for " +‬‬
‫;))‪a + " and " + b + " is " + ob.LeastComFactor(a, b‬‬
‫;‪a = 100‬‬
‫;‪b = 8‬‬
‫‪Console.WriteLine("Least common factor for " +‬‬
‫;))‪a +" and " + b + " is " + ob.LeastComFactor(a, b‬‬
‫;‪a = 100‬‬
‫;‪b = 75‬‬
‫‪Console.WriteLine("Least common factor for " +‬‬
‫;))‪a + " and " + b + " is " + ob.LeastComFactor(a, b‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫این دستورات ابتدا‪ ،‬شیای به نام ‪ ob‬از نوع کالس ‪ ChkNum‬ایجواد مویکنود و سوپس بوا فراخووانی متود‬
‫)(‪ IsPrime‬بر روی شیء ‪ ،ob‬برای اعداد ‪ 2‬تا ‪ 9‬اعداد اول و غیر اول بین ‪ 2‬تا ‪ 9‬را مشوخص مویکنود‪ .‬در اداموه‬
‫‪333‬‬ ‫برنامهنویسی شیءگرا‪ :‬کالسها‪ ،‬وراثت و چندریختی‬

‫کواکترین فاکتور مشترک بین اعداد ‪ 0‬و ‪ 8‬را با فراخوانی متد )(‪ LeastComFactor‬پیداکرده نموایش موی‪-‬‬
‫دهد و کواکترین فاکتور مشترک بین اعداد ‪ 2‬و ‪ 8‬را نمایش میدهد‪ .‬در پایان کواکترین فاکتور مشترک‬
‫بین اعداد ‪ 211‬و ‪ 05‬را پیداکرده نمایش میدهد‪.‬‬
‫‪ .4‬پروژه را ذخیره و اجرا کنید تا خروجی زیر را مشاهده نمایید‪:‬‬

‫‪ .12‬اگر طول دو ضلع (‪ C‬و ‪ )B‬از مثلث و زاویه بین این دو ضلع ‪ Alpha‬باشد‪ .‬میتوان طول ضلع سوم را با فرمول‬
‫زیر حساب کرد‪:‬‬
‫)‪A2 = B2 + C2 – 2 * B * C * Cos(Alpha‬‬
‫کالسی که ‪ C ،B‬و ‪ Alpha‬را دریافت میکند‪ .‬طول ضلع سوم (‪ )A‬را با متدهای مساحت و محیط را حساب کرده‪،‬‬
‫نمای میدهد‪ .‬مساحت و محیط مثلث بهصورت زیر حساب میشوند‪.‬‬
‫)‪ = (a + b + c‬محیط‬ ‫‪( / 2‬محیط)= ‪p‬‬ ‫) ‪ = p ( p  a )( p  b )( p  c‬مساحت‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬کالس ‪ Traingle‬را به پروژه اضافه کنید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p12‬‬
‫{‬
‫‪class Traingle‬‬
‫{‬
‫;‪private double b‬‬
‫;‪private double c‬‬
‫;‪private double alpha‬‬
‫‪public double B‬‬
‫{‬
‫} ;‪get { return b‬‬
‫} ;‪set { b = (value > 0) ? value : 0‬‬
‫}‬
‫‪public double C‬‬
‫{‬
‫} ;‪get { return c‬‬
‫} ;‪set { c = (value > 0) ? value : 0‬‬
‫}‬
‫‪public double Alpha‬‬
‫{‬
‫} ;‪get { return alpha‬‬
‫} ;‪set { alpha=(value>0 && value < 180) ? value : 0‬‬
‫}‬
‫)‪public Traingle(double b, double c, double alpha‬‬
‫{‬
‫;‪B = b; C = c; Alpha = alpha‬‬
‫‪ 333‬فصل پنجم‬

‫}‬
‫)(‪double Radian‬‬
‫{‬
‫;‪return alpha * 200 / 180‬‬
‫}‬
‫)(‪double CalculateA‬‬
‫{‬
‫– )‪return Math.Sqrt(Math.Pow(b, 2) + Math.Pow(c, 2‬‬
‫;)))(‪2 * b * c * Math.Cos(Radian‬‬
‫}‬
‫)(‪public double Perime‬‬
‫{‬
‫;))(‪return (B + C + CalculateA‬‬
‫}‬
‫)(‪public double Area‬‬
‫{‬
‫;‪double p = Perime() / 2‬‬
‫;)))‪return (Math.Sqrt(p*(p-CalculateA())*(p-b)*(p-c‬‬
‫}‬

‫}‬
‫}‬
‫این کالس از اعضای زیر تشکیلشده است‪:‬‬
‫اعضای دادهای ‪ c ،b‬و ‪ ،alpha‬برای نگهداری اضالع ‪ c ،b‬و زاویه ‪ alpha‬به کار میروند‪.‬‬
‫خواص ‪ C ،B‬و ‪ ،Alpha‬برای بازیابی و مقداردهی به فیلدهای ‪ b ،a‬و ‪ alpha‬به کار میروند‪ .‬فیلدهای ‪ a‬و ‪b‬‬
‫باید بزرگتر از صفر باشند که این عمل در متد ‪ set‬بررسی گردید و زاویه ‪ alpha‬میتواند بوین صوفر توا ‪281‬‬
‫درجه باشد که این عمل نیز در متد ‪ set‬خاصیت ‪ Alpha‬انجام شد‪.‬‬
‫سازنده )(‪ ،Traingle‬سه مقدار را بهعنوان پارامتر دریافت کورده‪ ،‬در خوواص ‪ c ،b‬و ‪ alpha‬را از درجوه بوه‬
‫رادیان تبدیل میکند‪ .‬این متد از نوع ‪ private‬است‪ ،‬اون بیرون از کالس به این متد نیاز نداریم‪.‬‬
‫متد )(‪ ،Radian‬زاویه ‪ alpha‬را از درجه به رادیان تبدیل مویکنود‪ .‬ایون متود از نووع ‪ private‬اسوت‪ ،‬اوون‬
‫بیرون از کالس به این متد نیاز نداریم‪.‬‬
‫متد )(‪ ،CalculateA‬مقدار ضلع ‪ A‬را با توجه به فرمول بیانشده محاسبه میکند و برمیگرداند‪ .‬این متد نیز‬
‫از نوع ‪ Private‬است‪.‬‬
‫متد )(‪ ،perime‬برای محاسبه محیط مثلث به کار میرود‪ .‬اون بیرون از کالس این متد فراخوانی میشوود‪،‬‬
‫از نوع ‪ public‬در نظر گرفتهشده است‪.‬‬
‫متد )(‪ ،Area‬جهت محاسبه مساحت مثلث به کار میرود و از نوع ‪ public‬است‪.‬‬
‫‪ .3‬به کالس ‪ Program‬بروید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p12‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter b:‬‬
334 ‫ وراثت و چندریختی‬،‫ کالسها‬:‫برنامهنویسی شیءگرا‬

double b = Convert.ToDouble(Console.ReadLine());
Console.Write("Enter c:");
double c = Convert.ToDouble(Console.ReadLine());
Console.Write("Enter alpha:");
double alpha = Convert.ToDouble(Console.ReadLine());
Traingle t = new Traingle(b, c, alpha);
Console.WriteLine("Perime is {0}\tArea is {1}",
t.Perime(), t.Area());
Console.ReadLine();
}
}
}
‫ را‬t ‫ سوپس نمونوه‬،‫ را از کاربر دریافت کرده‬alpha ‫ و‬c ،b ‫مقادیر‬ ‫ ابتدا با پیغامهای مناس‬،Main() ‫در متد‬
‫ را بور روی‬Area() ‫ و‬Perime() ‫ با مقادیر دریافت شده ایجاد کرده است و در پایان متودهای‬Traingle ‫از نوع‬
.‫ اجرا نموده تا محیط و مساحت مثلث را نمایش دهید‬t ‫نمونه‬
:‫ مقادیر درخواست شده را وارد نمایید تا خروجی مانند شکل زیر ببینید‬.‫ پروژه را ذخیره و اجرا کنید‬.4

‫ آخر و کلیه حروف رشته را به حروف بزرگ‬،‫ حرف اول‬،‫ و متدهای متعدد‬Delegate ‫ برنامهای که با استفاده از‬.13
.‫تبدیل میکند‬
‫مراحل طراحی و اجرا‬
.‫ پروژه جدیدی ایجاد کنید‬.1
:‫ را بهصورت زیر تغییر دهید‬Program ‫ دستورات کالس‬.2
using System;
namespace p13
{
class Program
{
delegate string UppercaseDelegate(string input);
/// Delegate implementation 1.
static string UppercaseFirst(string input)
{
char[] buffer = input.ToCharArray();
buffer[0] = char.ToUpper(buffer[0]);
return new string(buffer);
}
/// Delegate implementation 2.
static string UppercaseLast(string input)
{
char[] buffer = input.ToCharArray();
buffer[buffer.Length - 1]= char.ToUpper
(buffer[buffer.Length - 1]);
return new string(buffer);
}
/// Delegate implementation 3.
static string UppercaseAll(string input)
{
return input.ToUpper();
‫‪ 333‬فصل پنجم‬

‫}‬
‫‪/// Receives delegate type.‬‬
‫)‪static void WriteOutput(string input,UppercaseDelegate del‬‬
‫{‬
‫;)‪Console.WriteLine("Your string before: {0}", input‬‬
‫;))‪Console.WriteLine("Your string after: {0}", del(input‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫‪WriteOutput("csharp delegate", new‬‬
‫;))‪UppercaseDelegate(UppercaseFirst‬‬
‫‪WriteOutput("csharp delegate", new‬‬
‫;))‪UppercaseDelegate(UppercaseLast‬‬
‫‪WriteOutput("csharp delegate", new‬‬
‫;))‪UppercaseDelegate(UppercaseAll‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫این کالس دارای اعضای زیر میباشد‪:‬‬
‫عضو )(‪ ، UppercaseDelegate‬بهعنوان ‪delegate‬ای است که نوع آن رشتهای میباشد و یک پوارامتر نووع‬
‫رشتهای نیز دارد‪ .‬یعنی‪ ،‬متدی که برای این ‪ delegate‬ارسال میشود تا یک پارامتر نوع رشتهای داشته باشود و‬
‫یک مقدار رشتهای را برگرداند‪.‬‬
‫متد )(‪ ،UppercaseFirst‬متدی از نوع رشتهای و ‪ static‬است که یک رشوته را بوهعنووان پوارامتر دریافوت‬
‫کرده‪ ،‬اولین کاراکتر آن را به حر بزرگ تبدیل میکند و برمیگرداند‪.‬‬
‫متد )(‪ ،UppercaseLast‬متدی از نوع رشتهای و ‪ static‬است که پوارامتر از نووع رشوته را دریافوت کورده‪،‬‬
‫آخرین کاراکتر آن را به حر بزرگ تبدیل میکند و برمیگرداند‪.‬‬
‫متد )(‪ ،UppercaseAll‬متدی از نوع رشته و ‪ static‬است که پارامتری از نوع رشته را دریافت کورده‪ ،‬تموام‬
‫حرو کواک آن را به حرو بزرگ تبدیل میکند‪.‬‬
‫متااد )(‪ ،WriteOutput‬دو پووارامتر یکووی از نوووع رشووته (‪ )input‬و دیگووری از نوووع ‪UppercaseDelegate‬‬
‫(‪ )del‬را بهعنوان پارامتر دریافت کرده‪ ،‬رشته موردنظر و متدی که آدرس آن در ‪ del‬قرار دارد را اجرا کورده‪،‬‬
‫نتیجه را ااپ میکند‪.‬‬
‫متد )(‪ ،Main‬متد )(‪ WriteOutput‬را سه بار فراخوانی میکند‪ .‬اولین بار‪ ،‬در پارامتر دوم‪ ،‬نمونه جدیدی از‬
‫‪ delegate‬ایجاد کرد‪ ،‬آدرس متد )(‪ UppercaseFirst‬را برای آن ارسال میکند‪ .‬دوموین بوار نیوز یوک نمونوه‬
‫جدید از ‪ delegate‬ایجاد کرده‪ ،‬آدرس متد )(‪ UppercaseLast‬را در آن قرار میدهد و سومین مرتبه‪ ،‬نمونوه‬
‫جدید دیگری از نوع ‪ delegate‬ایجاد مینماید و آدرس متد )(‪ UppercaseAll‬را برای آن میفرستد‪.‬‬
‫‪ .3‬پروژه را ذخیره و اجرا کنید‪.‬‬
333 ‫ وراثت و چندریختی‬،‫ کالسها‬:‫برنامهنویسی شیءگرا‬

‫میدهد (روش‬ ‫ و نزولی مرتب مینماید و نمای‬،‫ به روش صعودی‬،‫ عدد) را خوانده‬3( ‫ برنامهای که تعدادی‬.14
.)‫ دریافت میکند‬delegate ‫مرتبسازی را بهعنوان یک یارامتر از نوع‬
‫مراحل طراحی و اجرا‬
.‫ پروژه جدیدی ایجاد کنید‬.1
:‫ بروید و دستورات آن را بهصورت زیر تغییر دهید‬Program ‫ به کالس‬.2
using System;
namespace SolveCh5_6 {
class Program {
public delegate bool ComparisonType(int first, int second);
public static void BubbleSort(int[] arrs, ComparisonType
comparisonMethod) {
for (int i = arrs.Length - 1; i >= 0; i--)
for (int j = 1; j <= i; j++)
if (comparisonMethod(arrs[j - 1], arrs[j])) {
int temp = arrs[j - 1];
arrs[ 1] = arrs[j];
arrs[j] = temp;
}
}
public static bool GreaterThan(int first, int second) {
return first > second;
}
public static bool LessThan(int first, int second) {
return first < second;
}
public static void readArray(int[] arrs) {
Console.WriteLine("Enter {0} numbers:", arrs.Length);
for (int i = 0; i < arrs.Length; i++)
arrs[i] = int.Parse(Console.ReadLine());
}
public static void printArray(int[] arrs) {
for (int i = 0; i < arrs.Length; i++)
Console.Write("{0}\t", arrs[i]);
}
static void Main(string[] args) {
int[] arrs = new int[4];
readArray(arrs);
ComparisonType comparisonMethod = GreaterThan;
BubbleSort(arrs, comparisonMethod);
Console.Write("After ascending sort:");
printArray(arrs);
comparisonMethod = LessThan;
BubbleSort(arrs, comparisonMethod);
Console.Write("\nAfter descending sort:");
printArray(arrs);
Console.ReadKey();
}
}
‫‪ 333‬فصل پنجم‬

‫}‬
‫این کالس دارای اعضای زیر است‪:‬‬
‫عضو )(‪ ،ComparsionType‬یک ‪ delegate‬است که دو داده از نوع ‪ int‬را بهعنوان پارامتر دریافت کورده‪،‬‬
‫‪ true‬یا ‪ false‬را برمویگردانود‪ .‬اگور متود )(‪ GreaterThan‬بورای ایون ‪ delegate‬ارسوال گوردد و پوارامتر اول‬
‫بزرگتر از پارامتر دوم باشد‪ ،‬این متد ‪ true‬را برمیگرداند‪ .‬اما‪ ،‬اگر متد )(‪ LessThan‬برای ‪ delegate‬فرستاده‬
‫شود و پارامتر اول کواکتر از پارامتر دوم باشد‪ ،‬متد ‪ ،true‬وگرنه ‪ false‬را برمیگرداند‪.‬‬
‫متااااد )(‪ ،BubbleSort‬آرایووووه ‪ arrs‬و ‪ comparisionMethod‬از نوووووع ‪( ComparisionType‬از نوووووع‬
‫‪ )delegate‬را دریافت کرده‪ ،‬عناصر آرایه را به روش حبابی مرت میکند‪ .‬مرت سازی با روش حبابی را قوبالً‬
‫دیدید‪.‬‬
‫متد ‪ ،GreaterThan‬دو پارامتر عددی به نامهای ‪ first‬و ‪ second‬را دریافت کرده‪ ،‬اگر عدد اول بزرگتور‬
‫از عدد دوم باشد‪ ،true ،‬وگرنه ‪ false‬را برمیگرداند‪.‬‬
‫متد )(‪ ،LessThan‬دو پارامتر عددی به نام ‪ first‬و ‪ second‬را دریافت کرده‪ ،‬اگر عودد اول کواوکتور از‬
‫عدد دوم باشد‪ ،true ،‬وگرنه ‪ false‬را برمیگرداند‪.‬‬
‫متد )(‪ ،readArray‬آرایه ‪ arrs‬را بهعنووان پوارامتر دریافوت کورده‪ ،‬تعودادی عودد را خوانوده در آن قورار‬
‫میدهد‪.‬‬
‫متد )(‪ ،PrintArray‬آرایه ‪ arrs‬را بهعنوان پارامتر دریافت کرده‪ ،‬عناصر آن را نمایش میدهد‪.‬‬
‫متد )(‪ ،Main‬ابتدا آرایهای به نام ‪ arrs‬با ‪ 4‬عنصر تعریف میکنود‪ .‬سوپس بوا فراخووانی متود )(‪readArray‬‬
‫تعوودادی عوودد را از ورودی خوانووده در آرایووه قوورار موویدهوود‪ .‬بعوود از خوانوودن اعووداد‪ ،‬متغیووری از نوووع‬
‫‪ ComparisonType‬به نام ‪ comparisonMethod‬تعریف کرده آدرس متود )(‪ GreaterThan‬را در آن قورار‬
‫میدهد‪ .‬اکنون با فراخوانی متد )(‪ BubbleSort‬بهصوورت زیور‪ ،‬عناصور آرایوه را بوهصوورت صوعودی مرتو‬
‫میکند‪:‬‬
‫;)‪BubbleSort (arrs, compraisonMethod‬‬
‫با یک پیغام مناس عناصر آرایهای که بهصورت صعودی مرت شدهاند را نمایش میدهد‪ .‬در پایان‪ ،‬آدرس‬
‫متوود )(‪ LessThan‬در متغیوور ‪ comparisonMethod‬از نوووع ‪ delegate‬قوورار موویگیوورد و بووا فراخوووانی متوود‬
‫)(‪ BubbleSort‬بهصورت زیر عناصر آرایه را بهصورت نزولی مرت میکند‪.‬‬
‫;)‪BubbleSort(arrs, comparisionMethod‬‬
‫اکنون عناصر آرایه را با یک پیغام مناس نمایش میدهد‪.‬‬
‫‪ .3‬پروژه را ذخیره و اجرا کنید‪ 4 .‬عدد نامرت وارد نمایید تا خروجی را به شکل زیر ببینید‪:‬‬

‫میدهد‪.‬‬ ‫‪ .15‬برنامهای که نقطه شروع و یایان خطی را دریافت میکند‪ ،‬طول خط را محاسبه کرده‪ ،‬نمای‬
‫مراحل طراحی و اجرا‬
‫‪333‬‬ ‫برنامهنویسی شیءگرا‪ :‬کالسها‪ ،‬وراثت و چندریختی‬

‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬


‫‪ .2‬کالس ‪ Point‬را به پروژه اضافه کرده و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p15‬‬
‫{‬
‫‪class Point‬‬
‫{‬
‫;‪private double x‬‬
‫;‪private double y‬‬
‫‪public double X‬‬
‫{‬
‫‪get‬‬
‫{‬
‫;‪return x‬‬
‫}‬
‫‪set‬‬
‫{‬
‫;‪x = (value > 0) ? value : 0‬‬
‫}‬
‫}‬
‫‪public double Y‬‬
‫{‬
‫‪get‬‬
‫{‬
‫;‪return y‬‬
‫}‬
‫‪set‬‬
‫{‬
‫;‪y = (value > 0f) ? value : 0f‬‬
‫}‬
‫}‬
‫} { )(‪public Point‬‬
‫}‬
‫}‬
‫کالس ‪ ،Point‬اطالعات نقطهای را نگهداری میکند‪ .‬این کالس دارای اعضای زیر است‪:‬‬
‫فیلدهای ‪ x‬و‪ y‬مختصات نقطه را نگهداری میکنند‪.‬‬
‫خواص ‪ X‬و‪ Y‬برای بازیابی و مقداردهی به فیلدهای ‪ x‬و‪ y‬به کار میروند‪.‬‬
‫‪ .5‬کالس ‪ Line‬را به پروژه اضافه کرده و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p15‬‬
‫{‬
‫‪class Line‬‬
‫{‬

‫;)(‪public Point starting = new Point‬‬


‫;)(‪public Point ending = new Point‬‬
‫;‪public double len‬‬
‫}‬
‫}‬
‫کالس ‪ ،Line‬اطالعات خط را نگهداری میکند‪ .‬این کالس فیلدهای زیر را دارد‪:‬‬
‫ فصل پنجم‬338

‫ نقطه شروع و پایان خط را نگهداری میکنند که از نوع کالس‬،ending ،starting ‫فیلدهای‬


.‫ طول خط را نگهداری میکند‬len ‫ هستند و‬Point
:‫ بروید و دستورات آن را بهصورت زیر تغییر دهید‬Program ‫ به کالس‬.3
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace p15
{
class Program
{
static void Main(string[] args)
{

Line myLine = new Line();


myLine.starting.X = 1;
myLine.starting.Y = 4;
myLine.ending.X = 10;
myLine.ending.Y = 11;
myLine.len = System.Math.Sqrt((myLine.ending.X –
myLine.starting.X) * (myLine.ending.X –
yLine.starting.X) +(myLine.ending.Y –
myLine.starting.Y) * (myLine.ending.Y –
myLine.starting.Y));
Console.WriteLine("Point1: ({0},{1})",
myLine.starting.X, myLine.starting.Y);
Console.WriteLine("Point2: ({0},{1})",
myLine.ending.X, myLine.ending.Y);
Console.WriteLine("Line Length: {0}", myLine.len);
Console.ReadLine();
}
}
}
‫ ایجاد‬myLine ‫ به نام‬Line ‫ در این متد نمونهای از کالس‬.‫ دارد‬Main() ‫ متدی به نام‬،Program ‫کالس‬
.‫ مقدار تخصیص مییابد‬myLine ‫ نمونه‬ending ‫ و‬starting ‫ به فیلدهای‬Y‫ و‬X ‫ از طریق خواص‬.‫میشود‬
‫ پایان و طول خط نمایش داده‬،‫ قرار میگیرد و نقطه شروع‬len ‫ در فیلد‬،‫سپس طول خط حسابشده‬
.‫میشود‬
:‫وارد نمایید تا خروجی را به شکل زیر ببینید‬ ‫ عدد نامرت‬4 .‫ پروژه را ذخیره و اجرا کنید‬.4

‫میدهد(در این برنامه تعداد مربعها و اضالع‬ ‫ برنامهای که مجموع مساحتها و محیطهای چند مربع را نمای‬.61
.)‫آنها بهصورت تصادفی تولید میگردند‬
‫مراحل طراحی و اجرا‬
333 ‫ وراثت و چندریختی‬،‫ کالسها‬:‫برنامهنویسی شیءگرا‬

.‫ پروژه جدیدی ایجاد کنید‬.1


:‫ را به پروژه اضافه کرده و دستورات آن را بهصورت زیر تغییر دهید‬Square ‫ کالس‬.2
using System;
namespace p16
{
class Square
{
private int side;
public int Side
{
get { return side; }
set { side = (value > 0) ? value : 0; }
}
public Square() { }
public Square(int side)
{
Side = side;
}
public int Area()
{
return side * side;
}
public int Perime()
{
return 4 * side;
}
public override string ToString()
{
return "Side = "+Side.ToString()+"\tArea = "+
Area().ToString()+"\tPerimeter = "+Perime().ToString();
}
}
}
:‫ اعضای زیر را دارد‬،Square ‫کالس‬
.‫ ضلع مربع را نگهداری میکند‬،side ‫فیلد‬
.‫ به کار میرود‬side ‫ برای بازیابی و مقداردهی فیلد‬،Side ‫خاصیت‬
.‫ مقدار اولیه میدهد‬Side ‫ از طریق خاصیت‬Side ‫ به فیلد‬،Square() ‫سازنده‬
.‫ مساحت مربع را محاسبه مینماید‬،Area() ‫متد‬
.‫ محیط مربع را محاسبه میکند‬،Perime() ‫متد‬
.‫ محیط و مساحت را با پیغام مناس برمیگرداند‬،‫ ضلع مربع‬،ToString() ‫متد‬
:‫ بروید و دستورات آن را بهصورت زیر تغییر دهید‬Program ‫ به کالس‬.3
using System;
namespace p16
{
class Program
{
static void Main(string[] args)
{
Random r = new Random();
‫‪ 333‬فصل پنجم‬

‫;)‪int n = r.Next(4, 10‬‬


‫;]‪Square[] s = new Square[n‬‬
‫;‪int totalPerime = 0‬‬
‫;‪int totalArea = 0‬‬
‫)‪for (int i = 0; i < n; i++‬‬
‫{‬
‫;)(‪s[i] = new Square‬‬
‫;)‪s[i].Side = r.Next(100‬‬
‫;)(‪totalArea += s[i].Area‬‬
‫;)(‪totalPerime += s[i].Perime‬‬
‫;))(‪Console.WriteLine(s[i].ToString‬‬
‫}‬
‫‪Console.WriteLine("Total Area = {0}\tTotal‬‬
‫;)‪Perimeter = {1}", totalArea, totalPerime‬‬
‫;)(‪Console.ReadLine‬‬
‫}‬
‫}‬
‫}‬
‫‪ ، Program‬متدی به نام )(‪ Main‬دارد‪ .‬این متد‪ ،‬یک نمونه به نام ‪ r‬از نوع ‪ Random‬ایجاد میکند‪،‬‬ ‫کالس‬
‫یک عدد تصادفی تولید کرده‪ ،‬در ‪ n‬قرار میدهد‪ ،‬بوه تعوداد عودد تصوادفی تولیدشوده(یعنی‪ ،)n،‬نمونوه از‬
‫کالس ‪ Square‬ایجاد مویکند(آرایوهای از ‪ Square‬بوه نوام ‪ s‬ایجواد مویکنود‪ ،‬متغیرهوای ‪ totalPerime‬و‬
‫‪ totalArea‬را تعریف کرده‪ ،‬مقدار اولیه صفر را در آنهوا قورار مویدهود در حلقوه تکورار‪ ،‬یوک نمونوه از‬
‫‪ Square‬ایجاد میکند‪ ،‬به عنصر آرایه )]‪ (S[i‬تخصیص میدهد‪ ،‬محیط و مساحت نمونه را محاسبه میکند‬
‫و با متغیرهای ‪ totalPerime ،totalArea‬جمع میکند‪ .‬با فراخوانی متد )(‪ ،ToString‬ضلع مربع‪ ،‬محویط و‬
‫مساحت آن را نمایش میدهد‪ .‬در پایان‪ ،‬مجموع مساحتها و محیطها را نمایش خواهد داد‪.‬‬
‫‪ .5‬پروژه را ذخیره و اجرا کنید و خروجی را به شکل زیر ببینید‪:‬‬

‫‪ .61‬برنامهای که استفاده از ‪ delegate‬را نشان میدهد‪.‬‬


‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬کالس ‪ SimpleMath‬را به پروژه اضافه کرده و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p17‬‬
‫{‬
‫‪class SimpleMath‬‬
‫{‬
‫)‪public int Add(int x, int y‬‬
‫{‬
‫;‪return x + y‬‬
‫}‬
‫)‪public int Subtract(int x, int y‬‬
333 ‫ وراثت و چندریختی‬،‫ کالسها‬:‫برنامهنویسی شیءگرا‬

{
return x - y;
}
public int Mul(int x, int y)
{
return x * y;
}
public int Div(int x, int y)
{
return x / y;
}
public int Mod(int x, int y)
{
return x % y;
}
}
}
‫ را دارد که دو پارامتر را‬Mod() ‫ و‬Div() ،Mul() ،Add() ،Subtract() ‫ متدهای‬،SimpleMath ‫کالس‬
‫ حاصل تقسیم و حاصل باقیمانده تقسیم‬،‫ حاصلضرب‬،‫ مجموع‬،‫دریافت میکنند که به ترتی حاصل تفریق‬
.‫صحیح آنها را برمیگردانند‬
:‫ بروید و دستورات آن را بهصورت زیر تغییر دهید‬Program ‫ به کالس‬.3
using System;
namespace p17
{
class Program
{
public delegate int BinaryMath(int x, int y);
static void DisplayDelegateInfo(Delegate delObj)
{
foreach (Delegate d in delObj.GetInvocationList())
{
Console.WriteLine("Method Name: {0}", d.Method);
Console.WriteLine("Target Name: {0}", d.Target);
}
}
static void Main(string[] args)
{
Console.WriteLine("***** A Simple Delegate Use
*****\n");
// Create a BinaryOp object that points to
SimpleMath.Add()
SimpleMath m = new SimpleMath();
BinaryMath b = new BinaryMath(m.Add);
//Display information about this object.
DisplayDelegateInfo(b);
// Invoke Add() method using delegate.
Console.WriteLine("\n15 + 30 is {0}", b(15, 30));
b = m.Subtract;
DisplayDelegateInfo(b);
// Invoke Add() method using delegate.
Console.WriteLine("\n15 - 30 is {0}", b(15, 30));
b = m.Mul;
DisplayDelegateInfo(b);
‫‪ 333‬فصل پنجم‬

‫‪// Invoke Add() method using‬‬ ‫‪delegate.‬‬


‫‪Console.WriteLine("\n15 * 30‬‬ ‫;))‪is {0}", b(15, 30‬‬
‫;‪b = m.Div‬‬
‫;)‪DisplayDelegateInfo(b‬‬
‫‪// Invoke Add() method using‬‬ ‫‪delegate.‬‬
‫‪Console.WriteLine("\n15 / 30‬‬ ‫;))‪is {0}", b(15, 30‬‬
‫;‪b = m.Mod‬‬
‫;)‪DisplayDelegateInfo(b‬‬
‫‪// Invoke Add() method using‬‬ ‫‪delegate.‬‬
‫‪Console.WriteLine("\n15 % 30‬‬ ‫;))‪is {0}", b(15, 30‬‬
‫;)(‪Console.ReadLine‬‬
‫}‬
‫}‬
‫}‬
‫کالس ‪ ،Program‬یک ‪ delegate‬به نام ‪ BinaryMath‬را تعریف میکند که یوک متود بوا دو پوارامتر از‬
‫نوع ‪ int‬را میپ)یرد و نتیجه را بهصورت ‪ int‬برمیگرداند‪ .‬متد )(‪ DisplayDelegateInfo‬دارد که پارامتری به‬
‫نام ‪ delObj‬از نوع ‪ Delegate‬را دریافت کرده‪ ،‬اطالعات آن را برمیگرداند‪ .‬متد )(‪ ،Main‬پیغوامی را نموایش‬
‫داده‪ ،‬نمونهای به نام ‪ b‬از نوع ‪ (delegate) BinaryMath‬ایجاد مینماید‪ .‬در ادامه‪ ،‬از طریق نمونوه ‪ ،b‬متودهای‬
‫)(‪ Add() ،Subtract() ،Mul() ،Div‬و )(‪ Mod‬را فراخوانی میکند‪.‬‬
‫‪ .4‬پروژه را ذخیره و اجرا کنید و خروجی را به شکل زیر ببینید‪:‬‬

‫‪ .61‬برنامهای که اندازه یارچه را به یارد دریافت کرده‪ ،‬به متر تبدیل میکند(هر متر ‪ 1.196‬یارد است)‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬کالس ‪ Convert‬را به پروژه اضافه کرده و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p18‬‬
‫{‬
‫‪class Convert‬‬
‫{‬
‫;‪private double yards‬‬
‫‪public double Yards‬‬
‫{‬
‫‪334‬‬ ‫برنامهنویسی شیءگرا‪ :‬کالسها‪ ،‬وراثت و چندریختی‬

‫‪get‬‬
‫{‬
‫;‪return yards‬‬
‫}‬
‫‪set‬‬
‫{‬
‫;‪yards = (value > 0) ? value : 0‬‬
‫}‬
‫}‬
‫} { )(‪public Convert‬‬
‫} ;‪public Convert(int yards) { Yards = yards‬‬
‫)(‪public double ToMeters‬‬
‫{‬
‫;‪return Yards / 1.196‬‬
‫}‬
‫}‬
‫}‬
‫کالس ‪ ،Convert‬برای تبدیل اندازه پاراه از یارد به متر به کار میرود که دارای اعضای زیر است‪:‬‬
‫فیلد ‪ ، yards‬اندازه پاراه را به یارد نگهداری میکند‪ .‬خاصیت ‪ ،Yards‬برای بازیابی و مقداردهی فیلد‬
‫‪ yards‬استفاده میشود‪.‬‬
‫سازنده )(‪ ،Convert‬به فیلد ‪ yards‬از طریق خاصیت ‪ yards‬مقدار اولیه میدهد‪.‬‬
‫متد)(‪ ،toMeter‬اندازه پاراه را به متر تبدیل میکند‪.‬‬
‫‪ .3‬به کالس ‪ Program‬بروید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p18‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)(‪Convert c = new Convert‬‬
‫;)"‪Console.Write("Enter fabric size in yards:‬‬
‫;))(‪c.Yards = System.Convert.ToInt32(Console.ReadLine‬‬
‫‪Console.WriteLine("farbic size is :{0} meters",‬‬
‫;))(‪c.ToMeters‬‬
‫;)(‪Console.ReadLine‬‬
‫}‬
‫}‬
‫}‬
‫کالس ‪ ،Program‬دارای متد )(‪ Main‬است‪ .‬این متد‪ ،‬نمونهای به نام ‪ c‬از نوع ‪ Convert‬ایجاد کرده‪ ،‬اندازه‬
‫پاراه را به یارد دریافت میکند‪ ،‬با فراخوانی متد )(‪ toMeter‬آن را به متر تبدیل میکند و نمایش میدهد‪.‬‬
‫‪ .4‬پروژه را ذخیره و اجرا کنید و خروجی را به شکل زیر ببینید‪:‬‬
‫ فصل پنجم‬333

‫ محیط و مساحت‬.‫ محیط و مساحت مثلث را حساب میکند‬،‫ برنامه ای که قاعده و ارتفاع مثلثی را دریافت کرده‬.61
:‫مثلث بهصورت زیر محاسبه میگردد‬
‫ قاعده = محیط مثلث‬+ ‫ ارتفاع‬+ (‫ ) قاعده‬2  (‫ارتفاع‬ )2
‫ ارتفاع × قاعده = مساحت مثلث‬/ 5
‫مراحل طراحی و اجرا‬
.‫ پروژه جدیدی ایجاد کنید‬.1
:‫ را به پروژه اضافه کرده و دستورات آن را بهصورت زیر تغییر دهید‬Traingle ‫ کالس‬.2
using System;
namespace p19
{
class Traingle
{
int base1;
int height;
public int Base1
{
get
{
return base1;
}
set
{
base1 = (value > 0) ? value : 0;
}
}

public int Height


{
get
{
return height;
}
set
{
height = (value > 0) ? value : 0;
}
}
public Traingle() { }
public Traingle(int base1, int height)
{
Base1 = base1;
Height = height;
}
public double Area() { return base1 * height / 2; }
public double Perimeter()
{
return base1+height+Math.Sqrt(base1*base1+height*height);
}
}
}

:‫ نوع مثلث را پیادهسازی میکند که اعضای زیر را دارد‬،Traingle ‫کالس‬


‫‪333‬‬ ‫برنامهنویسی شیءگرا‪ :‬کالسها‪ ،‬وراثت و چندریختی‬

‫فیلدهای ‪ base1‬و ‪ ،height‬به ترتی قاعده و ارتفاع مثلث را نگهداری میکنند‪.‬‬


‫خواص‪ Base1‬و‪ ، Height‬برای بازیابی و مقداردهی به فیلدهای ‪ base1‬و‪ height‬استفاده میشوند‪.‬‬
‫سازنده )(‪ ،Traingle‬به فیلودهای ‪ base1‬و ‪ height‬از طریوق خوواص ‪ Base1‬و ‪ Height‬مقودار اولیوه‬
‫تخصیص میدهد‪ .‬متدهای )(‪ Area‬و )(‪ Perimeter‬به ترتی مساحت و محیط مثلث را حساب میکنند‪.‬‬
‫‪ .3‬به کالس ‪ Program‬بروید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p19‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)(‪Traingle t1 = new Traingle‬‬
‫;)"‪Console.Write("Enter base:‬‬
‫;))(‪t1.Base1 = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter height:‬‬
‫;))(‪t1.Height = int.Parse(Console.ReadLine‬‬
‫‪Console.WriteLine("Area = {0}\tPerimeter = {1}",‬‬
‫;))(‪t1.Area(), t1.Perimeter‬‬
‫;)(‪Console.ReadLine‬‬
‫}‬
‫}‬
‫}‬
‫کالس ‪ ،Program‬متدی به نام )(‪ Main‬دارد‪ .‬این متد‪ ،‬ابتودا نمونوهای بوه نوام ‪ t1‬از نووع کوالس ‪Triangle‬‬
‫از ورودی خوانوده‪ ،‬در خوواص ‪ Base1‬و‪Height‬‬ ‫ایجاد میکند‪ .‬قاعده و ارتفاع مثلث را با پیغامهوای مناسو‬
‫نمونه ‪ t1‬قرار میدهد‪ .‬در پایان با فراخوانی متدهای )(‪ Area‬و )(‪ Perimeter‬محیط و مساحت مثلث را نموایش‬
‫میدهد‪.‬‬
‫‪ .5‬پروژه را ذخیره و اجرا کنید و خروجی را به شکل زیر ببینید‪:‬‬

‫میدهد‪ .‬این‬ ‫‪ .52‬برنامهای که زمان را دریافت کرده و آن را بهصورت ‪( Am‬قبل از ظهر) یا ‪( Pm‬بعدازظهر) نمای‬
‫برنامه کالسهای زیر را دارد‪:‬‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬کالس ‪ Time‬را به پروژه اضافه کرده و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p20‬‬
‫{‬
‫‪class Time‬‬
‫{‬
‫;‪int houre‬‬
‫;‪int minute‬‬
‫ فصل پنجم‬333

int second;
public int Houre
{
get
{
return houre;
}
set
{
houre=(value >= 0 && value <= 23) ? value : 0;
}
}
public int Minute
{
get
{
return minute;
}
set
{
minute=(value >= 0 && value <= 59) ? value : 0;
}
}
public int Second
{
get
{
return second;
}
set
{
second=(value >= 0 && value <= 59) ? value : 0;
}
}
public Time(int h, int m, int s)
{
Houre = h;
Minute = m;
Second = s;
}
public override string ToString()
{
string shortTime = "";
if (Houre < 12)
shortTime = Houre.ToString() + ":" +
Minute.ToString()+":" + Second.ToString() + " Am";
else
shortTime = (Houre - 12).ToString() + ":" +
Minute.ToString()+":" + Second.ToString() + " Pm";
return shortTime;
}
}
}
:‫ اعضای زیر را دارد‬،Time ‫کالس‬
.‫ دقیقه و هانیه را نگهداری میکنند‬،‫مقادیر ساعت‬ ‫ به ترتی‬،second ‫ و‬minute ،hour ‫فیلدهای‬
‫‪333‬‬ ‫برنامهنویسی شیءگرا‪ :‬کالسها‪ ،‬وراثت و چندریختی‬

‫خواص ‪ Minute ،Houre‬و ‪ ،Second‬به ترتی مقدار فیلدهای ‪ minute ،hour‬و‪ second‬را بازیابی‬
‫میکنند و به این فیلدها مقدار میدهند(متد )(‪ set‬اک میکند تا زمان نادرست وارد نشود)‪.‬‬
‫سازنده )(‪ ،Time‬مقادیر ساعت )‪ ،(h‬دقیقه )‪ (m‬و هانیه )‪ (s‬را بهعنوان پارامتر دریافت کرده‪ ،‬از طریق‬
‫خواص‪ Minute ،Hour‬و ‪ Second‬به فیلدها مقدار اولیه میدهند‪.‬‬
‫متد )(‪ ،ToString‬زمان را به فرمتهای ‪ Am‬یا ‪ Pm‬تبدیل کرده‪ ،‬برمیگرداند‪.‬‬
‫‪ .3‬به کالس ‪ Program‬بروید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p20‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)‪Time t1 = new Time(17, 15, 26‬‬
‫;)‪Time t2 = new Time(10, 25, 46‬‬
‫;))(‪Console.WriteLine(t1.ToString‬‬
‫;))(‪Console.WriteLine(t2.ToString‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫کالس ‪ ، Program‬متد )(‪ Main‬این کوالس‪ ،‬دو نمونوه بوه نوامهوای ‪ t1‬و ‪ t2‬ایجواد کورده‪ ،‬بوا فراخووانی‬
‫)(‪ ToString‬بر روی این نمونه‪ ،‬آن را با فرمتهای ‪ Am‬یا‪ Pm‬نمایش میدهد‪.‬‬
‫‪ .5‬پروژه را ذخیره و اجرا کنید و خروجی را به شکل زیر ببینید‪:‬‬

‫‪ .56‬برنامه ای که شماره کارمندی‪ ،‬نام‪ ،‬تاریخ استخدام و حقوق ناخالص تعدادی کارمند را مقداردهی میکند‪،‬‬
‫مالیات‪ ،‬بیمه و حقوق خالص را محاسبه میکند‪ .‬در یایان مجموع حقوق خالص را نمای میدهد‪ .‬مالیات‪ ،‬بیمه و‬
‫حقوق خالص بهصورت زیر محاسبه میگردند‪.‬‬
‫‪ * 1 / 622‬حقوق ناخالص = بیمه‬
‫اگر حقوق بیشتر از ‪ 4851111‬ریال باشد‪ ،‬آنگاه مالیات برابر است با‬
‫‪ *62/ 622‬حقوق ناخالص = مالیات‬
‫وگرنه‪ ،‬مالیات صفر در نظر گرفته میشود‪.‬‬
‫بیمه – مالیات ‪ -‬حقوق ناخالص = حقوق خالص‬
‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬کالس ‪ Date‬را به پروژه اضافه کرده و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p21‬‬
‫{‬
‫‪class Date‬‬
‫{‬
‫ فصل پنجم‬338

int year;
int month;
int day;
public int Year
{
get
{
return year;
}
set
{
year = (value > 0) ? value : 0;
}
}
public int Month
{
get
{
return month;
}
set
{
month = (value >= 1 && value <= 12) ? value : 0;
}
}
public int Day
{
get
{
return day;
}
set
{
month = (value >= 1 && value <= 31) ? value : 0;
}
}
public Date() { }
public Date(int y, int m, int d)
{
Year = y;
Month = m;
Day = d;
}
}
}
:‫ اعضای زیر را دارد‬،Date ‫کالسهای‬
.‫ و روز را نگهداری میکند‬،‫ ماه‬،‫ سال‬،day ‫ و‬month ،year ‫فیلدهای‬
‫ یا به آنها‬،‫ را بازیابی کرده‬day‫ و‬month ،year ‫ مقدار فیلدهای‬،Day ‫ و‬Month ،Year ‫خواص‬
.‫مقدار میدهند‬
‫ از طریق خواص‬،‫( را بهعنوان پارامتر دریافت کرده‬D) ‫( و روز‬m) ‫ ماه‬،(y) ‫ سال‬،Date() ‫سازنده‬
.‫ تخصیص میدهد‬day ‫ و‬month ،year ‫ به فیلدهای‬Day ‫ و‬Month ،Year
333 ‫ وراثت و چندریختی‬،‫ کالسها‬:‫برنامهنویسی شیءگرا‬

:‫ را به پروژه اضافه کرده و دستورات آن را بهصورت زیر تغییر دهید‬Employee ‫ کالس‬.3


using System;
namespace p21
{
class Employee
{
private string code;
public string name;
Date empDate = new Date();
public long salary;
public string Code
{
get
{
return code;
}
set
{
code = value;
}
}
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public long Salary
{
get
{
return salary;
}
set
{
salary = (value > 0) ? value : 0;
}
}
public Employee(string c, string n, Date d, long s)
{
Code = c;
Name = n;
empDate = d;
Salary = s;
}
private long calInsurance()
{
return salary * 7 / 100;
}
private long calTax()
‫ فصل پنجم‬333

{
return(salary>4850000)?(salary-4850000)* 10/100:0;
}
public long calPayment()
{
return salary - calInsurance() - calTax();
}
public override string ToString()
{
string s = "Code:" + Code;
s += "\tName:" + Name;
s += "\tDate:" + empDate.Year.ToString() + "/" +
empDate.Month.ToString() + "/" + empDate.Day.ToString();
s += "\tSalary:" + Salary.ToString();
s += "\tpayment:" + calPayment().ToString();
return s;
}
}
}
:‫ اعضای زیر را دارد‬،Employee ‫کالس‬
‫ تاریخ استخدام‬،‫ نام‬،‫ به ترتی مقادیر شماره کارمندی‬،salary ‫ و‬empDate ،name ،code ‫فیلدهای‬
.‫ است‬date ‫ نمونهای از نوع کالس‬empDate ‫ البته دقت کنید که‬.‫و حقوق را نگهداری میکنند‬
name ،code ‫ به ترتی برای مقداردهی یا بازیابی مقدار فیلدهای‬،Salary‫ و‬Name ،Code‫خواص‬
.‫ به کار میروند‬Salary ‫و‬
‫ در فیلدهای‬،‫ اطالعات موردنیاز کارمند را از طریق پارامتر دریافت کرده‬،Employee() ‫سازنده‬
.‫ قرار میدهد‬Employee ‫کالس‬
‫ مالیات و حقوق خالص را‬،‫ به ترتی بیمه‬،calPayment() ‫ و‬calTax() ،calInsurance() ‫متدهای‬
.‫ برمیگردانند‬،‫محاسبه کرده‬
:‫ بروید و دستورات آن را بهصورت زیر تغییر دهید‬Program ‫ به کالس‬.4
using System;
namespace p21
{
class Program
{
static void Main(string[] args)
{
Employee[] emp = new Employee[3];
emp[0] = new Employee("1", "Reza Ahmadi ",
new Date(1380, 10, 15), 10000000);
emp[1] = new Employee("2", "Ali Abbasnejad",
new Date(1370, 12, 11), 4500000);
emp[2] = new Employee("3", "Zara Alvi ",
new Date(1368, 01, 10), 15000000);
long totalPayment = 0;
foreach (Employee e in emp)
{
Console.WriteLine(e.ToString());
totalPayment += e.calPayment();
}
‫‪333‬‬ ‫برنامهنویسی شیءگرا‪ :‬کالسها‪ ،‬وراثت و چندریختی‬

‫‪Console.WriteLine("Total payment:{0}",‬‬
‫;)‪totalPayment‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫کالس ‪ ،Program‬دارای متد )(‪ Main‬است‪ .‬در این متود سوه نمونوه از کوالس ‪ Employee‬ایجادشوده‪ ،‬در‬
‫آرایه ‪ Emp‬قرار میدهد‪ .‬سپس با سازنده )(‪ ،Employee‬بوه عناصور آرایوه اطالعوات سوه کارمنود را تخصویص‬
‫خواهد داد‪ .‬در ادامه‪ ،‬با حلقه تکرار ‪ foreach‬اطالعات هر کارمند را نمایش میدهود و حقووق خوالص او را بوا‬
‫‪ totalPayment‬جمع میکند‪ .‬در پایان‪ ،‬مقدار ‪ totalPayment‬را نمایش میدهد‪.‬‬
‫‪ .6‬پروژه را ذخیره و اجرا کنید و خروجی را به شکل زیر ببینید‪:‬‬

‫‪ .55‬برنامهای که شعاع بزرگ ) طولی) و شعاع کوچک (عرضی) بیضی را دریافت کرده‪ ،‬مساحت بیضی را با فرمول‬
‫زیر محاسبه میکند‪:‬‬

‫= مساحت‬ ‫شعاع کوچک * شعاع بزرگ *‬


‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬کالس ‪ Ellipse‬را به پروژه اضافه کرده و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p22‬‬
‫{‬
‫‪class Ellipse‬‬
‫{‬
‫;‪int width‬‬
‫;‪int length‬‬
‫)‪public Ellipse(int width, int length‬‬
‫{‬
‫;‪this.width = (width > 0) ? width : 0‬‬
‫;‪this.length = (length > 0) ? length : 0‬‬
‫}‬
‫)(‪public double Area‬‬
‫{‬
‫;‪return length * width * Math.PI‬‬
‫}‬
‫)(‪public override string ToString‬‬
‫{‬
‫‪return "Ellipse:"+width.ToString()+", "+‬‬
‫)(‪length.ToString‬‬
‫;)(‪+ "\tArea: " + Area().ToString‬‬
‫}‬

‫}‬
‫}‬
‫کالس ‪ ،Ellipse‬فیلدهای ‪( width‬شعاع عرضی)‪(length ،‬شعاع طولی) و سازنده )(‪( Ellipse‬مقدار‬
‫شعاع عرضی و طولی را بهعنوان پارامتر میگیرد‪ ،‬در فیلدهای ‪ width‬و ‪ length‬قرار میدهد)‪ ،‬متد )(‪Area‬‬
‫‪ 333‬فصل پنجم‬

‫(جهت محاسبه مساحت بیضی) و متد )(‪( ToString‬شعاع عرضی‪ ،‬طولی و مساحت بیضی را برمیگرداند) را‬
‫دارد‪.‬‬
‫‪ .3‬به کالس ‪ Program‬بروید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p22‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter width:‬‬
‫;))(‪int width = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter length:‬‬
‫;))(‪int length = int.Parse(Console.ReadLine‬‬
‫;)‪Ellipse e = new Ellipse(width, length‬‬
‫;))(‪Console.WriteLine(e.ToString‬‬
‫;)(‪Console.ReadLine‬‬
‫}‬
‫}‬
‫}‬
‫کالس ‪ ،Program‬در متد )(‪ Main‬این کوالس‪ ،‬شوعاع عرضوی و طوولی را از ورودی دریافوت مویکنود‪،‬‬
‫نمونهای به نوام ‪ e‬از کوالس ‪ Ellipse‬ایجواد مویکنود و بوا فراخووانی متود )(‪ ToString‬در متود )(‪WriteLine‬‬
‫اطالعات بیضی را نمایش میدهد‪.‬‬
‫‪ .4‬پروژه را ذخیره و اجرا کنید و خروجی را به شکل زیر ببینید‪:‬‬

‫برنامهای که کالسهای زیر را تعریف کرده و از آنها استفاده میکند‪:‬‬ ‫‪.54‬‬


‫کالس نقطه (‪ ،)Point‬دارای دو عضو دادهای ‪ y‬و ‪ x‬است‪.‬‬
‫کالس دایره (‪ ،)Circle‬مشتق کالس ‪ Point‬است که اعضوای ‪ X‬و ‪ Y‬را از کوالس ‪ Point‬بوه ار مویبورد‪.‬‬
‫عالوه بر این اعضا‪ ،‬اعضای نظیر ‪ Perime() ،Area() ،Radius‬و )(‪ ToString‬را نیز دارد‪.‬‬
‫وراهت کالسهای ‪ Point‬و ‪ Circle‬را در شکل زیر میبینید‪.‬‬ ‫ساختار سلسلهمرات‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬کالس ‪ Point‬را به پروژه اضافه کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫‪334‬‬ ‫برنامهنویسی شیءگرا‪ :‬کالسها‪ ،‬وراثت و چندریختی‬

‫;‪using System‬‬
‫‪namespace p23‬‬ ‫‪Point‬‬
‫{‬ ‫‪public‬‬ ‫‪X‬‬ ‫خاصیت‬
‫‪class Point‬‬
‫‪public‬‬ ‫‪Y‬‬ ‫خاصیت‬
‫{‬
‫;‪int x‬‬ ‫بدون پارامتر‬ ‫سازنده ‪Point‬‬
‫;‪int y‬‬ ‫سازنده ‪ Point‬با دو پارامتر‬
‫‪public int X‬‬ ‫)(‪To String‬‬ ‫متد‬
‫{‬
‫‪get‬‬
‫{‬ ‫‪Circle‬‬
‫;‪return x‬‬ ‫‪public Radius‬‬ ‫خاصیت‬
‫}‬ ‫سازنده بدون پارامتر ‪Circle‬‬
‫‪set‬‬ ‫سازنده با دو پارامتر ‪Circle‬‬
‫{‬ ‫)(‪Area‬‬ ‫متد‬
‫;‪x = value‬‬ ‫)(‪Perime‬‬ ‫متد‬
‫}‬
‫)(‪To String‬‬ ‫متد‬
‫}‬
‫‪public int Y‬‬ ‫‪point‬‬ ‫ها‬ ‫ار‬ ‫اع ا‬
‫{‬ ‫‪X‬‬ ‫خاصیت‬
‫‪get‬‬ ‫‪Y‬‬ ‫خاصیت‬
‫{‬
‫;‪return y‬‬
‫}‬
‫‪set‬‬
‫{‬
‫;‪y = value‬‬
‫}‬
‫}‬
‫} { )(‪public Point‬‬
‫)‪public Point(int x, int y‬‬
‫{‬
‫;‪X = x; Y = y‬‬
‫}‬
‫)(‪public override string ToString‬‬
‫{‬
‫;"]" ‪return "["+x.ToString() + ", " + y.ToString() +‬‬
‫}‬
‫}‬
‫}‬
‫این کالس دارای اعضای زیر میباشد‪:‬‬
‫فیلد ‪ ،x‬مختصات نقطه ‪ x‬را نگهداری میکند‪.‬‬
‫فیلد ‪ ،y‬مختصات نقطه ‪ y‬را نگهداری میکند‪.‬‬
‫خاصیت ‪ ،X‬برای بازیابی و مقداردهی به فیلد ‪ x‬به کار میرود‪.‬‬
‫خاصیت ‪ ،Y‬برای بازیابی و مقداردهی به فیلد ‪ y‬به کار میرود‪.‬‬
‫سازنده بدون یارامتر )(‪ ،Point‬فیلدهای ‪ x‬و ‪ y‬را مقدار اولیه صفر میدهد‪.‬‬
‫سازنده با یارامتر )(‪ ،Point‬دو مقدار ‪ x‬و ‪ y‬را بهعنوان پارامتر دریافت کرده‪ ،‬در خواص ‪ X‬و ‪ Y‬قرار میدهد‪.‬‬
‫متد )(‪ ،ToString‬مجدداً پیادهسازی شده است تا مختصات نقطه را بهصورت ]‪ [x , y‬برگرداند‪.‬‬
‫‪ .3‬کالس ‪ Circle‬را به پروژه اضافه کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪ 333‬فصل پنجم‬

‫‪namespace p23‬‬
‫{‬
‫‪class Circle:Point‬‬
‫{‬
‫;‪int radius‬‬
‫‪public int Radius‬‬
‫{‬
‫‪get‬‬
‫{‬
‫;‪return radius‬‬
‫}‬
‫‪set‬‬
‫{‬
‫;‪if (value > 0) radius = value‬‬
‫;‪else radius = 0‬‬
‫}‬
‫}‬
‫} { )(‪public Circle‬‬
‫)‪public Circle(int x, int y, int r): base(x, y‬‬
‫{‬
‫;‪Radius = r‬‬
‫}‬
‫)(‪public double Area‬‬
‫{‬
‫;‪return Math.PI*Radius * Radius‬‬
‫}‬
‫)(‪public double Perime‬‬
‫{‬
‫;‪return 2* Math.PI * Radius‬‬
‫}‬
‫)(‪public override string ToString‬‬
‫{‬
‫‪return base.ToString()+"\tRadius is" +‬‬
‫‪Radius.ToString() +"\nPerime is " +‬‬
‫‪Perime().ToString() + "\tArea is " +‬‬
‫;)(‪Area().ToString‬‬
‫}‬
‫}‬
‫}‬
‫این کالس مشتق کالس ‪ Point‬است‪ .‬پس‪ ،‬خواص ‪ X‬و ‪ Y‬را از کالس ‪ Point‬به ار میبرد‪ .‬عالوه بر این‬
‫کالس‪ ،‬دارای اعضای زیر نیز میباشد‪:‬‬
‫فیلد ‪ ،radius‬شعاع دایره را نگهداری میکند‪.‬‬
‫خاصیت ‪ ،Radius‬برای بازیابی و مقداردهی به فیلد ‪ radius‬به کوار مویرود (متود ‪ set‬از ورود شوعاع منفوی‬
‫جلوگیری میکند)‪.‬‬
‫متد سازنده بدون یارامتر )(‪ ،Circle‬شعاع و نقطه مرکز دایره را برابر صفر قرار میدهد‪.‬‬
‫متاد ساازنده بااا یاارامتر )(‪ ،Circle‬پووارامترهوای ‪ x‬و ‪( y‬نقطووه مرکوز دایوره) و ‪( r‬شووعاع) را دریافوت کوورده‪،‬‬
‫پارامترهای ‪ x‬و ‪ y‬را برای کالس پایه ‪ Point‬میفرستد (از طریق )‪ )base(x, y‬و شوعاع را در خاصویت ‪radius‬‬
‫قرار میدهد‪.‬‬
‫متد )(‪ ،Area‬برای محاسبه مساحت دایره به کار میرود‪.‬‬
‫‪333‬‬ ‫برنامهنویسی شیءگرا‪ :‬کالسها‪ ،‬وراثت و چندریختی‬

‫متد )(‪ ،Perime‬برای محاسبه محیط دایره به کار میرود‪.‬‬


‫متد )(‪ ،ToString‬مجدداً پیادهسازی گردید تا نقطه مرکز دایره‪ ،‬شعاع‪ ،‬محیط و مساحت را برگرداند‪.‬‬
‫‪ .4‬به کالس ‪ Program‬برگردید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p23‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter x:‬‬
‫;))(‪int x = Convert.ToInt32(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter y:‬‬
‫;))(‪int y = Convert.ToInt32(Console.ReadLine‬‬
‫;)‪Point p = new Point(x, y‬‬
‫;))(‪Console.WriteLine("Point is " + p.ToString‬‬
‫;)"‪Console.Write("Enter radius:‬‬
‫;))(‪int r = Convert.ToInt32(Console.ReadLine‬‬
‫;)‪Circle c = new Circle(x, y, r‬‬
‫;))(‪Console.WriteLine("center is " + c.ToString‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در متد )(‪ ،Main‬ابتدا مقادیر ‪ x‬و ‪ y‬را از کاربر دریافت میکند‪ .‬سپس با مقادیر ‪ x‬و ‪ y‬دریافت شده‪ ،‬شیءی‬
‫به نام ‪ p‬از نوع ‪ Point‬ایجاد میکند و با فراخوانی متد )(‪ ToString‬بر روی نمونه ‪ ،p‬مختصات ‪ x‬و ‪ y‬را نموایش‬
‫میدهد‪ .‬در پایان‪ ،‬شعاع (‪ )r‬را از کاربر دریافت مینماید و با توجه به نقطه ‪ y‬و ‪ x‬خواندهشده و شوعاع دایوره (‪)r‬‬
‫نمونه ‪ c‬را از نوع ‪ Circle‬ایجاد میکند و با فراخوانی متد )(‪ ،ToString‬نقطه مرکوز‪ ،‬شوعاع‪ ،‬محویط و مسواحت‬
‫دایره را نمایش میدهد‪.‬‬
‫‪ .5‬پروژه را ذخیره و اجرا کنید‪ .‬دادههای درخواست شده را وارد نمایید تا خروجی را به شکل زیر ببینید‪:‬‬

‫‪ .53‬برنامهای که کالسهای مربع (‪ )Square‬و مستطیل را ییادهسازی میکند‪ .‬کالس مستطیل از کالس مربع مشاتق‬
‫میشود‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬کالس ‪ Square‬را به پروژه اضافه کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p24‬‬
‫{‬
‫‪class Square‬‬
‫‪ 333‬فصل پنجم‬

‫{‬
‫;‪int x‬‬
‫‪public int X‬‬
‫{‬
‫‪get‬‬
‫{‬
‫;‪return x‬‬
‫}‬
‫‪set‬‬
‫{‬
‫;‪x = (value > 0) ? value : 0‬‬
‫}‬
‫}‬
‫} { )(‪public Square‬‬
‫)‪public Square(int x‬‬
‫{‬
‫;‪X = x‬‬
‫}‬
‫)(‪public virtual int Area‬‬
‫{‬
‫;‪return x * x‬‬
‫}‬
‫)(‪public virtual int Perime‬‬
‫{‬
‫;‪return 4 * x‬‬
‫}‬
‫)(‪public override string ToString‬‬
‫{‬
‫" ‪string s = "X = " + x.ToString() + "\t(Area is‬‬
‫;"‪+ Area().ToString() + ")\t‬‬
‫;")" ‪s+= "(Perime is " + Perime().ToString() +‬‬
‫;‪return s‬‬
‫}‬
‫}‬
‫}‬
‫این کالس دارای اعضای زیر میباشد‪:‬‬
‫فیلد ‪ ،x‬مقدار ضلع مربع را نگهداری میکند‪.‬‬
‫خاصیت ‪ ،X‬برای بازیابی و مقداردهی به فیلد ‪ x‬به کار میرود‪ .‬در این خاصیت متد ‪ set‬از ورودی دادههای‬
‫منفی برای ضلع مربع جلوگیری میکند‪.‬‬
‫سازنده بدون یارامتر )(‪ ،Square‬سازنده پیشفرض کالس مربع را پیادهسازی میکند‪.‬‬
‫سازنده با یارامتر )(‪ ،Square‬ضلع مربع (‪ )x‬را بهعنوان پارامتر دریافت کرده‪ ،‬در خاصیت ‪ X‬قرار مویدهود و‬
‫خاصیت ‪ X‬با اعمال شر منفی نبودن آن را در فیلد ‪ x‬قرار خواهد داد‪.‬‬
‫متد )(‪ ،Area‬مساحت مربع را برمیگرداند‪ .‬این متد بهصورت ‪ virtual‬تعریفشده است توا بتووان آن را در‬
‫کالسهای مشتق با واژه ‪ override‬مجدداً پیادهسازی نمود‪.‬‬
‫متد )(‪ ،Perime‬محیط مربع را برمیگرداند‪ .‬این متد نیز بهصورت ‪ virtual‬تعریفشده است‪.‬‬
‫متد )(‪ ،ToString‬مقدار ‪ ،x‬مساحت و محیط را برمیگردانود‪ .‬ایون متود از کوالس ‪ object‬بوه ار رسویده‬
‫است‪ .‬در این کالس با واژه ‪ override‬مجدداً پیادهسازی شده است‪.‬‬
‫‪333‬‬ ‫برنامهنویسی شیءگرا‪ :‬کالسها‪ ،‬وراثت و چندریختی‬

‫کالسهای مشتق میتوانند اعضای ‪ Perime() ،Area() ،x‬و )(‪ ToString‬را از این کوالس بوه ار ببرنود‪.‬‬
‫اون با سطح دسترسی ‪ public‬تعریفشدهاند‪.‬‬
‫‪ .3‬کالس ‪ Rectangle‬را به پروژه اضافه کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p24‬‬
‫{‬
‫‪class Rectangle:Square‬‬
‫{‬
‫;‪int y‬‬
‫‪public int Y‬‬
‫{‬
‫‪get‬‬
‫{‬
‫;‪return y‬‬
‫}‬
‫‪set‬‬
‫{‬
‫;‪y = (value > 0) ? value : 0‬‬
‫}‬
‫}‬
‫} { )(‪public Rectangle() : base‬‬
‫)‪public Rectangle(int x, int y‬‬
‫)‪: base(x‬‬
‫{‬
‫;‪Y = y‬‬
‫}‬
‫)(‪public override int Area‬‬
‫{‬
‫;‪return y * X‬‬
‫}‬
‫)(‪public new int Perime‬‬
‫{‬
‫;)‪return 2 * (y + X‬‬
‫}‬
‫)(‪public override string ToString‬‬
‫{‬
‫‪string s = "X=" + X.ToString() + ",\tY = " +‬‬
‫;)(‪y.ToString‬‬
‫‪s+="\t(Area is "+Area().ToString()+")\t(Perime is‬‬ ‫"‬
‫;")" ‪+ Perime().ToString() +‬‬
‫;‪return s‬‬
‫}‬
‫}‬
‫}‬
‫این کالس از کالس ‪ Square‬مشتق میشود و عالوه بر اینکه از اعضای کالس ‪ Square‬بوه ار مویبورد‪،‬‬
‫دارای اعضای زیر نیز میباشد‪:‬‬
‫فیلد ‪ ،y‬عرض مستطیل را نگهداری میکند‪.‬‬
‫خاصیت ‪ ،Y‬برای بازیابی و مقداردهی به فیلد ‪ y‬به کار میرود‪ .‬این خاصیت با استفاده از متود ‪ set‬از ورود‬
‫دادههای منفی برای عرض مستطیل جلوگیری میکند‪.‬‬
‫سازنده بدون یارامتر )(‪ ،Rectangle‬سازنده پیشفرض کالس ‪ Rectangle‬را پیادهسازی میکند‪.‬‬
‫‪ 338‬فصل پنجم‬

‫سازنده با یارامتر ()‪ ،Rectangle‬پارامترهای ‪ x‬و ‪ y‬را دریافت کرده‪ x ،‬را برای کالس پایوه خوودش (یعنوی‬
‫مربع) میفرستد (از طریق )(‪ )base‬و ‪ y‬را در خاصیت ‪ Y‬قرار میدهد‪.‬‬
‫متد )(‪ ،Area‬برای محاسبه مساحت مستطیل به کار مویرود‪.‬اوون ایون کوالس متود )(‪ Area‬را از کوالس‬
‫‪ Square‬به ار میبرد‪ ،‬این متد را با واژه ‪ override‬مجدداً پیادهسازی نموده است‪.‬‬
‫متد )(‪ ،Perime‬برای محاسبه محیط مستطیل به کار میرود‪ .‬اون این کالس متد )(‪ Perime‬را از کوالس‬
‫‪ Square‬به ار میبرد‪ ،‬این متد را با واژه ‪ new‬پیادهسازی کرده است تا متد )(‪Perime‬ایی که از کالس پایوه‬
‫‪ Square‬به ار میبرد را مخفی کند‪.‬‬
‫متد )(‪ ،ToString‬طول‪ ،‬عرض‪ ،‬محیط و مساحت مستطیل را برمیگرداند‪.‬‬
‫‪ .4‬به کالس ‪ Program‬برگردید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p24‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter x:‬‬
‫;))(‪int x = Convert.ToInt32(Console.ReadLine‬‬
‫;)(‪Square s = new Square‬‬
‫;‪s.X = x‬‬
‫;))(‪Console.WriteLine(s.ToString‬‬
‫;)"‪Console.Write("Enter y:‬‬
‫;))(‪int y = Convert.ToInt32(Console.ReadLine‬‬
‫;)‪Rectangle r = new Rectangle(x, y‬‬
‫;))(‪Console.WriteLine(r.ToString‬‬
‫;)(‪Console.ReadLine‬‬
‫}‬
‫}‬
‫}‬
‫دستورات داخل متد )(‪ ،Main‬ابتدا با یک پیغام مقدار ‪( x‬ضلع مربع یا مستطیل) را خوانده‪ ،‬نمونهای به نوام ‪s‬‬
‫از کالس ‪ Square‬ایجاد میکنند‪ ،‬مقدار ‪ x‬خواندهشده را در خاصیت ‪ X‬نمونه ‪ s‬قرار میدهد و با فراخوانی متد‬
‫)(‪ ToString‬بر روی نمونه ‪ ،s‬ضلع مربع‪ ،‬مساحت و محیط آن را نمایش میدهند‪ .‬سپس‪ ،‬با نمایش پیغام دیگور‪،‬‬
‫‪( y‬عرض مستطیل) را خوانده‪ ،‬نمونهای به نام ‪ r‬از نوع کالس ‪( Rectangle‬با ‪ x‬و ‪ y‬خواندهشده) ایجاد میکنود‪.‬‬
‫در پایان‪ ،‬با فراخوانی متد )(‪ ToString‬بر روی نمونه ‪ r‬مقدار طول‪ ،‬عرض‪ ،‬مساحت و محیط مستطیل را نموایش‬
‫میدهد‪.‬‬
‫‪ .5‬پروژه را ذخیره و اجرا کنید‪ .‬برای ‪ x‬و ‪ y‬درخواست شده ‪ 21‬و ‪ 0‬را وارد کرده تا خروجی زیر را مشواهده‬
‫کنید‪:‬‬
‫‪333‬‬ ‫برنامهنویسی شیءگرا‪ :‬کالسها‪ ،‬وراثت و چندریختی‬

‫برنامهای که کالسهای زیر را ایجاد کرده‪ ،‬از آنها استفاده میکند‪:‬‬ ‫‪.52‬‬
‫کالس ‪ ،Shape‬کالسی ‪ abstract‬اسوت کوه فقوط دو متود )(‪( Area‬بورای محاسوبه مسواحت) و ‪Volume‬‬
‫(برای محاسبه حجم) دارد‪.‬‬
‫کالس ‪ ،Point‬مشتق کالس ‪ Shape‬است که دارای اعضای دادهای ‪ x‬و ‪ y‬است‪.‬‬
‫کالس ‪ ،Circle‬مشتق کالس ‪ Point‬است‪ .‬عالوه بر اینکه اعضای کالس ‪ Point‬را به ار مویبورد‪ ،‬دارای‬
‫اعضای زیر میباشد‪:‬‬
‫‪ .1‬عضو دادهای شعاع (‪ ،)radius‬شعاع دایره را نگهداری میکند‪.‬‬
‫‪ .2‬متد )(‪ ،Area‬برای محاسبه مساحت دایره به کار میرود‪.‬‬
‫کالس ‪( Cylinder‬استوانه)‪ ،‬مشتق کالس ‪ Circle‬است که عالوه بر اعضایی که از کالس ‪ Circle‬بوه ار‬
‫میبرد‪ ،‬دارای اعضای زیر نیز است‪:‬‬
‫‪ .1‬عضو دادهای ارتفاع (‪ )height‬است‪.‬‬
‫‪ .2‬متد )(‪ ،Area‬برای محاسبه مساحت اسوتوانه بوه کوار مویرود‪ .‬مسواحت اسوتوانه بوه شوکل زیور محاسوبه‬
‫ارتفاع استوانه * محیط دایره ‪ * 5 +‬مساحت دایره‬ ‫میشود‪:‬‬
‫‪ .3‬متد )(‪ ،Volume‬حجم استوانه را محاسبه کرده‪ ،‬برمیگرداند‪ .‬حجم استوانه برابر است با‪:‬‬
‫ارتفاع * مساحت دایره‬
‫برنامهای که از این کالسها استفاده میکند‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی به نام ‪ Ch6_ 3‬ایجاد کنید‪.‬‬
‫‪ .2‬کالس ‪ Shape‬را از نوع ‪ abstract‬به پروژه اضافه کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p25‬‬
‫{‬
‫‪class Shape‬‬
‫{‬
‫)(‪public virtual double Area‬‬
‫{‬
‫;‪return 0‬‬
‫}‬
‫)(‪public virtual double Volume‬‬
‫{‬
‫;‪return 0‬‬
‫}‬
‫}‬
‫}‬
‫اون این کالس بهصورت ‪ abstract‬پیادهسازی شده است‪ ،‬متودهای )(‪ Area‬و )(‪ Volume‬آن بوهصوورت‬
‫‪ virtual‬پیادهسازی شدهاند تا در کالس مشتق بتوان پیادهسازی آنها را تغییر داد‪.‬‬
‫‪ .3‬کالس ‪ Point‬را به پروژه اضافه کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p25‬‬
‫{‬
‫‪class Point : Shape‬‬
‫ فصل پنجم‬343

{
int x;
int y;
public int X
{
get
{
return x;
}
set
{
x = value;
}
}
public int Y
{
get
{
return y;
}
set
{
y = value;
}
}
public Point() { }
public Point(int x, int y)
{
X = x; Y = y;
}
public override string ToString()
{
return "[" + x.ToString() + ", " + y.ToString() +
"]" + "\nArea is " + Area().ToString() +
"\tVolume is " + Volume().ToString();
}
}
}
.‫ دیدید‬6 – 2 ‫ میباشد که اعضای آن را در مثال‬Shape ‫این کالس مشتق کالس‬
:‫ دستورات آن را بهصورت زیر تغییر دهید‬،‫ را به پروژه اضافه کرده‬Circle ‫ کالس‬.4

using System;
namespace p25
{
class Circle : Point
{
int radius;
public int Radius
{
get
{
return radius;
}
set
{
343 ‫ وراثت و چندریختی‬،‫ کالسها‬:‫برنامهنویسی شیءگرا‬

radius = (value > 0) ? value : 0;


}
}
public Circle() { }
public Circle(int x, int y, int r)
: base(x, y)
{
Radius = r;
}
public override double Area()
{
return Math.PI * Radius * Radius;
}
public double Perime()
{
return 2 * Math.PI * Radius;
}
public override string ToString()
{
return "\nRadius is"+Radius.ToString()+"\n"+
base.ToString();
}
}
}
‫ فقوط تنهوا تفواوت ایون‬.‫ دیدیود‬6 – 2 ‫ مشتق میشود که اعضای آن را در مثال‬Point ‫این کالس از کالس‬
‫ اوون در‬.‫ مجدداً پیادهسازی شده است‬override ‫ با واژه‬Area() ‫ این است که متد‬6 – 2 ‫کالس با کالس مثال‬
.‫ تعریفشده بود‬virtual ‫ بهصورت‬Shape ‫کالس پایه‬
:‫ دستورات آن را بهصورت زیر تغییر دهید‬،‫ را به پروژه اضافه کرده‬Cylinder ‫ کالس‬.5
using System;
namespace p25
{
class Cylinder : Circle
{
int height;
public int Height
{
get
{
return height;
}
set
{
height = (value > 0) ? value : 0;
}
}
public Cylinder() { }
public Cylinder(int x, int y, int r, int h)
: base(x, y, r)
{
Height = h;
}
public override double Area()
{
‫ فصل پنجم‬343

return base.Area() * 2 + base.Perime() * Height;


}
public override double Volume()
{
return base.Area() * Height; ;
}
public override string ToString()
{
return "Height is" + Height.ToString() +
base.ToString();
}
}
}
،y ،x( ‫ مشتق میشود که عالوه بر اعضایی که از آن کوالس بوه ار مویبورد‬Circle ‫این کالس از کالس‬
:‫ دارای اعضای زیر میباشد‬،)Volume() ‫ و‬Area() ،Radius
.‫ ارتفاع استوانه را نگهداری میکند‬،height ‫فیلد‬
‫ آن از ورود داده‬set ‫ بوه کوار مویرود و متود‬height ‫ برای بازیابی و مقداردهی بوه فیلود‬،Height ‫خاصیت‬
.‫منفی برای ارتفاع استوانه جلوگیری میکند‬
.‫ تمام فیلدهای استوانه را برابر صفر قرار میدهد‬،Cylinder() ‫متد سازنده بدون یارامتر‬
،x ‫ پارامترهوای‬،‫ را بهعنوان پارامتر دریافت کرده‬n ‫ و‬r ،y ،x ‫ اهار مقدار‬،Cylinder() ‫متد سازنده با یارامتر‬
.‫ قرار میدهد‬Height ‫ را در خاصیت‬n ‫ را برای کالس پایه میفرستد و مقدار‬r ‫ و‬y
.‫ پیادهسازی شده است تا مساحت استوانه را برگرداند‬override ‫ مجدداً با کلمه‬،Area() ‫متد‬
.‫ پیادهسازی شده است تا حجم استوانه را برگرداند‬override ‫ مجدداً با کلمه‬،Volume() ‫متد‬
.‫ مجدداً پیادهسازی شده است تا اطالعات استوانه را برگرداند‬،ToString() ‫متد‬
:‫ برگردید و دستورات آن را بهصورت زیر تغییر دهید‬Program ‫ به کالس‬.6
using System;
namespace p25
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter x:");
int x = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter y:");
int y = Convert.ToInt32(Console.ReadLine());
Point p = new Point(x, y);
Console.WriteLine("Point is\n" + p.ToString());
Console.WriteLine();
Console.Write("Enter radius:");
int r = Convert.ToInt32(Console.ReadLine());
Circle c = new Circle(x, y, r);
Console.WriteLine("Circle is " + c.ToString());
Console.WriteLine();
Console.Write("Enter height:");
int h = Convert.ToInt32(Console.ReadLine());
Cylinder cy = new Cylinder(x, y, r, h);
Console.WriteLine("Cylinder is \n" +
‫‪344‬‬ ‫برنامهنویسی شیءگرا‪ :‬کالسها‪ ،‬وراثت و چندریختی‬

‫;))(‪cy.ToString‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫این دسوتورات ابتودا‪ x ،‬و ‪ y‬را خوانوده‪ ،‬نمونوهای بوه نوام ‪ p‬از نووع ‪ Point‬ایجواد موینماینود و بوا فراخووانی‬
‫)(‪ ToString‬مختصات نقطه (‪ ،)x, y‬مساحت و حجم نقطه را نمایش میدهند‪ .‬در ادامه‪ ،‬شعاع دایره را خوانوده‪،‬‬
‫با ‪ y ،x‬و ‪ r‬نمونهای از دایره به نام ‪ c‬ایجاد میکنند و با فراخوانی )(‪ ،ToString‬شعاع‪ ،‬مختصات ‪ y‬و‪ ،x‬مسواحت‬
‫و حجم دایره را نمایش میدهند‪ .‬در پایان ارتفاع استوانه (متغیر ‪ )h‬را از کواربر دریافوت مویکننود و نمونوهای از‬
‫استوانه با پارامترهای ‪ r ،y ،x‬و ‪ h‬ایجاد کرده‪ ،‬با فراخوانی متد )(‪ ToString‬ارتفاع‪ ،r ،‬نقطوه مرکوز اسوتوانه (‪ x‬و‬
‫‪ ،)y‬مساحت و حجم استوانه را نمایش میدهند‪.‬‬
‫‪ .7‬پروژه را ذخیره و اجرا کنید‪ .‬داده هوای درخواسوت شوده را وارد نماییود توا خروجوی را ماننود شوکل زیور‬
‫مشاهده نمایید‪:‬‬

‫‪ .51‬کالس استاتیکی که با دو متد درجه سانتیگراد را به فارنهایت و درجه فارنهایت را به سانتیگاراد تبادیل مای‪-‬‬
‫کند‪ .‬برنامهای که از این کالس استفاده میکند‪ .‬برای تبدیل درجهها از فرمولهای زیر استفاده میشود‪.‬‬
‫‪ * 1/2 + 45‬درجه سانتیگراد = درجه به فارنهایت‬
‫‪ – 45( * 2 / 1‬درجه فارنهایت) = درجه به سانتیگراد‬
‫در این برنامه منویی نمای داده میشود تا نوع درجه را دریافت کند‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬کالس ‪ TemperatureConverter‬را به پروژه اضافه کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫{ ‪namespace Ch6_4‬‬
‫{ ‪static class TemperatureConverter‬‬
‫{)‪public static double CelsiusToFahrenheit(double celsius‬‬
‫;‪return (celsius * 9 / 5) + 32‬‬
‫}‬
‫)‪public static double FahrenheitToCelsius(double fahrenheit‬‬ ‫{‬
‫;‪return (fahrenheit - 32) * 5 / 9‬‬
‫}‬
‫}‬
‫}‬
‫ فصل پنجم‬343

‫ درجه را به سوانتیگوراد (پوارامتر‬،CelsiusToFahrenheit() ‫ دارد که متد‬static ‫این کالس دو متد از نوع‬


FahrenheitToCelsius() ‫ متود‬،‫ اموا‬.‫ آن را به فارنهایت تبدیل میکند و برمویگردانود‬،‫)دریافت کرده‬celsius
.‫ آن را به سوانتیگوراد تبودیل مویکنود و برمویگردانود‬،‫) دریافت کرده‬fahrenheit ‫درجه به فارنهایت (پارامتر‬
‫ را‬static ‫ فقوط مویتووان اعضوای‬static ‫ در کوالس‬،‫ زیورا‬.‫ اسوت‬static ‫ نوع هر دو متود‬،‫همانطور که میبینید‬
.‫تعریف کرد‬
:‫ برگردید و دستورات آن را بهصورت زیر تغییر دهید‬Program ‫ به کالس‬.3
using System;
namespace p26
{
class Program
{
static void Main(string[] args)
{
while (true)
{
Console.WriteLine("=====================");
Console.WriteLine("Select the convertor
direction");
Console.WriteLine("1. From Celsius to
Fahrenheit.");
Console.WriteLine("2. From Fahrenheit to
Celsius.");
Console.WriteLine("3. Exit Program.");
Console.Write("Select 1 to 3:");
string selection = System.Console.ReadLine();
double F, C = 0;
switch (selection)
{
case "1":
Console.Write("Enter the Celsius
temperature:");
F=TemperatureConverter.CelsiusToFahrenheit
(Convert.ToDouble(Console.ReadLine()));
Console.WriteLine("Temperature in
Fahrenheit:{0:F2}", F);
break;
case "2":
Console.Write("Enter the Fahrenheit
temperature: ");
C=TemperatureConverter.FahrenheitToCelsius
(Convert.ToDouble(Console.ReadLine()));
Console.WriteLine("Temperature in
Celsius: {0:F2}", C);
break;
case "3":
return;
default:
Console.WriteLine("Please select a
convertor.");
break;
}
}
‫‪343‬‬ ‫برنامهنویسی شیءگرا‪ :‬کالسها‪ ،‬وراثت و چندریختی‬

‫}‬
‫}‬
‫}‬
‫این دستورات‪ ،‬ابتدا حلقه تکرار بینهایت )‪ while(true‬ایجاد میکنند و از کاربر درخواست یکی از مقادیر‬
‫‪ 2‬تا ‪ 3‬را مینمایند‪ .‬اگر کاربر مقدار ‪ 2‬را وارد کند‪ ،‬با یک پیغام از کاربر درجه را به سانتیگراد دریافت کرده‪،‬‬
‫با فراخوانی متد )(‪ CelsiusToFahrenheit‬آن را به فارنهایت تبدیل میکنند و نمایش میدهنود (اوون کوالس‬
‫از نوع ‪ static‬است‪ ،‬در فراخوانی متد از نام کالس استفادهشوده اسوت)‪ .‬اگور کواربر مقودار ‪ 2‬را وارد نمایود‪ ،‬از‬
‫کاربر درجه را به فارنهایت دریافت میکند‪ ،‬با فراخوانی متود )(‪ FahrenheitToCelsius‬آن را بوه سوانتیگوراد‬
‫تبدیل میکند و نمایش میدهد‪ .‬اگر کاربر مقدار ‪ 3‬را وارد کند‪ ،‬برنامه خاتمه مییابد‪.‬‬
‫‪ .4‬پروژه را ذخیره و اجرا کنید‪ .‬داده هوای درخواسوت شوده را وارد نماییود توا خروجوی را ماننود شوکل زیور‬
‫مشاهده کنید‪:‬‬

‫‪ .51‬برنامه ای که کد کاال‪ ،‬نام کاال‪ ،‬تعداد فروش‪ ،‬قیمت را دریافت میکند و قیمت فروش را محاسبه کرده‪ ،‬نماای‬
‫میدهد‪ .‬در این برنامه از یک واسط به نام ‪ IProduct‬استفادهشده است‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایجاد کنید‪.‬‬
‫‪ .2‬یک واسط جدید (‪ )Interface‬به نام ‪ IProduct‬به پروژه اضافه نماییود‪ .‬بورای ایون منظوور مراحول زیور را‬
‫انجام دهید‪:‬‬
‫گزینه ‪ Project/Add New Item‬را اجرا کنید تا پنجره آن ظاهر شود‪.‬‬
‫در این پنجره‪ ،‬آیکون ‪ Interface‬را انتخاب کرده‪ ،‬در نام واسط‪ IProduct.cs ،‬را تایپ کنید‪.‬‬
‫دکمه ‪ Add‬را انتخاب کنید‪.‬‬
‫دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p27‬‬
‫ فصل پنجم‬343

{
interface IProduct
{
int ID
{
get;
set;
}
String ProductName
{
get;
set;
}
decimal ProductBuyPrice
{
get;
set;
}
decimal ProductAmount
{
get;
set;
}
decimal CalculatePrice();
}
}
:‫این واسط دارای اعضای زیر میباشد‬
.‫ برای بازیابی و مقداردهی به کد کاال به کار میرود‬،ID ‫خاصیت‬
.‫ برای بازیابی و مقداردهی به نام کاال به کار میرود‬،ProductName ‫خاصیت‬
.‫ برای بازیابی و مقداردهی قیمت کاال به کار میرود‬،ProductBuyPrice ‫خاصیت‬
.‫ برای بازیابی و مقداردهی به تعداد کاال به کار میرود‬،ProductAmount ‫خاصیت‬
.)‫ برای محاسبه قیمت کل به کار میرود (تعداد کاال * قیمت کاال‬،CalculatePrice() ‫متد‬
‫ هیچیک از خواص و متدها پیوادهسوازی نشودهانود (حتوی‬،‫همانطور که در این دستورات مشاهده میگردد‬
.)‫ در نظر گرفته نشدهاند‬abstract ‫ یا‬virtual
:‫ را به پروژه اضافه کرده و دستورات آن را بهصورت زیر تغییر دهید‬Product_Customer ‫ کالس‬.3
using System;
namespace p27
{
public class Product_Customer : IProduct
{
protected int pId;
protected String pName;
protected decimal pCost;
protected decimal pAmount;
public int ID
{
get { return pId; }
set { pId = value; }
}
public String ProductName
343 ‫ وراثت و چندریختی‬،‫ کالسها‬:‫برنامهنویسی شیءگرا‬

{
get { return pName; }
set { pName = value; }
}
public decimal ProductAmount
{
get { return pAmount; }
set { pAmount = (value > 0) ? value : 0; }
}
public decimal ProductBuyPrice
{
get { return pCost; }
set { pCost = (value > 0) ? value : 0; }
}
public decimal CalculatePrice()
{
return pAmount * pCost;
}
public override string ToString()
{
return string.Format("ID:{0}\tName:{1}\tPrice:{2}\tAmount
:{3}\tPayment:{4}", pId, pName, pAmount, pCost,
CalculatePrice());
}
}
}
:‫این کالس دارای اعضای زیر میباشد‬
‫ (قیموت‬pCost ،)‫ (نام کاال را نگهوداری مویکنود‬pName ،)‫ (کد کاال را نگهداری میکند‬pId ‫فیلدهای‬
.)‫ (تعداد کاال را نگهداری مینماید‬pAmount ‫کاال را نگهداری مینماید) و‬
‫ بووه ترتیوو خووواص واسووط‬ProductBuyPrice ‫ و‬ProductAmount ،ProductName ،ID ‫خووواص‬
.‫ را پیادهسازی میکنند‬IProduct
‫ را پیادهسازی میکند که قیموت کول را‬IProduct ‫ واسط‬CalculatePrice() ‫ متد‬،CalculatePrice() ‫متد‬
.‫حساب کند‬
.‫ استفادهنشده است‬override ‫ در هیچیک از پیادهسازیها کلمه‬،‫همانطور که میبینید‬
.‫ پیادهسازی مجدد شده است تا اطالعات کاال را نمایش دهد‬override ‫ با کلمه‬،ToString() ‫متد‬
:‫ برگردید و دستورات آن را بهصورت زیر تغییر دهید‬Program ‫ به کالس‬.4

using System;
namespace p27
{
class Program
{
static void Main(string[] args)
{
Product_Customer prod = new Product_Customer();
Console.Write("Enter Product ID:");
prod.ID = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter Product Name:");
prod.ProductName = Console.ReadLine();
Console.Write("Enter Product Amont:");
‫‪ 348‬فصل پنجم‬

‫=‪prod.ProductAmount‬‬
‫;))(‪Convert.ToDecimal(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter Product Price:‬‬
‫= ‪prod.ProductBuyPrice‬‬
‫;))(‪Convert.ToDecimal(Console.ReadLine‬‬
‫;))(‪Console.WriteLine(prod.ToString‬‬
‫;)(‪Console.Read‬‬
‫}‬
‫}‬
‫}‬
‫این دستورات ابتدا‪ ،‬نمونهای از کالس ‪ Product_Customer‬ایجاد کرده‪ ،‬اطالعوات کواال را خوانوده‪ ،‬از‬
‫طریق خواص در فیلدهای آن نمونه قرار میدهند و با فراخوانی متد )(‪ ToString‬بر روی نمونه اطالعات کواال‬
‫را نمایش میدهند‪.‬‬
‫‪ .5‬پروژه را ذخیره و اجرا کنید‪ .‬اطالعات کاال را وارد کرده تا خروجی را به شکل زیر ببینید‪:‬‬
‫فصل‬
‫فایلها‬ ‫‪6‬‬
‫برنامهای که چند جمله را دریافت کرده‪ ،‬در فایل ‪ 1.XT‬در درایو ‪ D‬پوشه ‪ Data‬مینویسد‪.‬‬ ‫‪.1‬‬
‫;‪using System‬‬
‫;‪using System.IO‬‬
‫‪namespace P1‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;" " = ‪string sentence‬‬
‫;‪StreamWriter myfile‬‬
‫;)"‪myfile = File.CreateText(@"D:\data\1.txt‬‬
‫‪do‬‬
‫{‬
‫;)" ‪Console.Write("Enter a sentence:‬‬
‫;)(‪sentence = Console.ReadLine‬‬
‫)‪if (sentence.Length != 0‬‬
‫{‬
‫;)‪myfile.WriteLine(sentence‬‬
‫}‬
‫}‬
‫;)‪while (sentence.Length != 0‬‬
‫;)(‪myfile.Close‬‬
‫}‬
‫}‬
‫}‬
‫این برنامه ابتدا متغیر رشتهای ‪ sentence‬را برای دریافت جمالت تعریف میکند‪ ،‬سپس متغیر ‪ myfile‬را با‬
‫نوع ‪ StreamWriter‬تعریف مینماید و فایل متنی ‪ 1.txt‬را در پوشه ‪ Data‬درایو ‪ D‬ایجاد میکند با متد‬
‫)‪ .(createText‬در ادامه در یک حلقه با پیغام مناسب جملهای را خوانده‪ ،‬در متغیر ‪ sentence‬قرار میدهد و‬
‫چنانچه طول رشته ‪ sentence‬صفر نباشد‪ ،‬آن را در ‪ myFile‬مینویسد و این روند را ادامه میدهد تا کاربر‬
‫رشتهای با طول صفر وارد کند‪ .‬در پایان فایل ‪ myFile‬را میبندد‪.‬‬

‫‪ .2‬برنامهای که چند جمله را میخواند به انتهای فایل متنی ‪ 1.txt‬در پوشه ‪ Data‬درایو ‪ D‬اضافه می‪-‬‬
‫کند‪.‬‬
‫;‪using System‬‬
‫;‪using System.IO‬‬
‫‪namespace p2‬‬
‫{‬
‫ فصل ششم‬444

class Program
{
static void Main(string[] args)
{
StreamWriter myFile = File.AppendText(@"d:\data\1.txt");
string line="";
do
{
Console.Write("Enter a sentence: ");
line = Console.ReadLine();
if (line != "")
myFile.WriteLine(line);
}
while (line != "");
myFile.Close();
}
}
}
‫ موجود در پوشه‬1.txt ‫ تعریف کرد و فایل متنی‬StreamWriter ‫ را با نوع‬myFile ‫در این برنامه ابتدا متغیر‬
-‫ را بهصورت رشته‬line ‫ سپس متغیر‬.‫ را طوری باز میکند تا بتوان اطالعاتی را به انتهای آن اضافه نمود‬D ‫درایو‬
‫ خدایی‬line ‫ قرار میدهدد و اردر‬line ‫ای تعریف کرده و در حلقه تکرار با پیغام مناسب جملهای را خوانده و در‬
‫ را‬myFile ‫ حلقده خاتمده مدییابدد و‬،‫ خایی باشد‬line ‫ اضافه میکند و ارر‬myFile ‫ آن را به انتهای فایل‬،‫نباشد‬
.‫میبندد‬

‫ اطالعات آن را بر روی صفحهنمایش نشان‬،‫ برنامه ای که نام یک فایل متنی را از کاربر دریافت کرده‬.3
.‫میدهد‬
using System;
using System.IO;
namespace p3
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter name of file: ");
string fileName = Console.ReadLine();
StreamReader myfile;
try
{
myfile = File.OpenText(fileName);
string line = " ";
do
{
line = myfile.ReadLine();
if (line != null)
{
Console.WriteLine(line);
}
}
‫‪444‬‬ ‫فایلها‬

‫;)‪while (line != null‬‬


‫}‬
‫)‪catch (Exception e‬‬
‫{‬
‫;)"‪Console.WriteLine("Error in file.‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه ابتدا با یک پیغام مناسب نام فایل را خوانده‪ ،‬در متغیر رشتهای ‪ fileName‬قرار میدهد‪ .‬سدپس‬
‫متغیر ‪ myFile‬را با نوع ‪ FileReader‬تعریف می کند تدا بتدوان اطالعدات آن فایدل را خواندد‪ .‬در ادامده فایدل را‬
‫بهصورت خواندنی بازکرده و دستگیره آن را در متغیر ‪ myFile‬قرار مدیدهدد‪ .‬در پایدان‪ ،‬رشدته ‪ line‬را تعریدف‬
‫کرده و خط به خط از ‪ myFile‬میخواند و بر روی صفحهنمایش نشان میدهد‪ .‬این کار را تا زمانی ادامده مدی‪-‬‬
‫دهد که ‪ line‬برابر ‪ null‬شود‪ .‬یعنی خطی در فایل موجود نباشد‪ .‬این دستورات را بین ‪ try‬و ‪ catch‬قرار میدهدد‬
‫تا چنانچه خطای رخ دهد‪ ،‬در بخش ‪ catch‬عبارت ‪ Error in file‬را نمایش دهد‪ .‬در خاتمه فایل را میبندد‪.‬‬

‫‪ .4‬برنامهای که یک رشته را خوانده با استفاده از کالس ‪ Logger‬در فایل ‪ log.txt‬در پوشه ‪ Data‬درایو‬
‫‪ D‬مینویسد‪.‬‬
‫;‪using System‬‬
‫‪namespace p4‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)" ‪Console.Write("Enter a string:‬‬
‫;)(‪string s = Console.ReadLine‬‬
‫;)‪Logger.Write(@"D:\data\log.txt", s‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫‪Logger‬‬ ‫این برنامه با پیغام مناسب رشتهای را خوانده و در متغیر ‪ s‬قرار میدهد‪ .‬سپس با اسدتفاده از کدال‬
‫رشته ‪ s‬را در فایل ‪ log.txt‬در پوشه ‪ Data‬درایو ‪ D‬مینویسد‪.‬‬
‫‪ 444‬فصل ششم‬

‫‪ .5‬برنامه ای که نام یک فایل متنی را خوانده و اطالعات فایل را بر روی صفحهنمایش نشان میدهد‪.‬‬
‫چنانچه تعداد خطوط فایل بیش از ‪ 22‬سطر باشد‪ ،‬پس از نمایش هر ‪ 22‬سطر یک مکث موقت میکند تا‬
‫کاربر کلیدی را فشار دهد‪.‬‬
‫متد )(‪ ،showData‬نام فایلی که میخواهد نمایش دهد را با پارامتر ‪ urlFile‬دریافت میکند و‬
‫اطالعات آن فایل را ‪ 22‬خط ‪ 22‬خط نمایش میدهد‪ .‬برای این منظور‪ ،‬ابتدا فایل متنی که نام آن در ‪urlFile‬‬
‫قرار دارد را بهصورت خواندنی بازکرده و اشارهرر آن در متغیر ‪ myFile‬با نوع ‪ FileReader‬قرار میدهد و‬
‫متغیر ‪( count‬تعداد خطوط نمایش دادهشده) را تعریف میکند و مقدار صفر را در آن قرار میدهد‪ .‬در ادامه‬
‫با استفاده از یک حلقه ‪ do….. while‬خط به خط از فایل ‪ myFile‬خوانده و بر روی صفحهنمایش نشان می‪-‬‬
‫دهد‪ .‬ارر تعداد خطوط نمایش دادهشده ‪ 22‬شود (یعنی ‪ count %22‬برابر صفر رردد‪ ،‬یک پیغام ‪Press any‬‬
‫‪ key to continue….‬را نمایش میدهد و این روند را تا زمانی ادامه میدهد که تمام خطوط فایل خوانده‬
‫شود‪ .‬در پایان‪ ،‬فایل ‪ myFile‬را میبندد‪.‬‬
‫متد )(‪ ،main‬با پیغام مناسبی نام فایل را خوانده در متغیر ‪ fileName‬قرار میدهد و با فراخوانی‬
‫)(‪ ShowData‬اطالعات فایلی که نام آن در ‪ fileName‬است را بهصورت صفحه به صفحهنمایش میدهد‪.‬‬
‫;‪using System‬‬
‫;‪using System.IO‬‬
‫‪namespace p5‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static public void ShowData(string urlFile‬‬
‫{‬
‫;)‪StreamReader myFile = new StreamReader(urlFile‬‬
‫;‪string line‬‬
‫;‪int count = 0‬‬
‫‪do‬‬
‫{‬
‫;)(‪line = myFile.ReadLine‬‬
‫)‪if (line != null‬‬
‫{‬
‫)‪if (count != 0 && count % 22 == 0‬‬
‫{‬
‫;)" ‪Console.WriteLine("Perss any key to continue ...‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫)‪if (line.Length > 79‬‬
‫;)‪line = line.Substring(0, 79‬‬
‫;)‪Console.WriteLine(line‬‬
‫}‬
‫;‪count++‬‬
‫}‬
‫;)‪while (line != null‬‬
‫;)(‪myFile.Close‬‬
‫}‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)" ‪Console.Write("Enter name of file:‬‬
‫;)(‪string fileName = Console.ReadLine‬‬
‫;)‪ShowData(fileName‬‬
‫}‬
‫‪444‬‬ ‫فایلها‬

‫}‬
‫}‬

‫‪ .6‬برنامه ای که نام یک فایل متنی را از کاربر دریافت کرده‪ ،‬سپس دو رشته را میخواند و در فایل متنی‬
‫بهجای رشته اول رشته دوم خواندهشده را جایگزین میکند و نتیجه را در فایلی به نام ‪ 2.txt‬در پوشه‬
‫‪ Data‬درایو ‪ D‬مینویسد‪.‬‬
‫متد )(‪ ،main‬ابتدا با پیغام مناسب نام یک فایل متنی را خوانده در متغیر ‪ fileName‬قرار میدهد‪ ،‬سپس‬
‫با پیغام دیگری رشته اول را میخواند و در متغیر ‪ oldString‬قرار میدهد‪ ،‬در ادامه با پیغام مناسب دیگری‬
‫رشته دوم را میخواند و در متغیر ‪ newString‬قرار میدهد و در پایان با فراخوانی متد )(‪ Replace‬بهجای‬
‫رشته ‪ oldString‬رشته ‪ newString‬در فایل ‪ fileName‬جایگزین میکند‪.‬‬
‫متد )(‪ ،Replace‬نام فایل )‪ ،(urlFile‬رشته قدیم )‪ (textReplace‬و رشته جدید )‪ (newText‬را بهعنوان‬
‫پارامتر دریافت کرده‪ ،‬فایلی که نام آن در ‪ urlFile‬قرار دارد را بهصورت خواندنی باز میکند و اشارهرر آن‬
‫را در ‪ myFileRd‬قرار میدهد و فایل ‪ 2.txt‬را در پوشه ‪ Data‬درایو ‪ D‬بهصورت نوشتن بازکرده (آن را ایجاد‬
‫میکند) و اشارهرر آن را در متغیر ‪ myFileWr‬قرار میدهد‪ .‬سپس با استفاده از یک حلقه تکرار اطالعات‬
‫فایل ‪ myFileRd‬را بهصورت خط به خط میخواند و در متغیر ‪ line‬قرار میدهد‪ .‬چون ‪ line‬رشته است با متد‬
‫‪ Replace‬بهجای مقدار ‪ textReplace‬مقدار ‪ newText‬را در ‪ line‬قرار میدهد و اکنون اطالعات ‪ line‬را در‬
‫فایل ‪ myFileWr‬مینویسد‪ .‬در پایان فایلهای ‪ myFileRd‬و ‪ myFileWr‬را میبندد‪.‬‬
‫;‪using System‬‬
‫;‪using System.IO‬‬
‫‪namespace p6‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫‪public static void ReplaceTextFile(string urlFile, string‬‬
‫)‪textReplace, string newText‬‬
‫{‬
‫; ;)‪StreamReader myfileRd = File.OpenText(urlFile‬‬
‫;)"‪StreamWriter myfileWr = File.CreateText(@"D:\data\2.txt‬‬
‫;" " = ‪string line‬‬
‫‪do‬‬
‫{‬
‫;)(‪line = myfileRd.ReadLine‬‬
‫)‪if (line != null‬‬
‫{‬
‫;)‪line = line.Replace(textReplace, newText‬‬
‫;)‪myfileWr.WriteLine(line‬‬
‫}‬
‫}‬
‫;)‪while (line != null‬‬
‫ فصل ششم‬444

myfileWr.Close();
myfileRd.Close();
}
static void Main(string[] args)
{
Console.Write("Enter name of file: ");
string fileName = Console.ReadLine();
Console.Write("Enter old string: ");
string oldString = Console.ReadLine();
Console.Write("Enter new string: ");
string newString = Console.ReadLine();
ReplaceTextFile(fileName, oldString, newString);
Console.ReadKey();
}
}
}

‫ سپس یک کاراکتر (حرف) را میخواند و تعداد تکرار حرف‬،‫ برنامه ای که نام فایل متنی را خوانده‬.7
.‫خواندهشده را در فایل شمارش کرده و نمایش میدهد‬
using System;
using System.IO;
namespace p7
{
class Program
{
static void Main(string[] args)
{
Console.Write("Name of file: ");
string fileName = Console.ReadLine();
Console.Write("Letter for count: ");
string letter = Console.ReadLine();
StreamReader myfile = File.OpenText(fileName);
string line;
int countLetter = 0;
do
{
line = myfile.ReadLine();
if (line != null)
for (int i = 0; i < line.Length; i++)
if (line.Substring(i, 1) == letter)
countLetter++;
}
while (line != null);
myfile.Close();
Console.WriteLine("Amount of letter: {0}",
countLetter);
Console.ReadKey();
}
}
}
‫‪444‬‬ ‫فایلها‬

‫در این برنامده ابتددا بدا پیغدام مناسدبی ندام فایدل و کداراکتر مدوردنظر را خواندده و بده ترتیدب در متغیرهدای‬
‫‪ FileName‬و ‪ letter‬قرار میدهد‪ .‬سپس فایلی که نام آن در ‪ fileName‬است را بهصورت خواندنی بدازکرده و‬
‫اشارهرر آن را در ‪ myFile‬قرار میدهد‪ .‬در ادامه با استفاده از یک حلقه ‪ do … while‬اطالعات فایل ‪myFile‬‬
‫را بهصورت خط به خط خوانده در متغیر ‪ line‬قرار میدهدد‪ .‬در داخدل حلقده هدر کداراکتر ‪ line‬را بدا کداراکتر‬
‫‪ letter‬مقایسه میکند‪ ،‬ارر این دو کاراکتر برابر باشند‪ countLetter ،‬را یدک واحدد اضدافه مدیکندد‪ .‬در پایدان‬
‫‪ myFile‬را میبندد و تعداد تکرار کاراکتر خواندهشده در فایل یعنی ‪ countLetter‬را نمایش میدهد‪.‬‬

‫‪ .8‬برنامهای که نام فایلی را خوانده‪ ،‬تعیین میکند که آیا فایل یک فایل ‪ BMP‬است یا خیر؟ فایلی با‬
‫نوع ‪ BMP‬است که بایت اول آن ‪ ox42‬و بایت دوم آن ‪ ox40‬باشد‪.‬‬
‫;‪using System‬‬
‫;‪using System.IO‬‬
‫‪namespace p8‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)" ‪Console.Write("Enter name of file:‬‬
‫;)(‪string fileName = Console.ReadLine‬‬
‫‪BinaryReader myFile = new‬‬
‫;))‪BinaryReader(File.Open(fileName, FileMode.Open‬‬
‫‪// Read data‬‬
‫;)(‪byte data1 = myFile.ReadByte‬‬
‫;)(‪byte data2 = myFile.ReadByte‬‬
‫‪//Close file‬‬
‫;)(‪myFile.Close‬‬
‫‪//Check Data‬‬
‫‪if ((data1 == 0x42) && (data2 == 0x4D)) // B M‬‬
‫;)"‪Console.WriteLine("It seems to be a BMP file‬‬
‫‪else‬‬
‫;)"‪Console.WriteLine("It DOES NOT seem to be a BMP file‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه ابتدا با پیغام مناسبی نام فایل موردنظر را خواندده‪ ،‬در متغیدر ‪ fileName‬قدرار مدیدهدد‪ ،‬سدپس‬
‫فایلی که نام آن در متغیر ‪ fileName‬است را بهصورت باینری بازکرده و اشارهرر آن را در متغیر ‪ myFile‬قدرار‬
‫میدهد‪ .‬در ادامه‪ ،‬یدک بایدت (بایدت اول) از فایدل ‪ myFile‬را خواندده در ‪ data‬قدرار مدیدهدد و بایدت دوم از‬
‫‪ myFile‬را میخواند و در ‪ data2‬قرار میدهد و فایل ‪ myFile‬را میبندد‪ .‬در پایان‪ ،‬ارر ‪ data1‬برابر با ‪ ox42‬و‬
‫‪ data2‬برابر با ‪ 0x4D‬باشد‪ ،‬پیغام ‪ it seems to be a BMP File‬را نمدایش مدیدهدد‪ ،‬وررنده پیغدام ‪it DOES‬‬
‫‪ NOT seem to be a Bmp file‬را نمایش میدهد‪.‬‬
‫ فصل ششم‬444

Data ‫ در پوشه‬1.dat ‫ در فایل باینری‬،‫ سن و تاریخ تولد فردی را دریافت کرده‬،‫ برنامه ای که نام‬.9
.‫ مینویسد‬D ‫درایو‬
using System;
using System.IO;
namespace p9
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter your name: ");
string name = Console.ReadLine();
Console.Write("Enter your age: ");
byte age = Convert.ToByte(Console.ReadLine());
Console.Write("Enter your year of birth: ");
int yearOfBirth = Convert.ToInt32(Console.ReadLine());
BinaryWriter file = new BinaryWriter(
File.Open(@"D:\data\1.dat", FileMode.Create));
//Write data
file.Write(name);
file.Write(age);
file.Write(yearOfBirth);
file.Close();
Console.ReadKey();
}
}
}
‫ و‬age ،name ‫ در متغیرهدای‬،‫ سن و سال توید را دریافت کدرده‬،‫ نام‬،‫ ابتدا با پیغامهای مناسبی‬،‫در این برنامه‬
‫ ایجداد مدیکندد و در پایدان‬D ‫ درایدو‬Data ‫ را در پوشده‬2.dat ‫ سپس فایدل بداینری‬.‫ قرار میدهد‬yearOfBrith
.‫ را در این فایل مینویسد و فایل را میبندد‬yearOfBrith ‫ و‬age ،name

‫ سن و سال تولد است را میخواند و اطالعات‬،‫ برنامه ای که نام یک فایل باینری که اطالعات آن نام‬.11
.‫آن را بر روی صفحهنمایش نشان میدهد‬
using System;
using System.IO;
namespace p10
{
class Program
{
static void Main(string[] args)
444 ‫فایلها‬

{
Console.Write("Enter name of file: ");
string fileName = Console.ReadLine();
BinaryReader inputFile = new
BinaryReader(File.Open(fileName, FileMode.Open));
string datas = inputFile.ReadString();
byte datab = inputFile.ReadByte();
int datai = inputFile.ReadInt32();
inputFile.Close();
Console.WriteLine(datas);
Console.WriteLine(datab);
Console.WriteLine(datai);
Console.ReadKey();
}
}
}
‫ سپس فدایلی‬،‫ قرار میدهد‬fileName ‫ در متغیر‬،‫در این برنامه ابتدا با پیغام مناسب نام فایل باینری را خوانده‬
inputFile ‫ است را بهصورت باینری و خواندنی باز میکند و اشارهرر آن را در‬fileName ‫که نام آن در متغیر‬
.‫قرار میدهد‬
‫ خواندده بده ترتیدب در متغیرهدای‬inputFile ‫ یک بایت و یک عدد صحیح را از فایدل‬،‫ یک رشته‬،‫در ادامه‬
‫ را بدر روی‬datai ‫ و‬datab ‫ و‬datas ‫ قرار میدهد و در پایان محتوی هر یک از متغیرهای‬datai ‫ و‬datat ،datas
.‫یک خط مجزا نمایش میدهد‬

‫ کلمات‬.‫ را دریافت کرده به یک برنامه در زبان جاوا تبدیل میکند‬C# ‫ برنامه یک برنامه به زبان‬.11
، ‫ به ترتیب باید به‬Console.Write ، bool ‫ و‬Console.WriteLine ، string ،bool ‫برای این منظور‬
.‫ تبدیل شوند‬System.Out.Print ‫ و‬System Out.Println ، String
using System;
using System.IO;
namespace p11
{
class Program
{
static void Main(string[] args)
{
string line;
Console.Write("Enter name of file: ");
string name = Console.ReadLine();
StreamReader iFile = File.OpenText(name+".cs");
StreamWriter oFile = File.CreateText(name + ".java");
do
{
line = iFile.ReadLine();
if (line != null)
‫ فصل ششم‬444

{
line = line.Replace("bool ", "boolean ");
line = line.Replace("string ", "String ");
line = line.Replace("Console.WriteLine",
"System.out.println");
line = line.Replace("Console.WriteL",
"System.out.print");
oFile.WriteLine(line);
}

} while (line != null);


iFile.Close();
oFile.Close();
Console.ReadKey();
}
}
}
CS ‫ قرار میدهد و سپس فایل برنامهی‬name ‫ در متغیر‬،‫در این برنامه ابتدا با پیغام مناسب نام فایل را خوانده‬
‫ قدرار مدیدهدد و فایدل جداوا را ایجداد کدرده و‬، iFile ‫را بهصورت خواندنی باز میکندد و اشدارهردر آن را در‬
‫ مدیخواندد و کلمدات مدوردنظر را‬iFile ‫ سپس خط به خط از فایدل‬.‫ قرار میدهد‬oFile ‫اشارهرر آن را در فایل‬
oFile ‫ و‬iFile ‫ در پایدان‬.‫ مینویسدد‬oFile ‫ را در فایل‬line ‫ قرار میدهد و‬line ‫جایگزین یکدیگر میکند و در‬
.‫را میبندد‬

‫ اطالعات فایل اول را برعکس (از آخرین خط‬،‫ برنامه ای که نام دو فایل متنی را از ورودی خوانده‬.12
.‫به اولین خط) در فایل دوم کپی میکند‬
using System;
using System.IO;
namespace p12
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter source file name: ");
string sourceFileName = Console.ReadLine();
Console.Write("Enter object file name: ");
string objectFileName = Console.ReadLine();
if (File.Exists(sourceFileName))
{
StreamReader myfileRd =
File.OpenText(sourceFileName);
string line;
int countLines = 0;
// Count lines of file
do
{
line = myfileRd.ReadLine();
444 ‫فایلها‬

if (line != null)
countLines++;
}
while (line != null);
myfileRd.Close();
// Write of array of lines
string[] lines = new string[countLines];
int countLine = 0;
myfileRd = File.OpenText(sourceFileName);
line = "";
do
{
line = myfileRd.ReadLine();
if (line != null)
{
lines[countLine] = line;
countLine++;
}
}
while (line != null);
myfileRd.Close();
// Write of file
StreamWriter myfileWr =
File.CreateText(objectFileName);
for (int i = lines.Length - 1; i > 0; i--)
myfileWr.WriteLine(lines[i]);
myfileWr.Close();
}
else
Console.WriteLine("The file no exists.");
Console.ReadKey();
}
}
}
‫ و‬sourceFileName ‫در این برنامه با نمایش پیغامهای مناسب نام دو فایل را میخواند و در متغیرهای‬
،(File.Exists(sourceFile Name)) ‫ موجود باشد‬sourceFileName ‫ ارر‬.‫ قرار میدهد‬objectFileName
‫فایل مربوطه را بهصورت فقط خواندنی باز میکند و تعداد خطوط این فایل را شمارش میکند (تعداد خطوط‬
‫ با نوع رشته‬lines ‫ فایل مربوطه را میبندد و در ادامه آرایهای به نام‬،)‫ قرار میدهد‬countLines ‫فایل را در‬
‫ را بهصورت فقط خواندنی باز‬source FileName ‫ سپس فایل‬.‫ ایجاد میکند‬countLines ‫( و طول‬String)
.‫ قرار میدهد و فایل را میبندد‬lines ‫ در آرایه‬،‫میکند و خط به خط از این فایل خوانده‬
‫ را از آخرین عنصر به اویین عنصر در این‬lines ‫ را ایجاد کرده و آرایه‬objectFileName ‫ فایل‬،‫در پایان‬
.‫فایل کپی میکند و فایل مربوطه را میبندد‬

‫ است یا خیر؟ فایلی با‬GIF ‫ تعیین میکند که آیا این فایل از نوع‬،‫ برنامهای که نام فایلی را خوانده‬.13
.‫" باشند‬GIF8" ‫ است که بایتهای اول تا چهارم آن‬GIF ‫نوع‬
‫ فصل ششم‬444

using System;
using System.IO;
namespace p13
{
class Program
{
static void Main(string[] args)
{
byte[] data = new byte[5];
Console.Write("Enter name of file: ");
string fileName = Console.ReadLine();
try
{
BinaryReader file = new
BinaryReader(File.Open(fileName, FileMode.Open));
for (int i = 0; i < 5; i++)
data[i] = file.ReadByte();
file.Close();
if (data[0] == Convert.ToByte('G') &&
data[1] == Convert.ToByte('I') &&
data[2] == Convert.ToByte('F') &&
data[3] == Convert.ToByte('8'))
Console.WriteLine("Its a GIF8" + data[4]);
else
Console.WriteLine("It not gif file");
}
catch (Exception e)
{
Console.WriteLine("Error al intentar abir el fichero.");
}
Console.ReadKey();

}
}
}
‫ ایجاد میکند و با یک پیغام مناسب نام فایل را‬5 ‫ و طول‬byte ‫ با نوع‬data ‫در این برنامه ابتدا آرایهای به نام‬
‫ را بهصورت باینری و فقط خواندنی باز‬fileName ‫ در ادامه فایل‬.‫ قرار میدهد‬fileName ‫خوانده و در متغیر‬
‫ چهار بایت ابتدای فایل را‬for ‫ سپس با استفاده از یک حلقه‬.‫ قرار میدهد‬File ‫میکند و اشارهرر آن را در‬
'I' ‫ بایت دوم برابر‬،(data [0]== 'G') 'G' ‫ ارر بایت اول برابر‬،‫ قرار میدهد و در پایان‬data ‫ در آرایه‬،‫خوانده‬
‫ پیغام‬،‫( باشد‬data[3]=='8' ) '8' ‫( و بایت چهارم برابر‬data[2]=='F' ) 'F' ‫ بایت سوم برابر‬،(data [1]== 'I')
.‫" و فایل را میبندد‬it not Gif file" ‫ وررنه پیغام میدهد که‬،‫مناسب میدهد‬

dat ‫ برنامهای که نا م فایلی را خوانده و اطالعات آن فایل را به حروف بزرگ تبدیل کرده با پسوند‬.14
.‫با همان نام در فایل دیگری مینویسد‬
using System;
using System.IO;
444 ‫فایلها‬

namespace p14
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter name of file: ");
string fileName = Console.ReadLine();
if (File.Exists(fileName))
{
StreamReader fileRw = File.OpenText(fileName);
StreamWriter fileWr =
File.CreateText(fileName.Substring(0,
fileName.Length - 3) + "dat");
string line;
do
{
line = fileRw.ReadLine();
if (line != null)
fileWr.WriteLine(line.ToUpper());
}
while (line != null);
fileRw.Close();
fileWr.Close();
Console.ReadKey();
}
}
}
}
‫ سدپس اردر فایدل‬.‫ قدرار مدیدهدد‬fileName ‫در این برنامه ابتدا با پیغام مناسبی نام فایل را خوانده در متغیدر‬
‫ قدرار‬file Rw ‫ آن را بهصورت فقط خواندنی باز مدیکندد و اشدارهردر آن را در‬،‫خواندهشده وجود داشته باشد‬
‫ قدرار خواهدد داد و در ادامده‬fileWr ‫ اشدارهردر آن را در‬،‫ ایجداد کدرده‬dat ‫ فایلی با همان نام با پیوندد‬،‫میدهد‬
-‫ مدی‬fileWr ‫ در فایدل‬،‫ را بهصورت خط به خط خوانده به حرف بدزر تبددیل کدرده‬fileRw ‫اطالعات فایل‬
.‫نویسد و در پایان هر دو فایل را میبندد‬

،‫ حروف کوچک آن را به حروف بزرگ تبدیل کرده‬،‫ برنامه ای که نام یک فایل باینری را خوانده‬.15
.‫ مینویسد‬UPP ‫در فایلی با همان نام و پسوند‬
using System;
using System.IO;
namespace p15
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter name of file: ");
string fileName = Console.ReadLine();
‫ فصل ششم‬444

if (File.Exists(fileName))
{
BinaryReader inFile = new BinaryReader(
File.Open(fileName, FileMode.Open));
string objectfileName=fileName.Substring(0,
fileName.Length - 3) + "Upp";
BinaryWriter outFile = new BinaryWriter(
File.Open(objectfileName, FileMode.Create));
long filesize = inFile.BaseStream.Length;
for (long i = 0; i < filesize; i++)
{
byte b = inFile.ReadByte();
if ((b >= Convert.ToByte('a')) &&
(b <= Convert.ToByte('z')))
b -= 32;
outFile.Write(b);
}
inFile.Close();
outFile.Close();
}
Console.ReadKey();
}
}
}
‫ سدپس اردر‬.‫ قرار میدهدد‬fileName ‫ در متغیر‬،‫در این برنامه ابتدا با پیغام مناسبی نام فایل باینری را خوانده‬
‫ قدرار‬inFile ‫ اشارهردر آن را در‬،‫ فایل موردنظر را بهصورت باینری و فقط خواندنی بازکرده‬،‫فایل موجود باشد‬
‫ قدرار مدیدهدد و فایدل‬object FileName ‫) و در فایدل‬UPP ‫میدهد و نام فایل مقصد را تویید کرده (با پسوند‬
.‫ قرار میدهدد‬outFile ‫ را بهصورت نوشتن و باینری ایجاد میکند و اشارهرر آن را در فایل‬objectFileName
‫ (بده تعدداد بایدتهدای‬for ‫ قدرار مدیدهدد و بدا یدک حلقده‬fileSize ‫ تعداد بایدتهدای فایدل اول را در‬،‫در ادامه‬
،‫' باشدد‬z' ‫' تدا‬a' ‫ بین‬b ‫ ارر‬،‫ قرار میدهد‬b ‫) کاراکتر به کاراکتر (بایت به بایت) از فایل میخواند و در‬fileSize
.‫ مینویسد و فایلها را میبندد‬outFile ‫ واحد آن کم کرده تا تبدیل به حرف بزر شود و آن را در‬22

‫ برنامه ای که نام فایل باینری را خوانده و اطالعات آن را در یک فایل باینری دیگر با همان نام و‬.16
.‫ مینویسد‬Inv ‫پسوند‬
using System;
using System.IO;
namespace p16
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter name of file: ");
string fileName = Console.ReadLine();
444 ‫فایلها‬

if (File.Exists(fileName))
{
BinaryReader inFile = new
BinaryReader(File.Open(fileName, FileMode.Open));
BinaryWriter outFile = new
BinaryWriter(File.Open(fileName.Substring(0,
fileName.Length - 3)+"Inv", FileMode.Create));
long filesize = inFile.BaseStream.Length;
for (long i = filesize - 1; i >= 0; i--)
{
inFile.BaseStream.Seek(i, SeekOrigin.Begin);
byte b = inFile.ReadByte();
outFile.Write(b);
}
inFile.Close();
outFile.Close();
}
Console.ReadKey();
}
}
}
‫ سدپس اردر‬.‫ قرار مدیدهدد‬fileName ‫ در متغیر‬،‫در این برنامه ابتدا با پیغام مناسب نام فایل باینری را خوانده‬
-‫ قرار می‬inFile ‫ آن را بهصورت فقط خواندنی و باینری باز میکند و اشارهرر آن را در‬،‫این فایل موجود باشد‬
‫ قدرار‬outFile ‫ اشدارهردر آن را در‬،‫ بهصورت باینری و نوشتن ایجاد کرده‬Inv ‫دهد و فایلی با همان نام با پسوند‬
‫ تدا‬fileSize-1 ‫ از‬for ‫ قرار میدهد و با استفاده از یک حلقده‬fileSize ‫ را در‬inFile ‫ در ادامه انداز فایل‬.‫میدهد‬
inFile.BaseStream.Seek ‫ انتقدددال مدددیدهدددد (دسدددتور‬for ‫ ابتددددا اشدددارهردددر فایدددل را بددده شدددمارنده‬o
‫ در پایدان‬.‫ مینویسد‬outFile ‫ از همان مکان میخواند و در فایل‬inFile ‫() و یک بایت از‬SeekOrgin.Begin)
.‫فایلها را میبندد‬

‫ بایتهای آن را رمزگذاری میکند و در فایلی با پسوند‬،‫ برنامهای که نام یک فایل متنی را خوانده‬.17
.‫ مینویسد‬Enc
using System;
using System.IO;
namespace p17
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter name of file: ");
string fileName = Console.ReadLine();
if (File.Exists(fileName))
{
string line;
StreamReader inputFile = File.OpenText(fileName);
‫ فصل ششم‬444

string objectfileName = fileName.Substring(0,


fileName.Length - 3) + "Enc";
StreamWriter outputFile =
File.CreateText(objectfileName);
do
{
line = inputFile.ReadLine();
if (line != null)
{
string newText = Encrepter.Encrypt(line);
outputFile.WriteLine(newText);
}
} while (line != null);
inputFile.Close();
outputFile.Close();
}
Console.ReadKey();
}
}
}
‫ آن‬،‫ قرار میدهد و ارر فایل موجدود باشدد‬fileName ‫ در متغیر‬،‫در این برنامه ابتدا نام فایل متنی را خوانده‬
‫ قرار مدیدهدد و ندام فایدل رمدز شدده را بدا‬inputFile ‫ را در‬،‫را بهصورت فقط خواندنی بازکرده و اشارهرر آن‬
‫ قرار میدهد و این فایل را بهصورت نوشتنی باز میکند و اشارهرر آن را در‬objectFileName ‫ در‬Enc ‫پسوند‬
Encrypt ‫ و متدد‬Encrepter ‫ قرار میدهد و در ادامه خطوط فایل را خط به خط میخواند و با کدال‬outFile
.‫ در پایان فایلها را میبندد‬.‫ مینویسد‬outputFile ‫خطوط را رمز کرده در فایل‬

‫ کلمات در فایل با‬.‫ تعداد کلمات آن را شمارش میکند‬،‫ برنامهای که نام فایل متنی را خوانده‬.18
.‫( از یکدیگر جدا میشوند‬Blank) ‫کاراکتر‬
using System;
using System.IO;
namespace p18
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter name of file: ");
string fileName = Console.ReadLine();
if (File.Exists(fileName))
{
StreamReader file = File.OpenText(fileName);
string line;
int amountOfWords = 0;
do
{
line = file.ReadLine();
if (line != null)
‫‪444‬‬ ‫فایلها‬

‫{‬
‫;)' '(‪string[] words = line.Split‬‬
‫;‪amountOfWords += words.Length‬‬
‫}‬
‫}‬
‫;)‪while (line != null‬‬
‫;)(‪file.Close‬‬
‫;)‪Console.WriteLine("Words: " + amountOfWords‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫این برنامه ابتدا نام فایل را با پیغام مناسب خوانده‪ ،‬در متغیدر ‪ fileName‬قدرار مدیدهدد‪ .‬در ادامده اردر فایدل‬
‫موجود باشد‪ ،‬آن را بهصورت خواندنی باز میکند و اشارهرر آن را در متغیر ‪ File‬قرار مدیدهدد‪ .‬سدپس تعدداد‬
‫کلمات فایل (یعنی )‪ (amountOfWord‬را برابر صفر قرار داده و در یدک حلقده تکدرار خدط بده خدط از فایدل‬
‫)‪ (File‬میخواند و با متد )‪ Split (….‬کلمات هر خط را جدا کرده در ‪ words‬قرار مدیدهدد و تعدداد کلمدات‬
‫)‪ (words,Length‬را با ‪ amountOfWords‬جمع مینماید و در پایان فایل مربوط را میبنددد و تعدداد کلمدات‬
‫آن را نمایش میدهد‪.‬‬

‫‪ .19‬برنامهای که نام یک فایل باینری را خوانده‪ ،‬ابتدا تشخیص میدهد این فایل یک فایل ‪ BMP‬است‬
‫یا خیر (فایلی ‪ BMP‬است که بایت اول و دوم آن به ترتیب ‪ ox42‬و ‪ ox4D‬باشد) و سپس عرض و ابتدا‬
‫فایل را نمایش میدهد (عرض و ارتفاع فایل ‪ BMP‬در بایت ‪ 18‬به بعد هر یک بهصورت یک عدد صحیح‬
‫قرار دارند)‪.‬‬
‫;‪using System‬‬
‫;‪using System.IO‬‬
‫‪namespace p19‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)" ‪Console.Write("Enter name of file:‬‬
‫;)(‪string fileName = Console.ReadLine‬‬
‫‪BinaryReader myFile = new‬‬
‫;))‪BinaryReader(File.Open(fileName, FileMode.Open‬‬
‫‪// Read data‬‬
‫;)(‪byte data1 = myFile.ReadByte‬‬
‫;)(‪byte data2 = myFile.ReadByte‬‬
‫‪//Close file‬‬
‫‪//Check Data‬‬
‫‪if ((data1 == 0x42) && (data2 == 0x4D)) // B M‬‬
‫{‬
‫;)‪myFile.BaseStream.Seek(18, SeekOrigin.Begin‬‬
‫;)(‪int width = myFile.ReadInt32‬‬
‫ فصل ششم‬444

int height = myFile.ReadInt32();


Console.WriteLine("Width: {0} pixels", width);
Console.WriteLine("Height: {0} pixels", height);
}
else
Console.WriteLine("It DOES NOT seem to be a BMP file");
myFile.Close();
Console.ReadKey();
}
}
}
‫ قرار میدهد و فایل بداینری را بدهصدورت‬fileName ‫ در متغیر‬،‫در این برنامه ابتدا نام فایل باینری را خوانده‬
‫ سددپس بایددت اول و دوم فایدل را بددا متددد‬.‫ قدرار مددیدهدد‬myFile ‫ اشددارهرددر آن را در‬،‫فقدط خواندددنی بدازکرده‬
data2= ‫ و‬data1== 0x42 ‫ در ادامده اردر‬،‫ قرار مدیدهدد‬data2 ‫ و‬data1 ‫ در متغیرهای‬،‫ خوانده‬ReadByte()
ReadInt32() ‫ بیتی با متد‬22 ‫ انتقال داده و دو عدد صحیح‬myFile ‫ فایل‬81 ‫ مکاننما را به بایت‬،‫= باشند‬0x4D
‫ فایدل‬،‫ در پایدان‬.‫ قرار میدهد و مقدار این دو متغیر را نمدایش مدیدهدد‬height ‫ و‬width ‫خوانده و به ترتیب در‬
.‫ را میبندد‬myFile

‫ در هنگام کپی‬.‫ برنامه ای که نام دو فایل را خوانده و فایل اولی را در فایل دومی کپی میکند‬.21
.‫ از فایل اولی میخواند و در فایل دومی مینویسد‬512 k ‫کردن هر مرحله‬
using System;
using System.IO;
namespace p20
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter name of input file: ");
string inputFile = Console.ReadLine();
Console.Write("Enter name of copy file: ");
string copyFile = Console.ReadLine();
const int BUFFER_SIZE = 512 * 1024;
byte[] data = new byte[BUFFER_SIZE];
FileStream inFile = File.OpenRead(inputFile);
FileStream outFile = File.Create(copyFile);
int amountRead;
do
{
amountRead = inFile.Read(data, 0, BUFFER_SIZE);
outFile.Write(data, 0, amountRead);
}
while (amountRead == BUFFER_SIZE);
inFile.Close();
outFile.Close();
444 ‫فایلها‬

Console.ReadKey();
}
}
}
copyFile ‫ و‬inputFile ‫در این برنامه با پیغامهای مناسب نام دو فایل را خواندده و بده ترتیدب در متغیرهدای‬
‫ در ادامه آرایهای بده ندام‬.‫( تعریف میکند‬512K) 512*1024 ‫ را ثابت‬BUFFER- SIZE ‫ سپس‬.‫قرار میدهد‬
copyFile ‫ و‬inputFile ‫ تعریف میکند و فایلهدای‬،‫ کیلو اطالعات در آن قرار میریرد‬512k ‫ که هر بار‬data
‫ در‬.‫ قدرار مدیدهدد‬outFile ‫ و‬inFile ‫را به ترتیب بهصورت خواندنی و نوشتنی بازکرده و اشارهرر آنهدا را در‬
inFile ‫ مینویسد و این کدار تدا انتهدای‬outFile ‫ میخواند و در‬inFile ‫ از‬512k ‫ هر مرحله‬Read() ‫پایان با متد‬
.‫ را میبندد‬outFile ‫ و‬inFile ‫ سپس فایلهای‬.‫ادامه مییابد‬

‫ سپس اندازه (تعداد بایت) را میخواند و فایل اولی را با توجه‬،‫ برنامه ای که نام فایلی را خوانده‬.21
،001 ‫ همان نام فایل اصلی به همراه شمارههای‬،‫بهاندازه به چند فایل دیگر تقسیم میکند (شماره فایلها‬
.‫) میباشد‬...... ،002
using System;
using System.IO;
namespace p21
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter name of file: ");
string fileName = Console.ReadLine();
Console.Write("Enter Size: ");
int BUFFER_SIZE = int.Parse(Console.ReadLine());
FileStream myFile;
FileStream myNewFile;
int amountRead;
int count = 1;
byte[] data = new byte[BUFFER_SIZE];
try
{
myFile = File.OpenRead(fileName);
do
{
amountRead = myFile.Read(data, 0,
BUFFER_SIZE);
myNewFile = File.Create(fileName +
count.ToString("000"));
myNewFile.Write(data, 0, amountRead);
count++;
myNewFile.Close();
}
while (amountRead == BUFFER_SIZE);
myFile.Close();
‫‪ 444‬فصل ششم‬

‫}‬
‫)‪catch (Exception fileError‬‬
‫{‬
‫‪Console.WriteLine("ERROR has ocurred while‬‬
‫;)‪executing: " + fileError.Message‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه ابتدا با پیغام مناسبی نام فایل ورودی را خوانده‪ ،‬در متغیر ‪ fileName‬قرار میدهدد‪ ،‬و بدا پیغدام‬
‫مناسب اندازه هر فایل را میخواند و در متغیر ‪ BUFFER- SIZE‬قدرار مدیدهدد و متغیرهدای ‪ myFile‬و متغیدر‬
‫‪ myNewFile‬را با نوع ‪ FileStream‬تعریف میکند‪ .‬متغیرهای ‪( amount‬تعدداد بایدتهدایی کده از فایدل مدی‪-‬‬
‫خواند)‪( count ،‬تعداد فایلها و شماره هر فایل) و آرایه ‪( data‬تعداد بایتهدایی کده هدر مرحلده مدیخواندد) را‬
‫تعریف میکند‪ .‬در ادامه فایل ‪ myFile‬را بهصورت فقط خواندنی بداز مدیکندد و در یدک حلقده تکدرار در هدر‬
‫مرحله بهاندازه ‪ BUFFER - SIZE‬خوانده در ‪ amount Read‬قرار میدهد و فایلی با همان نام بهعدالوه مقددار‬
‫‪ count‬ایجاد میکند و اطالعات ‪ amount Read‬را در آن مینویسد‪ .‬سپس به ‪ count‬یک واحد اضافه میکندد‬
‫و فایل خروجی )‪ (myNewFile‬را میبندد‪ .‬این روندد را تدا پایدان اطالعدات ‪ myFile‬ادامده مدیدهدد‪ .‬در پایدان‬
‫‪ myFile‬را میبندد‪.‬‬

‫‪ .22‬برنامهای که نام یک فایل را خوانده‪ ،‬تشخیص میدهد که آیا این فایل ‪ BMP‬است یا خیر (فایلی‬
‫‪ BMP‬است که با بیتهای ‪ 0‬و یک آن به ترتیب کاراکترهای '‪ 'B‬و '‪ 'M‬باشند)‪.‬‬
‫;‪using System‬‬
‫;‪using System.IO‬‬
‫‪namespace p22‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪FileStream myFile‬‬
‫;)" ‪Console.Write("Enter the name of file:‬‬
‫;)(‪string fileName = Console.ReadLine‬‬
‫))‪if (!File.Exists(fileName‬‬
‫{‬
‫;)"!!!‪Console.WriteLine("The file not exists‬‬
‫;‪return‬‬
‫}‬
‫‪try‬‬
‫{‬
‫‪myFile = File.Open(fileName, FileMode.Open,‬‬
‫;)‪FileAccess.ReadWrite‬‬
‫;)(‪byte b1 = (byte)myFile.ReadByte‬‬
‫;)(‪byte b2 = (byte)myFile.ReadByte‬‬
444 ‫فایلها‬

if ((Convert.ToChar(b1) != 'B')
|| (Convert.ToChar(b2) != 'M'))
{
Console.WriteLine("This File is NOT a BMP file");
}
else
{
myFile.Seek(0, SeekOrigin.Begin);
myFile.WriteByte((byte)'M');
myFile.WriteByte((byte)'B');
}
myFile.Close();
}
catch (Exception e)
{
Console.WriteLine("Error: {0}!!!", "Error in File");
}
Console.ReadKey();
}
}
}
‫ نام فایل ورودی را با یک پیغام مناسدب‬،‫ تعریف کرده‬FileStream ‫ را با نوع‬myFile ‫این برنامه ابتدا متغیر‬
‫ ابتددا فایدل را بدهصدورت بداینری جهدت‬،‫ قرار میدهد و ارر فایل موجود باشد‬fileName ‫میخواند و در متغیر‬
b2 ‫ و‬b1 ‫ در‬،‫ قرار میدهد و دو بایت اول فایل را خوانده‬myFile ‫خواندن و نوشتن بازکرده و اشارهرر آن را در‬
‫ را نمدایش‬This file is Not a Bmp File ‫ پیغدام‬،‫' باشدد‬M' ‫' و‬B' ‫ به ترتیب مخدایف‬b2 ‫ یا‬b1 ‫ ارر‬.‫قرار میدهد‬
.‫ را میبندد‬myFile ‫' را مینویسد و‬M' ‫' و‬B' ‫ کاراکترهای‬myFile ‫ فایل‬8 ‫ و‬0 ‫ وررنه در بایت‬،‫میدهد‬

‫ کلمات آن را جدا کرده و هر کلمه را در یک سطر‬،‫ را خوانده‬CSV ‫ برنامهای که نام یک فایل‬.23


.‫ فایلهایی متنی هستند که کلمات آنها با کاما از یکدیگر جدا میشوند‬،CVS ‫ فایلهای‬.‫چاپ میکند‬
using System;
using System.IO;
namespace p23
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("CSV READER");
Console.WriteLine("--------------------------------------");
Console.Write("Enter name of file .csv: ");
string fileName = Console.ReadLine();
StreamReader myfile;
try
{
myfile = new StreamReader(fileName,
System.Text.Encoding.Default);
string line;
‫‪ 444‬فصل ششم‬

‫‪do‬‬
‫{‬
‫;)(‪line = myfile.ReadLine‬‬
‫))"" =! ‪if ((line != null) && (line‬‬
‫{‬
‫‪try‬‬
‫{‬
‫;)'‪string[] s = line.Split(',‬‬
‫)‪foreach (string item in s‬‬
‫{‬
‫;))(‪Console.WriteLine(item.Replace("\"", "").Trim‬‬
‫}‬
‫;)"============================="(‪Console.WriteLine‬‬
‫}‬
‫)‪catch (Exception e‬‬
‫{‬
‫;)‪Console.WriteLine("Error !!! " + e.Message‬‬
‫}‬
‫}‬
‫}‬
‫;)‪while (line != null‬‬
‫}‬
‫)‪catch (Exception e‬‬
‫{‬
‫;)‪Console.WriteLine("Error !!!" + e.Message‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه ابتدا با پیغام مناسب نام فایل ‪ CSV‬را خوانده و در متغیر ‪ fileName‬قرار میدهد‪ ،‬سدپس یدک‬
‫متغیر به نام ‪ myFile‬تعریف کرده‪ ،‬فایل خواندهشده را بهصورت فقط خواندنی باز میکند و اشارهردر آن را در‬
‫متغیر ‪ myFile‬قرار میدهد‪ .‬در ادامه خط به خط از ‪ myFile‬میخواند و در ‪ line‬قرار میدهد و کلمات ‪ line‬را‬
‫با متد )( ‪ Split‬جدا کرده‪ ،‬در آرایه ‪ s‬قرار میدهد‪.‬‬
‫در پایان‪ ،‬هر عنصر آرایه ‪ s‬را با ‪ foreach‬پیمایش میکند و بهجای کداراکتر « \ » کداراکتر ‪ (null) ....‬قدرار‬
‫داده و در خروجی مینویسد‪ .‬این روند را تا انتهای فایل ‪ myFile‬ادامه میدهد و فایل ‪ myFile‬را میبندد‪.‬‬
444 ‫فایلها‬

‫ برنامهای که نام دو فایل را میخواند و تعداد کاراکترهایی از فایل اول و دوم که نظیر به نظیر با هم‬.24
.‫برابرند را نمایش میدهد‬
using System;
using System.IO;
namespace p24
{
class Program
{
static void Main(string[] args)
{
int count = 0;
FileStream myFile1;
byte[] dataFile1;
FileStream myFile2;
byte[] dataFile2;
Console.Write("Enter the name of file1: ");
string fileName1 = Console.ReadLine();
Console.Write("Enter the name of file2: ");
string fileName2 = Console.ReadLine();
if ((!File.Exists(fileName1)) ||
(!File.Exists(fileName2)))
{
Console.WriteLine("The file 1 or file 2 not exists!!!");
return;
}
try
{
myFile1 = File.OpenRead(fileName1);
dataFile1 = new byte[myFile1.Length];
myFile1.Read(dataFile1, 0, (int)myFile1.Length);
myFile2 = File.OpenRead(fileName2);
dataFile2 = new byte[myFile2.Length];
myFile2.Read(dataFile2, 0, (int)myFile2.Length);
for (int i = 0; i < dataFile1.Length; i++)
if (dataFile1[i] == dataFile2[i])
count++;
myFile1.Close();
‫‪ 444‬فصل ششم‬

‫;)(‪myFile2.Close‬‬
‫}‬
‫)‪catch (Exception e‬‬
‫{‬
‫}‬
‫;)‪Console.WriteLine("Count is {0}", count‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫این برنامه ابتدا متغیرهای ‪( count‬تعداد کاراکترهای یکسان فایل اول و دوم)‪( myFile1 ،‬اشارهرر بده فایدل‬
‫اول) ‪( myFile2‬اشارهرر به فایل دوم)‪ ،‬آرایه ‪( dataFile1‬آرایهای که اطالعات فایل اول را نگهداری میکند)‪،‬‬
‫‪( dataFile2‬آرایهای که اطالعات فایل ‪ 2‬را نگهداری میکند) را تعریف میکند‪ ،‬سپس با پیغامهای مناسب ندام‬
‫فایل اول و دوم را میخواند و در متغیرهای ‪ fileName1‬و ‪ fileName2‬قرار میدهد‪ .‬در ادامه ارر یکی از فایل‬
‫اول یا دوم وجود نداشته باشند‪ ،‬پیغام خطای !!!‪ The file1 or file2 not exist‬ظاهر مدیشدود و برنامده خاتمده‬
‫مییابد‪ ،‬وررنه فایل اول )‪ (fileName1‬را بهصورت خواندنی بازکرده و اشارهرر آن را در ‪ myFile1‬قرار می‪-‬‬
‫دهد و فایل دوم را بهصورت خواندنی باز میکند و اشارهرر آن را در ‪ myFile2‬قرار میدهد و بایتهای فایدل‬
‫اول را میخواند و در آرایه ‪ dataFile1‬و بایتهدای فایدل دوم را خواندده در آرایده ‪ dataFile2‬قدرار مدیدهدد‪.‬‬
‫)‪.(myFile2. Read (dataFile2, 0, (int) myFile2, Lenath‬‬
‫در پایان کاراکتر به کاراکتر از فایل ‪ dataFile1‬را ‪ dataFile2‬مقایسه میکند و ارر برابدر باشدند بده ‪count‬‬
‫یک واحد اضافه مینماید و پس از پایان حلقه فایلهای ‪ myFile1‬و ‪ myFile2‬را میبندد‪.‬‬

‫‪ .25‬برنامهای که نام فایلی را خوانده و کاراکترهای قابلچاپ آن را در فایلی با همان نام بهعالوه ‪"01.‬‬
‫"‪ txt‬مینویسد‪.‬‬
‫;‪using System‬‬
‫;‪using System.IO‬‬
‫‪namespace p25‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪FileStream file‬‬
‫;)" ‪Console.Write("Enter the file name:‬‬
‫;)(‪string fileName = Console.ReadLine‬‬
‫))‪if (!File.Exists(fileName‬‬
‫;)‪Console.WriteLine("File {0} not found!", fileName‬‬
‫‪else‬‬
‫{‬
‫‪try‬‬
‫{‬
‫;)‪file = File.OpenRead(fileName‬‬
‫‪444‬‬ ‫فایلها‬

‫;]‪byte[] bytesFile = new byte[file.Length‬‬


‫;)‪file.Read(bytesFile, 0, (int)file.Length‬‬
‫;)(‪file.Close‬‬
‫‪StreamWriter newFile = new‬‬
‫;)"‪StreamWriter(fileName + "01.txt‬‬
‫)‪for (int i = 0; i < bytesFile.Length; i++‬‬
‫{‬
‫)‪if ((Convert.ToInt32(bytesFile[i]) >= 32‬‬
‫)‪&& (Convert.ToInt32(bytesFile[i]) <= 127‬‬
‫)‪|| (Convert.ToInt32(bytesFile[i]) == 10‬‬
‫))‪|| (Convert.ToInt32(bytesFile[i]) == 13‬‬
‫{‬
‫;))]‪newFile.Write(Convert.ToChar(bytesFile[i‬‬
‫}‬
‫}‬
‫;)(‪newFile.Close‬‬
‫}‬
‫)‪catch (Exception e‬‬
‫{‬
‫;)‪Console.WriteLine("Error, " + e.Message‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫}‬
‫در این برنامه ابتدا متغیر ‪ File‬با نوع ‪ FileStream‬تعریف میشود و با پیغام مناسدب ندام فایدل را خواندده در‬
‫متغیر ‪ fileName‬قرار میدهد‪ .‬سپس فایل را بررسی میکند که آیا وجود دارد یدا نده‪ .‬اردر ‪if (! File.Exists‬‬
‫))‪ (fileName‬فایل وجود نداشته باشدد‪ ،‬پیغدام «‪ Not found‬ندام فایدل ‪ »File‬را نمدایش مدیدهدد‪ ،‬وررنده فایدل‬
‫موردنظر را بازکرده و اشارهرر آن را در متغیر ‪ File‬قرار میدهد‪ .‬آرایهای به نام ‪ bytesFile‬به طول فایل تعریف‬
‫میکند و بایتهای فایل را میخواند و در آن قرار میدهد‪ ،‬درنهایت فایل )‪ (File‬را میبندد‪.‬‬
‫در پایان فایل "‪ fileName + "01.txt‬را بهصورت نوشتن باز میکند و اشارهردر آن را در ‪ new File‬قدرار‬
‫میدهد و با استفاده از یک حلقه تکرار‪ ،‬بایتهای ‪ bytesFile‬را پیمایش کرده و بایتهایی که کد اسکی آنها‬
‫بین ‪ 22‬و ‪ 821‬یا کاراکتر ‪ 81‬یا ‪ 82‬باشد را در فایل ‪ newFile‬مینویسد و درنهایت ‪ newFile‬را میبندد‪.‬‬

‫‪ .26‬برنامهای که نام یک فایل را خوانده‪ ،‬اطالعات آن را بهصورت متنی و مکان آن را بهصورت هگزا‬
‫دیسمال (مبنای ‪ )16‬بهصورت ‪ 22‬خط ‪ 22‬خط در هر صفحهنمایش میدهد‪.‬‬
‫متد )(‪ ،toHex‬داده ‪ n‬و تعداد ارقام )‪ (digits‬را بهعنوان پارامتر دریافت کرده‪ n ،‬را به رشدته مبندای ‪81‬‬
‫تبدیل میکند و ارر طول آن کمتر از ‪ digits‬بود‪ ،‬قبل از آن ‪ 0‬قرار میدهد تا طول رشته ‪ Hex‬به طدول ‪digits‬‬
‫شود و آن را برمیررداند‪.‬‬
‫متد )(‪ ،main‬در این متدد ابتددا متغیرهدای ‪ File‬بدا ندوع ‪ FileStream‬و ثابدت ‪ SIZE- BUFFER‬را بدا‬
‫مقدار ‪ 85‬تعریف میکند‪ .‬در ادامه با پیغام مناسب نام فایل ورودی را خوانده‪ ،‬در متغیدر ‪ fileName‬قدرار مدی‪-‬‬
‫ فصل ششم‬444

‫ قدرار مدیدهدد و‬File ‫ را بهصورت ورودی باز میکند و اشارهرر آن را در متغیدر‬fileName ‫ سپس فایل‬.‫دهد‬
‫ (تعدداد کاراکترهدای‬amount ‫ متغیرهدای‬،‫ تعریدف مدیکندد‬data ‫ بده ندام‬SIZE-BUFFER ‫آرایهای به طول‬
(do… ‫ در یدک حلقده تکدرار‬.‫ (تعداد خطوط نمایش دادهشده) را تعریف میکند‬C ‫خواندهشده در هر بار) و‬
» « ‫ سپس یک کاراکتر‬،‫ تبدیل میکند و نمایش میدهد‬81 ‫( را به مبنای‬File.Position) ‫ مکان فایل‬while)
‫ تبدیل میکند و نمایش میدهد و ایدن عمدل را تدا انتهدای‬81 ‫چاپ میکند و کاراکترهای فایل را نیز بر مبنای‬
.‫فایل انجام میدهد‬
using System;
using System.IO;
namespace p26
{
class Program
{
public static string ToHex(long n, int digits)
{
string hex = Convert.ToString(n, 16);
while (hex.Length < digits)
hex = "0" + hex;
return hex;
}
static void Main(string[] args)
{
FileStream file;
const int SIZE_BUFFER = 16;
Console.Write("Enter name of file: ");
string fileName = Console.ReadLine();
try
{
file = File.OpenRead(fileName);
byte[] data = new byte[SIZE_BUFFER];
int amount;
int c = 0;
string line="";
do
{
Console.Write(ToHex(file.Position, 8));
Console.Write(" ");
amount = file.Read(data, 0, SIZE_BUFFER);
for (int i = 0; i < amount; i++)
{
Console.Write(ToHex(data[i], 2) + " ");

if (data[i] < 32)


line += ".";
else
line += Convert.ToChar(data[i]);
}
if (amount < SIZE_BUFFER)
{
for (int i = amount; i < SIZE_BUFFER; i++)
{
Console.Write(" ");
}
444 ‫فایلها‬

}
Console.WriteLine(line);
line = "";
c++;
if (c == 22)
{
Console.ReadLine();
c = 0;
}
}
while (amount == SIZE_BUFFER);
file.Close();
}
catch (Exception)
{
Console.WriteLine("Error");
}
Console.ReadKey();
}
}
}

‫ برنامهای که نام فایلی را بهصورت آرگومان یا از ورودی میخواند و آن فایل را از دیسک حذف‬.27
.‫میکند‬
using System;
using System.IO;
namespace p27
{
class Program
{
static void Main(string[] args)
{
string fileName = "";
if (args.Length != 1)
{
Console.Write("Enter filename:");
fileName = Console.ReadLine();
‫ فصل ششم‬444

}
else
fileName = args[0];
Console.Write("\n Remove a file from the
disk ) :\n");
Console.Write("------------------------------------
--------------------------\n");
// Delete the file if it exists.
if (File.Exists(fileName))
{
File.Delete(fileName);
Console.WriteLine(" The file {0} deleted
successfully.\n\n", fileName);
}
else
{
Console.WriteLine(" File does not exist");
}
Console.ReadKey();
}
}
}
،‫ باشدد‬8 ‫ ارر تعداد آررومانهای خط فرمان مخدایف‬،‫ را تعریف کرده‬fileName ‫ ابتدا متغیر‬،‫در این برنامه‬
‫ (اویدین‬args[0] ‫ را برابدر‬fileName ‫ وررنه‬،‫ قرار میدهد‬fileName ‫نام فایل را از ورودی میخواند و در متغیر‬
File ‫ از کال‬Delete ‫ با متد‬،‫ در ادامه ارر فایل موجود باشد‬.‫آررومان خط فرمان همان نام فایل) قرار میدهد‬
.‫آن را حذف میکند و پیغام مناسب نمایش میدهد‬

‫ خطوطی که رشته‬،‫ خط را خوانده‬n ‫ را میخواند و‬n ‫ برنامهای که تعدادی رشته را خوانده و سپس‬.28
‫ مینویسد و در پایان‬،‫ در فایلی که نام آن را از ورودی میخواند‬،‫اول خواندهشده در آنها نباشد‬
.‫اطالعات فایل را نمایش میدهد‬
using System;
using System.IO;
namespace p28
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter filename:");
string fileName = Console.ReadLine();
string[] ArrLines;
string str;
int n, i;
Console.Write("\n\n Create and write some line of
text which does not contain a given string in
a line :\n");
444 ‫فایلها‬

Console.Write("----------------------------------
---------------------------------------------\n");
if (File.Exists(fileName))
{
File.Delete(fileName);
}
Console.Write(" Input the string to ignore the
line : ");
str = Console.ReadLine();
Console.Write(" Input number of lines to write in
the file : ");
n = Convert.ToInt32(Console.ReadLine());
ArrLines = new string[n];
Console.Write(" Input {0} strings below :\n", n);
for (i = 0; i < n; i++)
{
Console.Write(" Input line {0} : ", i + 1);
ArrLines[i] = Console.ReadLine();
}
using (System.IO.StreamWriter file =
new System.IO.StreamWriter(fileName))
{
foreach (string line in ArrLines)
{
if (!line.Contains(str))
{
file.WriteLine(line);
}
}
}
using (StreamReader sr = File.OpenText(fileName))
{
string s = "";
Console.Write("\n The line has ignored which
contain the string '{0}'. \n", str);
Console.Write("\n The content of the file is
:\n", n);
Console.Write("------------------------------
----\n");
while ((s = sr.ReadLine()) != null)
{
Console.WriteLine(" {0} ", s);
}
Console.WriteLine();
Console.ReadKey();
}
}
}
}
:‫در این برنامه اعمال زیر انجام میشود‬
.‫ قرار میدهد‬fileName ‫ در متغیر‬،‫ با پیغام مناسب نام فایل ورودی را خوانده‬.8
‫ (تعدداد‬n ‫ (شدمارنده) و‬i ،)‫ (رشته ورودی خواندهشده‬str ،)‫ (آرایهای از رشته ورودی‬arrLines ‫ متغیرهای‬.2
.‫خطوطی که باید بخواند) را تعریف میکند‬
‫‪ 444‬فصل ششم‬

‫‪ .2‬پیغام مناسب نمایش میدهد و ارر فایل وجود داشت آن را حذف میکند‪.‬‬
‫‪ .4‬با پیغام مناسب رشته )‪ (str‬و تعداد خطوطی که باید بخواند )‪ (n‬را میخواند‪.‬‬
‫‪ .5‬آرایهای به طول ‪ n‬عنصر به نام ‪ arrLines‬تعریف کدرده و بدا پیغدام مناسدب و یدک حلقده تکدرار ‪ n‬سدطر‬
‫خوانده‪ ،‬در این آرایه قرار میدهد‪.‬‬
‫‪ .1‬فایل ‪ fileName‬را بهصورت نوشتنی بازکرده‪ ،‬اشارهرر آن را در متغیر ‪ File‬قرار میدهد‪.‬‬
‫با یک حلقه ‪ foreach‬خطوط آرایه ‪ arrLines‬را در ‪ line‬قرار میدهد و ‪line‬هایی که شامل ‪ str‬نباشد ‪(if‬‬ ‫‪.1‬‬
‫))‪ (! line (contains (str‬را در فایل با اشارهرر ‪ File‬مینویسد‪.‬‬
‫‪ .1‬در پایان فایل ‪ fileName‬را برای خواندن باز میکند و در اشارهرر ‪ str‬قرار میدهد و پیغام مناسبی نمایش‬
‫میدهد‪.‬‬
‫‪ .9‬در پایان خطوط فایل ‪ str‬را با حلقه ‪ while‬خوانده و در ‪ s‬قرار میدهد و ‪ s‬را نمایش میدهد‪ .‬این روندد را‬
‫تا پایان فایل ادامه میدهد‪.‬‬

‫‪ .29‬برنامهای که نام فایلی را خوانده‪ ،‬سپس ‪ n‬را میخواند و ‪ n‬سطر آخر فایل را از ابتدا به انتها نمایش‬
‫میدهد‪.‬‬
‫;‪using System‬‬
‫;‪using System.IO‬‬
‫‪namespace p29‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter filename:‬‬
‫;)(‪string fileName = Console.ReadLine‬‬
‫‪Console.Write(" Input number of lines to display‬‬
‫;)" ‪from end file :‬‬
‫;))(‪int n = Convert.ToInt32(Console.ReadLine‬‬
‫))‪if (File.Exists(fileName‬‬
‫{‬
‫;)‪string[] lines = File.ReadAllLines(fileName‬‬
‫;‪int start = 0‬‬
‫;‪if (n < lines.Length) start = lines.Length-n‬‬
‫)‪for (int i = start; i < lines.Length; i ++‬‬
444 ‫فایلها‬

Console.WriteLine(" {0}", lines[i]);


}

Console.ReadKey();
}
}
}
:‫در این برنامه اعمال زیر انجام میشود‬
‫ قدرار مدیدهدد و سدپس بدا پیغدام‬fileName ‫ با پیغام مناسب نام فایل را از ورودی مدیخواندد و در متغیدر‬.8
.‫ را میخواند‬n ‫مناسب‬
-‫ قدرار مدی‬lines ‫ خوانده و در آرایده‬ReadAllLines ‫ خطوط فایل را با متد‬،‫ ارر فایل وجود داشته باشد‬.2
.‫دهد‬
(lines. Length) ‫ (خط شروع نمایش) را برابر صفر قرار میدهد و ارر تعداد خطدوط فایدل‬strart ‫ متغیر‬.2
.‫ قرار میدهد‬lines.Length - n ‫ را برابر با‬strat ،‫ باشد‬n ‫بزر تر از‬
.‫ را نمایش میدهد‬ines ‫ تا انتهای آرایه‬start ‫ از خط‬for ‫ با استفاده از حلقه تکرار‬.4

‫ سطر انتهای فایل را از انتها به ابتدا نمایش‬n ‫ سپس‬،‫ را خوانده‬n ‫ برنامهای که نام یک فایل و عدد‬.31
.‫میدهد‬
using System;
using System.IO;
namespace p30
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter filename:");
string fileName = Console.ReadLine();
Console.Write(" Input number of lines to display from
end file : ");
int n = Convert.ToInt32(Console.ReadLine());
if (File.Exists(fileName))
{
string[] lines = File.ReadAllLines(fileName);
int end = 0;
if (n < lines.Length) end = lines.Length -n;
for (int i = lines.Length -1; i >= end; i--)
Console.WriteLine(" {0}", lines[i]);
}
Console.ReadKey();
}
}
}
:‫در این برنامه اعمال زیر انجام میشود‬
‫‪ 444‬فصل ششم‬

‫‪ .8‬با پیغامهای مناسب نام فایل و تعداد سطر را خوانده و به ترتیب در متغیرهای ‪ fileName‬و ‪ n‬قرار میدهد‪.‬‬
‫‪ .2‬ارر فایل موجود باشد‪ ،‬آنگاه‪:‬‬
‫تمام خطوط فایل را با متد ‪ ReadAllLines‬میخواند و در آرایه ‪ lines‬قرار میدهد‪.‬‬
‫متغیر ‪ end‬را تعریف کرده و مقدار ‪ 0‬را در آن قرار میدهد‪.‬‬
‫ارددر مقدددار ‪ n‬کوچددکتددر از تعددداد خطددوط فایددل )‪ (lines.Length‬باشددد‪ ،‬متغیددر ‪ end‬را برابددر ‪lines.‬‬
‫‪ Length-n‬قرار میدهد‪.‬‬
‫در پایان خطوط آرایه را از آخرین عنصر (سطر آخر) تا سطر ‪ end‬نمایش میدهد‪.‬‬

‫‪ .31‬برنامهای که نام یک فایل و ‪ n‬را خوانده‪ n ،‬سطر ابتدای فایل را از ابتدا به انتها نمایش میدهد‪.‬‬
‫;‪using System‬‬
‫;‪using System.IO‬‬
‫‪namespace p31‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter filename:‬‬
‫;)(‪string fileName = Console.ReadLine‬‬
‫‪Console.Write(" Input number of lines to display from‬‬
‫;)" ‪first file :‬‬
‫;))(‪int n = Convert.ToInt32(Console.ReadLine‬‬
‫))‪if (File.Exists(fileName‬‬
‫{‬
‫;)‪string[] lines = File.ReadAllLines(fileName‬‬
‫;‪int end = lines.Length‬‬
‫;‪if (n < lines.Length) end = n‬‬
‫)‪for (int i = 0; i < end; i++‬‬
‫;)]‪Console.WriteLine(" {0}", lines[i‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه اعمال زیر انجام میشود‪:‬‬
‫‪ .8‬نام فایل و ‪ n‬را با پیغام مناسب میخواند‪.‬‬
‫‪ .2‬ارر فایل وجود داشته باشد‪ ،‬آنگاه‪:‬‬
‫خطوط فایل را خوانده‪ ،‬در متغیر ‪ lines‬قرار میدهد‪.‬‬
‫متغیر ‪( end‬آخرین خطی که باید نمایش داده شود) را تعریف کرده و مقدار آن را ‪ lines. Length‬قدرار‬
‫میدهد‪.‬‬
‫‪444‬‬ ‫فایلها‬

‫ارر ‪ n‬کوچکتر از تعداد خطوط فایل )‪ (lines.Length‬باشد‪ n ،‬را در ‪ n‬قرار میدهد‪.‬‬


‫با استفاده از یک حلقه تکرار از اویین عنصر آرایه (اویدین سدطر فایدل) تدا ‪ n‬امدین عنصدر آرایده ‪ lines‬را‬
‫نمایش میدهد‪.‬‬

‫برنامهای که نام یک فایل و عدد ‪ n‬را خوانده‪ n ،‬سطر ابتدای فایل را از انتها به ابتدا نمایش می‪-‬‬ ‫‪.32‬‬
‫دهد‪.‬‬
‫;‪using System‬‬
‫;‪using System.IO‬‬
‫‪namespace p32‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter filename:‬‬
‫;)(‪string fileName = Console.ReadLine‬‬
‫‪Console.Write(" Input number of lines to display from‬‬
‫;)" ‪first file :‬‬
‫;))(‪int n = Convert.ToInt32(Console.ReadLine‬‬
‫))‪if (File.Exists(fileName‬‬
‫{‬
‫;)‪string[] lines = File.ReadAllLines(fileName‬‬
‫;‪int start = n-1‬‬
‫;‪if (n > lines.Length) start = n-lines.Length‬‬
‫)‪for (int i = start; i >=0; i--‬‬
‫;)]‪Console.WriteLine(" {0}", lines[i‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫این برنامه اعمال زیر را انجام میدهد‪:‬‬
‫‪ .8‬با پیغامهای مناسب نام فایل و تعداد سطرهایی که باید نمایش دهد را خوانده و به ترتیب در ‪ fileName‬و ‪n‬‬
‫قرار میدهد‪.‬‬
‫‪ .2‬ارر فایل وجود داشته باشد‪ ،‬آنگاه‪:‬‬
‫تمام خطوط فایل را با متد ‪ ReadAllLines‬میخواند و در آرایه ‪ lines‬قرار میدهد‪.‬‬
‫خط شروع نمایش )‪ (start‬را برابر ‪ n-1‬قرار میدهد‪.‬‬
‫‪n-‬‬ ‫ارر ‪ n‬بزر تر از تعداد خطوط فایل (تعداد عناصر آرایه ‪ )lines.Length‬باشد‪ start ،‬را برابر‬
‫‪ lines.Length‬قرار میدهد‪.‬‬
‫با استفاده از یک حلقه تکرار از عنصر ‪( start‬سطر ‪ start‬ام فایل) تا ابتدای فایل را نمایش میدهد‪.‬‬
‫‪ 444‬فصل ششم‬

‫برنامهای که نام فایلی را خوانده‪ ،‬اطالعات شماره سطرهای فرد آن را نمایش میدهد‪.‬‬ ‫‪.33‬‬
‫;‪using System‬‬
‫;‪using System.IO‬‬
‫‪namespace p33‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter filename:‬‬
‫;)(‪string fileName = Console.ReadLine‬‬
‫))‪if (File.Exists(fileName‬‬
‫{‬
‫;)‪string[] lines = File.ReadAllLines(fileName‬‬
‫)‪for (int i = 0; i < lines.Length; i += 2‬‬
‫;)]‪Console.WriteLine(" {0}", lines[i‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه اعمال زیر انجام میشود‪:‬‬
‫‪ .8‬نام فایل را با پیغام مناسب خوانده‪ ،‬در متغیر ‪ fileName‬قرار میدهد‪.‬‬
‫‪ .2‬ارر فایل وجود داشته باشد‪ ،‬آنگاه‪:‬‬
‫تمام خطوط فایل را خوانده‪ ،‬در آرایه ‪ lines‬قرار میدهد‪.‬‬
‫با استفاده از یک حلقه تکرار عناصر ‪ 0‬ام (همان عنصر سطر اول) تا انتهای فایل را نمایش میدهد‬
‫بهطوریکه عناصر با شماره اندیس زوج را نمایش میدهد (چون اندیس شروع عناصر آرایه صفر است‬
‫سپس اویین سطر اندیس آن صفر است)‪ .‬بنابراین‪ ،‬این حلقه که شمارنده آن زوج است عناصر با سطرهای‬
‫فرد را نمایش میدهد‪.‬‬

‫‪ .34‬برنامهای که نام یک فایل و عدد ‪ n‬را خوانده و از ‪ n‬امین سطر فایل تا انتهای فایل را نمایش‬
‫میدهد‪.‬‬
‫;‪using System‬‬
444 ‫فایلها‬

using System.IO;
namespace p34
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter filename:");
string fileName = Console.ReadLine();
Console.Write(" Input row number : ");
int n = Convert.ToInt32(Console.ReadLine());
if (File.Exists(fileName))
{
string[] lines = File.ReadAllLines(fileName);
for (int i = n-1; i < lines.Length; i ++)
Console.WriteLine(" {0}", lines[i]);
}
Console.ReadKey();
}
}
}
:‫در این برنامه اعمال زیر انجام میشود‬
‫ قرار‬n ‫ و‬fileName ‫ با پیغامهای مناسب نام فایل و شماره سطر شروع را خوانده و به ترتیب در متغیرهای‬.8
.‫میدهد‬
:‫ آنگاه‬،‫ موجود باشد‬fileName ‫ ارر فایل‬.2
.‫ قرار میدهد‬lines ‫ در آرایه‬،‫تمام خطوط فایل را خوانده‬
‫ امین عنصر آرایه) تا انتهای آرایه‬n-1 ‫ امین سطر (یعنی عنصر‬n ‫با استفاده از یک حلقه تکرار از‬
.‫( نمایش میدهد‬line.Liength)

.‫ تعداد خطوط فایل را نمایش میدهد‬،‫برنامهای که نام فایلی را خوانده‬ .35


using System;
using System.IO;
namespace p35
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter filename:");
string fileName = Console.ReadLine();
if (File.Exists(fileName))
{
‫‪ 444‬فصل ششم‬

‫;)‪string[] lines = File.ReadAllLines(fileName‬‬


‫‪Console.WriteLine("Count line is {0}",‬‬
‫;)‪lines.Length‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه نام فایل را با پیغام مناسب میخواند و در متغیر ‪ fileName‬قرار میدهد و ارر فایل وجود‬
‫داشته باشد‪ ،‬آنگاه خطوط فایل را با متد ‪ ReadAllLines‬میخواند و در آرایه ‪ lines‬قرار میدهد‪ .‬اکنون تعداد‬
‫عناصر آرایه )‪ (lines.Length‬تعداد خطوط فایل است‪.‬‬

‫‪ .36‬برنامه ای که نام دو فایل و یک کاراکتر را خوانده و از فایل اول کاراکتر خواندهشده را حذف‬
‫کرده و نتیجه را در فایل دوم مینویسد‪.‬‬
‫متد )(‪ ،main‬با پیغامهای مناسب نام فایل اول و دوم را خوانده‪ ،‬در متغیرهای ‪ nameFile1‬و ‪name‬‬
‫‪ File2‬قرار میدهد‪ ،‬سپس یک کاراکتر را میخواند و در ‪ ch‬قرار میدهد و در پایان‪ ،‬با فراخوانی متد‬
‫)(‪ deleteCharFromFile‬کاراکتر خواندهشده را از فایل حذف کرده و بقیه اطالعات را در فایل دوم می‪-‬‬
‫نویسد‪.‬‬
‫و نام‬ ‫متد )(‪ ،deleteCharFromFile‬پارامترهای ‪( urlFile1‬آدر و نام فایل ‪( urlFile2 ،)8‬آدر‬
‫فایل ‪ )2‬و ‪( oldChar‬رشتهای که باید حذف شود) را دریافت میکند و اعمال زیر را انجام میدهد‪:‬‬
‫‪ .8‬رشته ‪ null text‬را تعریف کرده‪ ،‬رشته ‪ null‬را در آن قرار میدهد‪.‬‬
‫‪ .2‬فایل ‪ urlFile1‬را بهصورت فقط خواندنی بازکرده و آدر آن را در ‪ myFileRd‬قرار میدهد و فایل با‬
‫آدر و نام ‪ urlFile2‬را بهصورت نوشتنی باز میکند و آدر آن را در ‪ myFileWr‬قرار میدهد‪.‬‬
‫‪ .2‬با استفاده از حلقه تکرار ‪ do…. while‬خطوط فایل ‪ myFileRd‬را خوانده در هر مرحله در ‪ line‬قرار‬
‫میدهد و بهجای رشته ‪ oldChar‬کاراکتر ‪( nullText‬یعنی ‪ )null‬را جایگزین میکند و ‪ line‬را در فایل‬
‫‪ myFileWr‬مینویسد و این روند را تا انتهای فایل ادامه میدهد‪ .‬در پایان ‪ myFileWr‬و ‪ myFileRd‬را‬
‫میبندد‪.‬‬
‫;‪using System‬‬
‫;‪using System.IO‬‬
‫‪namespace p36‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫‪public static void deleteCharFromFile(string urlFile1,‬‬
‫)‪string urlFile2, string oldChar‬‬
‫{‬
‫;"" = ‪string nullText‬‬
‫; ;)‪StreamReader myfileRd = File.OpenText(urlFile1‬‬
444 ‫فایلها‬

StreamWriter myfileWr = File.CreateText(urlFile2);


string line = " ";
do
{
line = myfileRd.ReadLine();
if (line != null)
{
line = line.Replace(oldChar, nullText);
myfileWr.WriteLine(line);
}
}
while (line != null);
myfileWr.Close();
myfileRd.Close();
}
static void Main(string[] args)
{
Console.Write("Enter name of file1: ");
string nameFile1 = Console.ReadLine();
Console.Write("Enter name of file2: ");
string nameFile12= Console.ReadLine();
Console.Write("Enter a char: ");
char ch = Convert.ToChar(Console.ReadLine());
deleteCharFromFile(nameFile1, nameFile12,
ch.ToString());
Console.ReadKey();
}
}
}

‫ در‬kol.txt ‫ برنامهای که نام چند فایل را از ورودی میخواند و اطالعات آن فایلها را در فایل‬.37
‫ را فشار دهد (یعنی نام‬Enter ‫ ادغام میکند (برای خاتمه کاربر باید بهجای نام فایل‬D ‫ درایو‬Data ‫پوشه‬
.))‫فایل را وارد نکند‬
using System;
using System.IO;
namespace p37
{
class Program
{
static void Main(string[] args)
{
StreamWriter myfileWr =
File.CreateText(@"D:\Data\Kol.txt");
for (; ; )
{
Console.Write("Enter name of file: ");
string fileName = Console.ReadLine();
if (fileName.Length == 0) break;
‫ فصل ششم‬444

string[] lines = File.ReadAllLines(fileName);


for(int j= 0; j < lines.Length; j++)
{
myfileWr.WriteLine(lines[j]);
}
}
Console.ReadKey();
myfileWr.Close();
}
}
}
:‫در این برنامه اعمال زیر انجام میشود‬
.‫ را ایجاد میشود بهطوریکه بتوان در آن نوشت‬D ‫ درایو‬Data ‫ پوشه‬Kol.txt ‫ فایل‬.8
:‫ در یک حلقه بینهایت اعمال زیر را انجام میدهد‬.2
.‫ قرار میدهد‬fileName ‫با پیغام مناسب نام فایل بعدی را میخواند و در‬
.‫ حلقه بینهایت خاتمه مییابد‬break ‫ با دستور‬،‫ برابر با صفر‬fileName ‫ارر طول رشته‬
.‫ قرار میدهد‬lines ‫ ) و در آرایه‬ReadAllLines () ‫تمام خطوط فایل را میخواند (با متد‬
.‫ مینویسد‬myFileWr ‫ را در‬lines ‫با یک حلقه تکرار عناصر آرایه‬
.‫ را میبندد‬myFileWr ‫ در پایان‬.2

‫ برنامهای که نام سه فایل را از کاربر میخواند و خطوط فایلهای اول و دوم را یک دو میان در‬.38
.)‫ یک خط از فایل اول و یک خط از فایل دوم و همین روند را ادامه میدهد‬،‫فایل سوم مینویسد (یعنی‬
using System;
using System.IO;
namespace p38
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter name of file1: ");
string fileName1 = Console.ReadLine();
Console.Write("Enter name of file2: ");
string fileName2 = Console.ReadLine();
string[] lines1 = File.ReadAllLines(fileName1);
string[] lines2 = File.ReadAllLines(fileName2);
Console.Write("Enter name of file3: ");
string fileName3 = Console.ReadLine();
StreamWriter myfileWr =
File.CreateText(fileName3);
int minRecord = (lines1.Length < lines2.Length)?
lines1.Length:lines2.Length;
int i =0;
for (i = 0; i < minRecord; i++)
‫‪444‬‬ ‫فایلها‬

‫{‬
‫;)]‪myfileWr.WriteLine(lines1[i‬‬
‫;)]‪myfileWr.WriteLine(lines2[i‬‬
‫}‬
‫? )‪int maxRecord = (lines1.Length > lines2.Length‬‬
‫;‪lines1.Length : lines2.Length‬‬
‫;‪int j‬‬
‫) ‪if ( lines1.Length > lines2.Length‬‬
‫)‪for (j = i; j < maxRecord; j++‬‬
‫{‬
‫;)]‪myfileWr.WriteLine(lines1[j‬‬
‫}‬
‫‪else‬‬
‫)‪for (j = i; j < maxRecord; j++‬‬
‫{‬
‫;)]‪myfileWr.WriteLine(lines2[j‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫;)(‪myfileWr.Close‬‬
‫}‬
‫}‬
‫}‬
‫این برنامه اعمال زیر را انجام میدهد‪:‬‬
‫‪ .8‬با پیغامهای مناسب نام سه فایل را خوانده و در متغیرهای ‪ fileName2 ،fileName1‬و ‪ fileName3‬قرار‬
‫میدهد‪.‬‬
‫‪ .2‬اطالعات فایلهای ‪ fileName1‬و ‪ fileName2‬را خوانده در آرایههای ‪ lines1‬و ‪ lines2‬قرار میدهند‪.‬‬
‫‪ .2‬فایل سوم را ایجاد کرده‪ ،‬آدر آن را در ‪ myFileWr‬قرار میدهد‪.‬‬
‫‪ .4‬تعیین میکند که کدام فایل تعداد رکورد کمتری دارد و حداقل تعداد رکوردها را در ‪minRecord‬‬
‫قرار میدهد‪.‬‬
‫‪ .5‬با استفاده از یک حلقه تکرار از رکورد اول تا رکورد ‪ ،minRecord‬رکوردهای ‪ lines1‬و ‪ lines2‬را در‬
‫فایل ‪ myFileWr‬مینویسد‪.‬‬
‫‪ .1‬در پایان باقیمانده فایل اول یا فایل دوم را در ‪ myFileWr‬مینویسد‪.‬‬
‫‪ .1‬فایل ‪ myFileWr‬را میبندد‪.‬‬

‫‪ .39‬برنامها ی که نام یک فایل را خوانده و اطالعات فایل اول را بهطور معکوس (از آخرین خط به‬
‫اولین خط) در فایل ‪ newFile.txt‬در پوشه ‪ Data‬درایو ‪ D‬مینویسد‪.‬‬
‫;‪using System‬‬
‫;‪using System.IO‬‬
‫‪namespace p38‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫ فصل ششم‬444

static void Main(string[] args)


{
Console.Write("Enter name of file1: ");
string fileName1 = Console.ReadLine();
Console.Write("Enter name of file2: ");
string fileName2 = Console.ReadLine();
string[] lines1 = File.ReadAllLines(fileName1);
string[] lines2 = File.ReadAllLines(fileName2);
Console.Write("Enter name of file3: ");
string fileName3 = Console.ReadLine();
StreamWriter myfileWr =
File.CreateText(fileName3);
int minRecord = (lines1.Length < lines2.Length)?
lines1.Length:lines2.Length;
int i =0;
for (i = 0; i < minRecord; i++)
{
myfileWr.WriteLine(lines1[i]);
myfileWr.WriteLine(lines2[i]);
}
int maxRecord = (lines1.Length > lines2.Length) ?
lines1.Length : lines2.Length;
int j;
if ( lines1.Length > lines2.Length )
for (j = i; j < maxRecord; j++)
{
myfileWr.WriteLine(lines1[j]);
}
else
for (j = i; j < maxRecord; j++)
{
myfileWr.WriteLine(lines2[j]);
}
Console.ReadKey();
myfileWr.Close();
}
}
}
‫ قرار میدهد و سپس فایل‬fileName ‫ در متغیر‬،‫در این برنامه ابتدا با یک پیغام مناسب نام فایل را خوانده‬
‫ در ادامه اطالعات فایلی که نام‬.‫ قرار میدهد‬myFileWr ‫" را ایجاد کرده و اشارهرر آن را در‬newFile.txt"
‫ با استفاده از یک حلقه تکرار عناصر‬،‫ قرار میدهد و در پایان‬lines ‫ در آرایه‬،‫ است را خوانده‬fileName ‫آن در‬
‫ مینویسد و فایل‬myFileWr ‫) تا ابتدا در فایل‬lines.Length-1 ‫ را از آخرین عنصر (یعنی‬lines ‫آرایه‬
.‫ را میبندد‬myFileWr

‫ سپس دو عدد را میخواند و اطالعات فایل اول را در فایل دوم‬،‫ برنامهای که نام دو فایل را خوانده‬.41
.‫ بهطوریکه خطوط بین بازه بسته بین این دو عدد را در فایل دوم نمینویسد‬،‫مینویسد‬
using System;
444 ‫فایلها‬

using System.IO;
namespace p40
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter name of file1: ");
string fileName1 = Console.ReadLine();
Console.Write("Enter name of file2: ");
string fileName2 = Console.ReadLine();
StreamWriter myfileWr = File.CreateText(fileName2);
Console.Write("Enter line1: ");
int line1 = int.Parse(Console.ReadLine());
Console.Write("Enter line2: ");
int line2 = int.Parse(Console.ReadLine());
string[] lines = File.ReadAllLines(fileName1);
for (int i = 0; i < line1 -1 && i < lines.Length; i++)
{
myfileWr.WriteLine(lines[i]);
}
for (int i = line2; i < lines.Length; i++)
{
myfileWr.WriteLine(lines[i]);
}
myfileWr.Close();
Console.ReadKey();
}
}
}
:‫در این برنامه اعمال زیر انجام میشود‬
‫ قرار میدهد و فایل‬FileName2 ‫ و‬FileName1 ‫ در متغیرهای‬،‫ با پیغام مناسب نام دو فایل را خوانده‬.8
.‫ قرار میدهد‬myFileWr ‫( را بهصورت نوشتنی باز میکند و آدر آن را در‬FileName2) ‫اول‬
.‫ قرار میدهد‬Line2 ‫ و‬Line1 ‫ با پیغام مناسب دو عدد را خوانده و آنها را در‬.2
.‫ قرار میدهد‬Lines ‫ اطالعات فایل اول را خوانده و در آرایه‬.2
‫ فایل (یعنی عناصر آرایه) در فایل‬Line1 ‫ فایل تا خط‬0 ‫ از خط‬،For ‫ با استفاده از حلقه تکرار‬.4
.‫ مینویسد‬myFileWr
myFileWr ‫ تا انتهای آن را در فایل‬Lines ‫ به بعد آرایه‬Line2 ‫ با استفاده از حلقه تکرار دیگر از عنصر‬.5
.‫مینویسد‬
.‫ را میبندد‬myFileWr ‫ در پایان فایل‬.1
‫ فصل ششم‬444

.‫ بخش توسعه (پسوند فایل) را نمایش میدهد‬،‫ برنامهای که نام فایلی را خوانده‬.41
using System;
namespace p41
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter name of file: ");
string fileName = Console.ReadLine();
string[] fileNamePart = fileName.Split('.');
Console.WriteLine("Extention of file is {0}",
fileNamePart[fileNamePart.Length - 1]);
Console.ReadKey();
}
}
}
‫ سپس‬.‫ قرار میدهد‬fileName ‫در این برنامه ابتدا نام فایل را با یک پیغام مناسب میخواند و در متغیر‬
‫ قرار میدهد و آخرین نام فایل همان پسوند آن‬fileNamePart ‫' در آرایه‬.' ‫بخشهای نام فایل را با جداکننده‬
.‫) را نمایش میدهد‬FileNamePart [fileNamePart. Length- 1]‫(یعنی‬

‫\') را حذف کرده‬n' ‫ برنامهای که نام دو فایل را خوانده و از فایل اول تمام خطوط جدید (کاراکتر‬.42
.‫و در فایل دوم مینویسد‬
using System;
using System.IO;
namespace p42
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter name of file1: ");
string fileName1 = Console.ReadLine();
Console.Write("Enter name of file2: ");
string fileName2 = Console.ReadLine();
StreamWriter myfileWr = File.CreateText(fileName2);
string[] lines = File.ReadAllLines(fileName1);
for (int i = 0; i < lines.Length; i++)
{
lines[i] = lines[i].Replace('\n'.ToString(), "");
myfileWr.WriteLine(lines[i]);
}
myfileWr.Close();
Console.ReadKey();
}
}
}
444 ‫فایلها‬

‫ قرار‬fileName2 ‫ و‬fileName1 ‫ نام فایلها را با پیغامهای مناسب میخواند و در متغیرهای‬،‫در این فایل‬
‫ است بهصورت فقط نوشتنی باز میکند و اطالعات فایل‬fileName2 ‫ سپس نام فایلی که در‬.‫میدهد‬
‫ را پیمایش میکند و‬lines ‫ در ادامه خط به خط آرایه‬.‫ قرار میدهد‬lines ‫ را خوانده در آرایه‬fileName1
‫ را در‬lines ‫ را جایگزین میکند و سپس هر عنصر‬null ‫ کاراکتر‬lines ‫ \' در هر عنصر آرایه‬n' ‫بهجای کاراکتر‬
.‫ را میبندد‬myFileWr ‫ مینویسد و در پایان‬myFileWr

‫ تعداد کاراکترها و تعداد‬،‫ تعداد کلمات‬،‫ تعداد خطوط‬،‫ برنامهای که نام فایلی را خوانده‬.43
.‫کاراکترهای سفید آن را شمارش کرده و نمایش میدهد‬
using System;
using System.IO;
namespace p43
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter name of file: ");
string fileName = Console.ReadLine();
string[] lines = File.ReadAllLines(fileName);
int countLine = lines.Length;
int countWord = 0, countChar = 0, countWhite = 0;
for (int i = 0; i < lines.Length; i++)
{
foreach(char ch in lines[i])
{
if (char.IsWhiteSpace(ch)) countWhite++;
countChar++;
}
char [] sep={' ', ',', '.', '\t'};
countWord += lines[i].Split(sep).Length;
}
Console.WriteLine("Count of line is {0}", countLine);
Console.WriteLine("Count of word is {0}", countWord);
Console.WriteLine("Count of char is {0}", countChar);
Console.WriteLine("Count of white space is {0}",
countWhite);
Console.ReadKey();
}
}
}
:‫در این برنامه اعمال زیر انجام میشود‬
.‫ قرار میدهد‬fileName ‫ در‬،‫ با یک پیغام مناسب نام فایل را خوانده‬.8
.‫ قرار میدهد‬lines ‫ در آرایه‬،‫ خطوط فایل را خوانده‬.2
.‫ قرار میدهد‬countLine ‫) را در متغیر‬lines ‫ تعداد خطوط فایل (یعنی تعداد عناصر آرایه‬.2
‫ فصل ششم‬444

.‫ برابر صفر قرار میدهد‬،‫ را تعریف کرده‬countWhite ‫ و‬countChar ،countWord ‫ متغیرهای‬.4


‫) را پیمایش میکند و در داخل حلقه اعمال زیر‬lines ‫ با یک حلقه تکرار هر خط فایل (یعنی عناصر آرایه‬.5
:‫را انجام میدهد‬
.‫ را پیمایش میکند‬lines ‫ کاراکترهای هر خط آرایه‬foreach ‫با دستور‬
‫ به تعداد کاراکترهای فضای‬،)IsWhitespace () ‫ کاراکتر فضای سفید باشد (تابع‬،‫ارر هر کاراکتری‬
.‫( را یک واحد اضافه میکند‬countWhite) ‫سفید‬
.‫( یک واحد اضافه میکند‬countChar) ‫به تعداد کاراکترها‬
.‫ قرار میدهد‬sep ‫) را در آرایه‬....‫' و‬.' ، »,« ، '\n' ‫کاراکترهای جداکننده (از قبیل‬
‫ جمع‬countWord ‫ تعداد کلمات هر عنصر آرایه را شمارش میکند و این تعداد را به‬Splite () ‫با متد‬
.‫میکند‬
.‫ تعداد کاراکترها و تعداد فضای خایی را نمایش میدهد‬،‫ تعداد کلمات‬،‫ با پیغامهای مناسب تعداد خطوط‬.1

،‫ تعداد فضای سفید‬،‫ تعداد حروف بزرگ‬،‫ تعداد حروف کوچک‬،‫ برنامه ای که نام فایلی را خوانده‬.44
.‫ تعداد کاراکترهای کنترل و تعداد نمادهای آن را نمایش میدهد‬،‫تعداد ارقام‬
using System;
using System.IO;
namespace p44
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter name of file: ");
string fileName = Console.ReadLine();
string[] lines = File.ReadAllLines(fileName);
int countDigit = 0, countWhite = 0, countLower =0,
countUpper =0, countControl =0, countSymbol =0;
for (int i = 0; i < lines.Length; i++)
{
foreach (char ch in lines[i])
{
if (char.IsLower(ch)) countLower++;
else if (char.IsUpper(ch)) countUpper++;
else if (char.IsDigit(ch)) countDigit++;
else if (char.IsControl(ch)) countControl++;
else if (char.IsSymbol(ch)) countSymbol++;
else if (char.IsWhiteSpace(ch)) countWhite++;
}
}
Console.WriteLine("Count of lower is {0}",
‫‪444‬‬ ‫فایلها‬

‫;)‪countLower‬‬
‫‪Console.WriteLine("Count‬‬ ‫‪of upper is {0}",‬‬
‫;)‪countUpper‬‬
‫‪Console.WriteLine("Count‬‬ ‫‪of digit is {0}",‬‬
‫;)‪countDigit‬‬
‫‪Console.WriteLine("Count‬‬ ‫‪of control is {0}",‬‬
‫;)‪countControl‬‬
‫‪Console.WriteLine("Count‬‬ ‫‪of white space is {0}",‬‬
‫;)‪countWhite‬‬
‫‪Console.WriteLine("Count‬‬ ‫‪of symbol is {0}",‬‬
‫;)‪countSymbol‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه اعمال زیر انجام میشود‪:‬‬
‫‪ .8‬با پیغام مناسب نام فایل را خوانده‪ ،‬در متغیر ‪ fileName‬قرار میدهد‪.‬‬
‫‪ .2‬تمام خطوط فایل را خوانده‪ ،‬در آرایه ‪ lines‬قرار میدهد‪.‬‬
‫‪ .2‬متغیرهای ‪( countDigit‬تعداد ارقام)‪( countWhite ،‬تعداد کاراکترهای سفید)‪ ،‬تعداد حروف کوچک‬
‫)‪ ،(countLower‬تعداد حروف بزر )‪ ،(countUpper‬تعداد کاراکترهای کنترل )‪ (countControl‬و تعداد‬
‫نمادها )‪ (countSymbol‬را تعریف کرده و مقدار صفر را به آنها تخصیص میدهد‪.‬‬
‫‪ .4‬با یک حلقه تکرار عناصر آرایه ‪( lines‬هر خط فایل) را پیمایش میکند و در این حلقه هر کاراکتر هر‬
‫سطر فایل را در ‪ ch‬قرار میدهد‪ ،‬سپس با توابع )(‪،IsControl () ،IsDigit() ،IsUpper() ،IsLower‬‬
‫)(‪ IsSymbol‬و )(‪ ،IsWhitespace‬تعیین میکند که آیا کاراکتر یکی از کاراکترهای حروف کوچک‪،‬‬
‫حروف بزر ‪ ،‬رقم‪ ،‬کاراکتر کنترل‪ ،‬نماد یا فضای خایی است و به متغیر مربوطه یک واحد اضافه میکند‪.‬‬
‫‪ .5‬در پایان‪ ،‬با پیغام مناسب تعداد حروف کوچک‪ ،‬تعداد حروف بزر ‪ ،‬تعداد ارقام‪ ،‬تعداد کاراکترهای‬
‫کنتریی‪ ،‬تعداد فضای خایی و تعداد نمادها را نمایش میدهد‪.‬‬

‫‪ .45‬برنامه ای که نام فایلی را خوانده‪ ،‬سپس یک کلمه را میخواند و تعداد تکرار این کلمه در فایل را‬
‫شمارش میکند‪.‬‬
‫;‪using System‬‬
‫;‪using System.IO‬‬
‫‪namespace p45‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫‪ 444‬فصل ششم‬

‫;)" ‪Console.Write("Enter name of file:‬‬


‫;)(‪string fileName = Console.ReadLine‬‬
‫;)" ‪Console.Write("Enter word for search :‬‬
‫;)(‪string word = Console.ReadLine‬‬
‫;)‪string[] lines = File.ReadAllLines(fileName‬‬
‫;‪int count = 0‬‬
‫;}'!' ‪char [] sep={' ', '.', '\t', '\n', '?',‬‬
‫)‪for (int i = 0; i < lines.Length; i++‬‬
‫{‬
‫;)‪string [] Words=lines[i].Split(sep‬‬
‫)‪foreach (string eachWord in Words‬‬
‫;‪if (eachWord == word) count++‬‬
‫}‬
‫;)‪Console.WriteLine("Count is {0}", count‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه اعمال زیر انجام میشود‪:‬‬
‫‪ .8‬با پیغامهای مناسب نام فایل و کلمه موردنظر را خوانده‪ ،‬در متغیرهای ‪ fileName‬و ‪ word‬قرار میدهد‪.‬‬
‫‪ .2‬خطوط فایل ‪ fileName‬را خوانده‪ ،‬در آرایه ‪ lines‬قرار میدهد‪.‬‬
‫‪ .2‬متغیر تعداد تکرار کلمه در فایل )‪ (count‬را تعریف کرده و مقدار صفر را در آن قرار میدهد‪.‬‬
‫‪ .4‬آرایه ‪ sep‬را با نوع ‪ char‬تعریف کرده و کاراکترهای جداکنندههای از قبیل (' ' ‪ '\n' ، '\t' ،'.' ،‬و ' !') را‬
‫در عناصر آن قرار میدهد‪.‬‬
‫‪ .5‬با یک حلقه ‪ for‬تمام عناصر آرایه ‪ lines‬را پیمایش میکند و در داخل این حلقه ابتدا تعداد کلمات‬
‫تشکیلدهنده هر سطر را جدا کرده‪ ،‬در آرایه ‪ words‬قرار میدهد و سپس هر یک از این کلمات را پیمایش‬
‫میکند (با حلقه ‪ ،)foreach‬چنانچه این کلمه )‪ (eachWord‬برابر با ‪ word‬باشد‪ ،‬تعداد کلمات )‪ (count‬را یک‬
‫واحد اضافه میکند‪.‬‬
‫‪ .1‬در پایان تعداد کلمات )‪ (count‬را با یک پیغام مناسب نمایش میدهد‪.‬‬

‫برنامهای که نام فایلی را خوانده‪ ،‬حرف اول‪ ،‬وسط و آخر هر سطر را نمایش میدهد‪.‬‬ ‫‪.46‬‬
‫;‪using System‬‬
‫;‪using System.IO‬‬
‫‪namespace p46‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)" ‪Console.Write("Enter name of file:‬‬
444 ‫فایلها‬

string fileName = Console.ReadLine();


string[] lines = File.ReadAllLines(fileName);
string s="";
for (int i = 0; i < lines.Length; i++)
{
s = lines[i].Substring(0, 1).ToString() +
lines[i].Substring(lines[i].Length / 2-1, 1).ToString()
+ lines[i].Substring(lines[i].Length- 1, 1).ToString();
Console.Write("{0}\t", s);
}
Console.ReadKey();
}
}
}
‫ سپس‬،‫ قرار میدهد‬fileName ‫ با پیغام مناسبی نام فایل ورودی را خوانده در متغیر‬،‫در این برنامه ابتدا‬
‫ را در آن‬null ‫ را تعریف کرده و مقدار‬s ‫ در ادامه رشته‬،‫ قرار میدهد‬lines ‫خطوط فایل را میخواند و در آرایه‬
(lines ‫ کاراکترها اول‬،‫ عناصر آرایه را پیمایش کرده‬for ‫ در پایان با استفاده از یک حلقه تکرار‬،‫قرار میدهد‬
(lines [i].Substring (lines [i].Length/ 1-1, ‫ کاراکتر وسط‬،[i].Substring (0,1).ToString ( ) )
‫ قرار‬s ‫( را در‬lines [i].Substring (lines [i].Length- 1).ToString ()) ‫و کاراکتر آخر‬1).ToString () )
.‫ را نمایش میدهد‬s ‫میدهد‬

.‫ کاراکتر ابتدای فایلها را نمایش میدهد‬n ،‫( را خوانده‬n) ‫ برنامهای که نام فایلها و تعدادی عدد‬.47
.‫ عدد منفی وارد شود یا در نام فایل چیزی وارد نگردد‬n ‫این برنامه موقعی خاتمه مییابد که‬
using System;
using System.IO;
namespace p47
{
class Program
{
static void Main(string[] args)
{

for (; ; )
{
Console.Write("Enter name of file: ");
string fileName = Console.ReadLine();
Console.Write("Enter n : ");
int n = int.Parse(Console.ReadLine());
if (n <= 0 || fileName == "") break;
string[] lines = File.ReadAllLines(fileName);
int count = 0;
for (int i = 0; i < lines.Length && count !=n; i++)
{
foreach(char ch in lines[i])
{
‫‪ 444‬فصل ششم‬

‫;)‪Console.Write(ch‬‬
‫;‪count++‬‬
‫;‪if (count == n) break‬‬
‫}‬
‫}‬
‫;)(‪Console.WriteLine‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه اعمال زیر انجام میشود‪:‬‬
‫‪ .8‬یک حلقه بینهایت با ‪ for‬ایجاد میکند‪.‬‬
‫‪ .2‬با پیغامهای مناسب نام فایل و عدد را خوانده‪ ،‬در متغیرهای ‪ fileName‬و ‪ n‬قرار میدهد‪.‬‬
‫‪ .2‬ارر ‪ n‬کوچکتر از صفر یا نام فایل خایی وارد شود‪ ،‬حلقه ‪ for‬بینهایت با دستور ‪ break‬خاتمه مییابد‪.‬‬
‫‪ .4‬اطالعات فایل را خوانده و بهصورت سطر به سطر در آرایه ‪ lines‬قرار میدهد‪.‬‬
‫‪ .5‬تعداد کاراکترهای چاپشده را برابر صفر قرار میدهد )‪.(count= 0‬‬
‫‪ .1‬با یک حلقه تکرار خطوط آرایه ‪ lines‬را پیمایش میکند و در داخل این حلقه هر کاراکتر خط را‬
‫پیمایش کرده و با پیمایش هر کاراکتر آن کاراکتر را چاپ کرده و یک واحد به ‪ count‬اضافه میکند و ارر‬
‫‪ count‬برابر با ‪ n‬شود‪ ،‬از حلقه داخلی خارج میشود‪.‬‬

‫‪ .48‬برنامه ای که نام فایلی را خوانده‪ ،‬اطالعات آن فایل از قبیل نام کامل‪ ،‬پسوند فایل‪ ،‬نام دایرکتوری‪،‬‬
‫زمان ایجاد و زمان آخرین تغییرات اعمالشده در آن را نمایش میدهد‪.‬‬
‫;‪using System‬‬
‫;‪using System.IO‬‬
‫‪namespace p48‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)" ‪Console.Write("Enter name of file:‬‬
‫;)(‪string fileName = Console.ReadLine‬‬
‫;)‪FileInfo fileinfo = new FileInfo(fileName‬‬
‫;)‪Console.WriteLine("Name is {0}", fileinfo.Name‬‬
‫‪Console.WriteLine("Extension is {0}",‬‬
‫;)‪fileinfo.Extension‬‬
‫‪Console.WriteLine("Directory is {0}",‬‬
444 ‫فایلها‬

fileinfo.DirectoryName);
Console.WriteLine("Creation time is {0}",
fileinfo.CreationTime);
Console.WriteLine("Last Write time is {0}",
fileinfo.LastWriteTime);
Console.ReadKey();
}
}
}
‫ سپس یک نمونه از‬،‫ قرار میدهد‬fileName ‫در این برنامه ابتدا با پیغام مناسب نام فایل را خوانده در متغیر‬
،DirectoryName ،Extension ،Name ‫ و با استفاده از خواص‬،‫ ایجاد میکند‬fileInfo ‫ به نام‬FileInfo
‫ زمان ایجاد و زمان‬،‫ دایرکتوری‬،‫ پسوند‬،‫ به ترتیب نام‬،fileInfo ‫ نمونه‬LastWriteTime ‫ و‬CreationTime
.‫آخرین تغییر در فایل را با پیغامهای مناسب نمایش میدهد‬
‫پیوست الکترونیکی‬

‫ میزاا حقزوق او را‬،‫ برنامه ای که نرخ حقوق به ازای هر ساعت و تعداد ساعت کارکرد یک کارمند را خوانده‬.65
‫ حقوق خالص برابر با حقوق منهی‬.‫ درصد بهعنوا مالیات کسر میشود‬01 ‫محاسبه میکند و نمایش میدهد (از حقوق‬
.)‫مالیات است‬
‫هدف‬ ‫متغیر‬
using System;
namespace p56 ‫ساعت کارکرد کارمند‬ h
{
class Program ‫نرخ هر ساعت کارکرد‬ r
{ )‫مبلغ حقوق کارمند (مبلغ کل حقوق‬ tp
static void Main(string[] args)
{ ‫مبلغ مالیات‬ t
float r, h, tp, t, pp; pp
Console.Write("Enter hours::");
‫حقوق خالص‬
h = float.Parse(Console.ReadLine());
Console.Write("Enter rate::");
r = float.Parse(Console.ReadLine());
tp = h * r;
t = (float)tp / 10;
pp = (float)tp - t;
Console.WriteLine("Total payment:{0}", tp);
Console.WriteLine("Tax:{0}", t);
Console.WriteLine("Payment:{0}", pp);
Console.ReadKey();
}
}
}

.‫ فاصله بین آ دونقطه را محاسبه مینماید و نمایش میدهد‬،‫ برنامهای که مختصات دونقطه را دریافت کرده‬.65
‫فاصله بین دونقطه‬
using System; ‫هدف‬ ‫متغیر‬
namespace p57
{ ‫اول‬ ‫نقطه‬ x ‫مختصات‬ x 1
class Program
{ ‫دوم‬ ‫نقطه‬ x ‫مختصات‬ x 2

static void Main(string[] args) ‫ نقطه اول‬y ‫ مختصات‬y1


{
int x1, x2, y1, y2; ‫ نقطه دوم‬y ‫ مختصات‬y2
double d;
Console.Write("Enter x1:");
x1 = int.Parse(Console.ReadLine());
Console.Write("Enter x2:");
x2 = int.Parse(Console.ReadLine());
Console.Write("Enter y1:");
y1 = int.Parse(Console.ReadLine());
‫پیوست‬ 094

Console.Write("Enter y2:");
y2 = int.Parse(Console.ReadLine());
d = Math.Sqrt ((double)(x2 - x1) * (x2 - x1) +
(y2 - y1) * (y2 - y1));
Console.WriteLine("Distance is {0}", d);
Console.ReadKey();
}
}
}

‫ اوً تعیزین‬.‫ برای فرش کرد زمین نیاز اسزت‬،2× 1 ‫ موزاییکهایی به ابعاد‬.‫ وجود دارد‬01 × 01 ‫ زمینی به ابعاد‬.65
‫ آیا قسمتی از زمین میماند که با موزاییک فرش نشود؟‬.‫کنید چند موزاییک نیاز است‬
using System; ‫هدف‬ ‫متغیر‬
namespace p58
{ ‫ کل مساحت زمین‬1 s
class Program
{ ‫ مساحت یک موزاییک‬s2
static void Main(string[] args) ‫تعداد موزاییکهای موردنیاز‬ b
{
int s1, s2; .‫باقیمانده زمین که موزاییک نشده است‬ a
float b, a;
s1 = 13 * 16;
Console.WriteLine("s1 = {0}",s1);
s2 = 2 * 3;
Console.WriteLine("s2 = {0}",s2);
b = (float)s1 / s2;
a = s1 % s2;
Console.WriteLine("b = {0}", b);
Console.WriteLine("a = {0}", a);
Console.ReadKey();
}
}
}

‫ را از‬c ‫ و‬b ،a ‫ را نمایش مزیدهزد (برنامزه‬l2=y = ax +b ‫ و‬l1 = y = 3x +c ‫ برنامهای که نقطه تقاطع دو خط‬.65
:‫ مختصات نقطه تقاطع بهصورت زیر به دست میآید‬.)‫ورودی میخواند‬
x = (b – c) / (3 – a) y=3*x+c
using System; ‫هدف‬ ‫متغیر‬
namespace p59
{ ‫ خط دوم‬x ‫ضریب‬ a
class Program
{ ‫ثابت خط دوم‬ b
static void Main(string[] args) ‫ثابت خط اول‬ c
{
float a, b, c; ‫ نقطه تقاطع‬x ‫مختصات‬ x
float x, y; y
Console.Write("Enter a:");
‫ نقطه تقاطع‬y ‫مختصات‬
094 ‫الکترونیکی‬

a = int.Parse(Console.ReadLine());
Console.Write("Enter b:");
b = int.Parse(Console.ReadLine());
Console.Write("Enter c:");
c = int.Parse(Console.ReadLine());
x = (float)(b - c) / (3 - a);
y = 3 * x + c;
Console.Write("({0}, {1})", x, y);
Console.ReadKey();
}
}
}

.‫ را نمایش میدهد‬y = b * sin(a) ‫ مقدار‬،‫ را خوانده‬b ‫ و‬a ‫برنامهای که‬ .56


using System;
namespace p60
{
class Program
{
static void Main(string[] args)
{
int a, b;
double y;
Console.Write("Enter a:");
a = int.Parse(Console.ReadLine());
Console.Write("Enter b:");
b = int.Parse(Console.ReadLine());
y = a * Math.Sin ((b * 3.14 / 180));
Console.Write("y is {0}", y);
Console.ReadKey();
}
}
}

،‫ سپس بزه خزط بعزد مزیرود‬،‫ چهار بار بوق کامپیوتر را به صدا در میآورد‬،‫ را نمایش داده‬Four ‫ برنامهای که‬.56
.‫ بار بوق کامپیوتر را به صدا در میآورد‬5 ،‫ را نمایش داده‬Five
using System;
namespace p61
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine( "Four\a\a\a\a\nFive\a\a\a\a\a");
Console.ReadKey();
}
‫پیوست‬ 094

}
}

‫ و سه کاراکتر قلب‬1 ‫ و دو کاراکتر قلب و در پایا عدد‬2 ‫ سپس عدد‬،‫ برنامهای که عدد یک و یک کاراکتر قلب‬.56
.‫را نمایش میدهد‬
using System;
namespace p62
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("1\3\t2\0x03\0x03\t3\0x03\0x03\0x03");
Console.ReadKey();
}
}
}
double ‫ و‬float ،long ،int ،char ‫ برنامهای که تعداد بایتهایی را نمایش مزیدهزد کزه متغیرهزای بزا انزوا‬.56
.‫اشغال میکنند‬
using System;
namespace p63
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Size of char is {0}", sizeof(char));
Console.WriteLine("Size of int is {0}", sizeof(int));
Console.WriteLine("Size of long is {0}", sizeof(long));
Console.WriteLine("Size of float is {0}", sizeof(float));
Console.WriteLine("Size of double is {0}", sizeof(double));
Console.ReadKey();
}
}
}

‫ کاراکتر خواندهشده‬ch ‫ کد اسکی آ را نمایش میدهد (در این برنامه متغیر‬،‫ برنامهای که ی ک کاراکتر را خوانده‬.46
.)‫را نگهداری میکند‬
using System;
namespace p64
{
class Program
094 ‫الکترونیکی‬

{
static void Main(string[] args)
{
char ch;
Console.Write("Enter a char:");
ch = char.Parse(Console.ReadLine());
Console.WriteLine("{0}\t{1}", ch, (int) ch);
Console.ReadKey();

}
}
}

‫ عدد خواندهشزده زو اسزت یزا‬،‫ با استفاده از عملگر یا انحصاری تشخیص میدهد‬،‫ برنامه ای که عددی را خوانده‬.15
‫فرد؟‬
using System;
namespace p65
{
class Program
{
static void Main(string[] args)
{
int num, n = 1;
Console.Write("Enter a number:");
num = int.Parse(Console.ReadLine());
int x = num & n;
string s = (x !=0) ? num.ToString()+" is odd."
: num.ToString() + " is even.";
Console.WriteLine(s);
Console.ReadKey();
}
}
}

‫ امین بیت عزدد اول خوانزدهشزده را نمزایش‬n ‫ را میخواند و مقدار‬n ‫ سپس‬،‫ برنامه ای که ابتدا عددی را خوانده‬.11
.‫میدهد‬
using System;
namespace p66
{
class Program
{
static void Main(string[] args)
{
int num, n, bitStatus;
‫پیوست‬ 090

Console.Write ("Enter a number: ");


num =int.Parse(Console.ReadLine());
/* Input bit position you want to check */
Console.Write("Enter nth bit to check (0-31): ");
n = int.Parse(Console.ReadLine());
/* Right shift num, n times and perform bitwise AND with 1 */
bitStatus = (num >> n) & 1;
Console.WriteLine("The {0}th bit is set to {1}", n, bitStatus);
Console.ReadKey();
}
}
}
‫) را‬num ‫ امدین بیدت‬n ‫ (وضعیت یا مقددار‬bitState ‫ (بیت موردنظر) و‬n ،)‫ (عدد ورودی‬num ‫در این برنامه‬
.‫داریم‬
1 ‫ بیت با سمت راست شیفت داده و با‬n ‫ ابتدا عدد موردنظر را‬،‫ ام یک عدد‬n ‫این برنامه برای خواندن بیت‬
.‫و بیتی مینماید‬

.‫ (یک) قرار میدهد‬0 ‫ امین بیت عدد را برابر‬n ‫ را میخواند و‬n ‫ سپس‬،‫ برنامهای که ابتدا عددی را خواند‬.16
using System;
namespace p67
{
class Program
{
static void Main(string[] args)
{
int num, n, newNum;
Console.Write("Enter a number: ");
num = int.Parse(Console.ReadLine());
/* Input bit position you want to check */
Console.Write("Enter nth bit to check (0-31): ");
n = int.Parse(Console.ReadLine());
/* Left shift 1, n times and perform bitwise OR with num */
newNum = (1 << n) | num;

Console.WriteLine("Bit set successfully.");


Console.WriteLine("Number before setting {0} bit:{1}", n , num);
Console.WriteLine("Number after setting bit:{1} decimal",
n, newNum);
int bitStatus = (newNum >> n) & 1;
Console.WriteLine("The {0}th bit is set to {1}", n, bitStatus);
Console.ReadKey();
}
}
}
094 ‫الکترونیکی‬

‫ (عدد جدید پد از‬newNum ‫ (بیتی که باید یک شود) و‬n ،)‫ (عدد ورودی‬num ‫در این برنامه متغیرهای‬
‫ بیت به سمت چپ‬n ‫ یک را‬،num ‫ ام عدد‬n ‫ این برنامه برای یک کردن بیت‬.‫ ام) را داریم‬n ‫یک شدن بیت‬
.‫ یا بیتی میکند‬num ‫شیفت داده با‬

‫ امزین بیزت عزدد خوانزدهشزده را صزفر‬n ‫ را میخواند و‬n ‫ سپس‬،‫ برنامهای که ابتدا عددی را خوانده‬.16
.‫ را صفر مینماید‬55 ‫ امین بیت عدد‬4 ‫ شکل زیر‬،‫ بهعنوا مثال‬.‫مینماید‬
55 num(in decimal)
4 n(in decimal)
00000001 1(in binary)
00010000 1 << n
11101111 ~(1 << n)
00110111 num(inbinary)
00100111 Num &(~ (1 << n)
using System;
namespace p68
{
class Program
{
static void Main(string[] args)
{
int num, n, newNum;
Console.Write("Enter a number: ");
num = int.Parse(Console.ReadLine());
/* Input bit position you want to check */
Console.Write("Enter nth bit to check (0-31): ");
n = int.Parse(Console.ReadLine());
/* Left shift 1, n times and perform bitwise OR with num */
newNum = num & (~(1 << n));
Console.WriteLine("Bit cleared successfully.");
Console.WriteLine("Number before clearing {0}
bit:{1}", n, num);
Console.WriteLine("Number after clearing bit:{0}
decimal", newNum);
int bitStatus = (newNum >> n) & 1;
Console.WriteLine("The {0}th bit is set to {1}", n,
bitStatus);
Console.ReadKey();
}
}
}
‫ (عددد‬newNum ‫ آن باید صفر شدود) و‬num ‫ (عددی که شماره بیت‬n ،)‫ (عدد ورودی‬num ‫در این برنامه‬
.‫جدید) را داریم‬
‫پیوست‬ 094

‫ امزین بیزت عزدد خوانزدهشزده را‬n ‫ را میخوانزد و‬n ‫ سپس عدد‬،‫ برنامهای که ابتدا عددی را خوانده‬.16
.‫ چنانچه این بیت یک باشد به صفر و اگر صفر باشد به یک تبدیل مینماید‬،‫ یعنی‬.‫معکوس میکند‬
using System;
namespace p69
{
class Program
{
static void Main(string[] args)
{
int num, n, newNum;
Console.Write("Enter a number: ");
num = int.Parse(Console.ReadLine());
/* Input bit position you want to check */
Console.Write("Enter nth bit to check (0-31): ");
n = int.Parse(Console.ReadLine());
newNum = num ^ (1 << n);
Console.WriteLine("Bit toggled successfully.");
Console.WriteLine("Number before toggling {0} bit:{1}",
n, num);
Console.WriteLine("Number after toggling :{0} decimal",
newNum);
Console.ReadKey();
}
}
}
newNum ‫ اسدت کده بایدد مع دود )دردد) و‬num ‫ (شماره بیتی از عدد‬n ،)‫ (عدد ورودی‬num ‫در این برنامه‬
.‫(عدد جدید) را داریم‬
.‫ یا بیتی مینماید‬num ‫ بیت به سمت چپ شیفت میدهد و با‬n ‫) را‬1( ‫این برنامه ابتدا عدد یک‬

‫ با استفاده از عملگر یا انحصاری بیتی آ ها را باهم تعویض مینمایزد و‬،‫ برنامه ای که دو عدد را خوانده‬.61
:‫ مراحل انجام این کار در شکل زیر آمده است‬.‫نمایش میدهد‬
a 00011010 b 01000001 a 00011010
b ^ 01000001 x ^ 01011011 x ^ 01011011

x 01011011 a 00011010 b 01000001


094 ‫الکترونیکی‬
using System;
namespace p70
{
class Program
{
static void Main(string[] args)
{
int num1, num2;

/* Input two numbers from user */


/* Swap two numbers */
Console.Write("Enter number1: ");
num1 = int.Parse(Console.ReadLine());
Console.Write("Enter number2: ");
num2 = int.Parse(Console.ReadLine());
num1 ^= num2;
num2 ^= num1;
num1 ^= num2;
Console.WriteLine("Num1 = {0}", num1);
Console.WriteLine("Num2 = {0}", num2);
Console.ReadKey();
}
}
}
.‫ (عدد دوم) هستند‬num2 ‫ (عدد اول) و‬num1 ‫در این برنامه‬

‫ مساحت‬،‫ قاعده بارگ و ارتفا یک ذوزنقه خوانده‬،‫ برنامهای که سه عدد را به عنوا قاعده کوچک‬.60
:‫ مساحت ذوزنقه برابر با‬.‫ذوزنقه را نمایش میدهد‬
1 * ‫ قاعده کوچک) * ارتفا‬+ ‫(قاعده بارگ‬
2
.‫ قاعده بارگ و ارتفا ذوزنقه هستند‬،‫ به ترتیب قاعده کوچک‬c ،b ،a ‫در این برنامه‬
using System;
namespace p71
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter a: ");
int a = int.Parse(Console.ReadLine());
Console.Write("Enter b: ");
int b = int.Parse(Console.ReadLine());
Console.Write("Enter c: ");
int c = int.Parse(Console.ReadLine());
Console.Write("Area is {0}" , (float)1 / 2 * (a + b) * c);
Console.ReadKey();
}
}
‫پیوست‬ ‫‪094‬‬

‫}‬

‫‪ .62‬برنامه ای که عددی را خوانده‪ ،‬تمام بیتهای عدد خواندهشده را معکوس میکند‪ .‬یعنی‪ ،‬چنانچه بیزت‬
‫یک باشد به صفر و اگر صفر باشد‪ ،‬به یک تبدیل مینماید‪.‬‬
‫;‪using System‬‬
‫‪namespace p72‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int num, flippedNumber‬‬
‫;)" ‪Console.Write("Enter a number:‬‬
‫;))(‪num = int.Parse(Console.ReadLine‬‬
‫;‪flippedNumber = ~num‬‬
‫;)‪Console.WriteLine("Original number = {0} (in decimal)", num‬‬
‫‪Console.WriteLine("Number after bits are flipped = {0} (in decimal)",‬‬
‫;)‪flippedNumber‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه ‪( num‬عدد ورودی) و ‪( flippedNumber‬عددی اسدت کده بایدد بیدتهدای آن مع دود‬
‫)ردد) را داریم‪.‬‬

‫فصل‬
‫ادامه ساختار تصمیم و حلقه تکرار‬
‫‪2‬‬
‫‪ .001‬برنامهای که عددی را خوانده‪ ،‬تعیین میکند که مربع کامل است یا خیر؟ عددی مربع کامل است که‬
‫مجمو تعدادی اعداد فرد پشت سر هم از ‪ 0‬برابر آ عدد شود‪ .‬بهعنزوا مثزال‪ ،‬اعزداد زیزر مربزع کامزل‬
‫هستند‪:‬‬
‫‪9  1 3  5‬‬ ‫‪1 1‬‬
‫‪16  1  3  5  7‬‬ ‫‪4  1 3‬‬
‫;‪using System‬‬
099 ‫الکترونیکی‬

namespace p116
{
class Program
{
static void Main(string[] args)
{
int i = 1, sum = 0, n;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); ;
while (sum <= n)
{
sum += i;
if (sum == n)
break;
i += 2;
}
if (sum == n)
{
Console.Write("Yes"); ;
}
else
{
Console.Write("No");
}
Console.ReadKey();
}
}
}
‫ هددر عدددد دددرد و عدددد‬،‫ بدده ترتیددب در ایددن معمددوف اعددداد دددرد‬n ‫ و‬i ،sum ‫ متغیرهددای‬،‫در ایددن برنامدده‬
.‫خواندهشده هستند‬

:.‫ جمله سری زیر را نمایش میدهد‬n ‫ حاصل‬،‫ را خوانده‬x ‫ و‬n ‫ برنامهای که‬.006
x x x
x x3  x5 
2  4  8 
1! 2! 3!
using System;
namespace p117
{
class Program
{
static void Main(string[] args)
{
int i = 1, n, sign = 1;
float x, pow = 1, j = 2, sum = 0, fact = 1;
Console.Write("Enter x:");
x = int.Parse(Console.ReadLine()); ;
Console.Write("Enter n:");
‫پیوست‬ 444

n = int.Parse(Console.ReadLine()); ;
pow = x;
for (i = 1; i <= n; i++)
{
fact *= i;
sum += (pow + sign * x / j) / fact;
j *= 2;
pow *= x * x;
sign = -sign;
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}
‫ (شدمارنده‬i ،)x ‫ (توانهدای‬pow ،)‫ (اعداد ورودی‬n ‫ و‬x ،)‫ (معموف سری‬sum ‫در این برنامه متغیرهای‬
‫ (عالمت صورت کسر کده ی دی در‬sign ،).....‫ و‬14 ،8 ،6 ،2 ‫ که‬x ‫ (مخرج‬j ،)i ‫ (داکتوریل‬fact ،)n ‫ تا‬1 ‫از‬
.‫میان مثبت و منفی) را داریم‬

،015264 ‫ برای عزدد‬،‫ بهعنوا مثال‬.‫ ارقام زو آ را نمایش میدهد‬،‫ برنامهای که عددی را خوانده‬.006
pow ‫ (عدد با ارقزام زو ) و‬even ،)‫ (عدد ورودی‬n ‫ در این برنامه متغیرهای‬.‫ را نمایش خواهد داد‬24 ‫عدد‬
.‫) را داریم‬01 ‫(توا های از‬
using System;
namespace p118
{
class Program
{
static void Main(string[] args)
{
long n, even = 0, pow = 1;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); ;
while (n > 0)
{
if (n % 10 % 2 == 0)
{
even += n % 10 * pow;
pow *= 10;
}
n /= 10;
}
Console.Write( even);
Console.ReadKey();
}
}
}
‫الکترونیکی ‪444‬‬

‫‪ .006‬برنامهای که ‪ n‬را خوانده‪ ،‬یک مثلث بزه شزکل زیزر بزا ‪ n‬سزطر در خروجزی نمزایش‬
‫*‬ ‫می دهد‪ .‬دقت کنید که تنها دو ضلع باًیی مثلث از * کشیده مزیشزود و بقیزه بزا ‪ O‬رسزم‬
‫میگردند‪ .‬بهعنوا مثال‪ n=2 ،‬حاصل به شکل زیر خواهد بود‪:‬‬
‫* *‬ ‫اما‪ ،‬برای ‪ ،n =1‬حاصل به شکل زیر میباشد‪:‬‬
‫;‪using System‬‬
‫‪namespace p119‬‬
‫{‬
‫‪class Program‬‬
‫*‬
‫{‬
‫)‪static void Main(string[] args‬‬ ‫*‬ ‫*‬
‫{‬
‫;‪int i, j, n‬‬ ‫*‬ ‫*‬
‫;)"‪Console.Write("Enter n:‬‬
‫; ;))(‪n = int.Parse(Console.ReadLine‬‬
‫)‪for (i = 0; i < n; i++‬‬
‫*‬ ‫*‬
‫{‬
‫)‪or (j = 0; j < n - i - 1; j++‬‬ ‫*‬ ‫*‬
‫;)" "(‪Console.Write‬‬
‫)‪for (j = 0; j < i + 1; j++‬‬
‫)‪if (j == 0 || j == i‬‬ ‫*‬ ‫*‬
‫;)" *"(‪Console.Write‬‬
‫‪else‬‬
‫;)" ‪Console.Write("o‬‬
‫;)(‪Console.WriteLine‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه‪ ،‬متغیرهای ‪( n‬ورودی)‪( i ،‬شمارنده سطر) و ‪( j‬شمارنده ستون) را داریم‪.‬‬

‫‪ .121‬برنامهای که یک عدد خوانده‪ ،‬د ر خروجی یک عزدد را نمزایش دهزد کزه هزر رقزم آ یزک واحزد‬
‫اضافهشده است‪ .‬بهعنوا مثال‪ ،‬اگر کاربر عدد ‪ 0/ 45614‬وارد کند‪ ،‬در خروجی ‪ 51145‬چاپ شزود (رقزم ‪6‬‬
‫پیوست‬ 444

‫ (عدد نتیجزه پزس از افزاایش یزک‬result ،)‫ (عدد ورودی‬n ‫ در این برنامه متغیرهای‬.)‫به صفر تبدیل گردد‬
.‫ (هر رقم عدد قبل و بعد از افاایش یک واحدی) را داریم‬2 ‫) و‬01 ‫ (توا های از‬pow ،)‫واحدی هر رقم‬
using System;
namespace p120
{
class Program
{
static void Main(string[] args)
{
int n, result = 0, pow = 1;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); ;
while (n > 0)
{
int r = n % 10;
r++;
if (r == 10) r = 0;
result += r * pow;
pow *= 10;
n /= 10;
}
Console.WriteLine(result);
Console.ReadKey();
}
}
}

:‫میتوا از رابطه زیر استفاده کرد‬  ‫ برای محاسبه‬.020


 2 2 4 4 6 6
      
 ‫دریافزت کزرده و مقزدار‬
2 1 3 3 5 5 7
‫را بزا‬ ‫( را بهعنوا یک عدد صزحی‬n) ‫برنامه ای که تعداد جمالت سری فوق‬
.‫استفاده از این رابطه محاسبه کرده و نمایش میدهد‬
using System;
namespace p121
{
class Program
{
static void Main(string[] args)
{
int n;
float a = 0, b = 1, sum = 0;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); ;
for (int i = 1; i <= n; i++)
{
if (i % 2 == 0) a += 2;
else b += 2;
sum += (a / b);
}
sum *= 2;
‫الکترونیکی ‪444‬‬

‫;)‪Console.WriteLine(sum‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫مراحل حل این مسئله بهصورت جدول زیر میباشد‪:‬‬

‫مرحله‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪………..‬‬

‫صورت کسر‬ ‫‪2‬‬ ‫‪2‬‬ ‫‪4‬‬ ‫‪4‬‬ ‫‪6‬‬ ‫‪6‬‬ ‫‪8‬‬ ‫‪8‬‬ ‫…………‬

‫مخرج کسر‬ ‫‪1‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪5‬‬ ‫‪5‬‬ ‫‪7‬‬ ‫‪7‬‬ ‫‪9‬‬ ‫‪………...‬‬

‫همانطور که در این جدول میبینید‪ ،‬صورت در مراحل زوج با عدد ‪ 2‬جمع شده و مخرج در مرحله درد بدا‬
‫عدد ‪ 2‬جمع می)ردد‪.‬‬
‫در این برنامه متغیرهای ‪( n‬عدد ورودی تعداد جمالت سری)‪( I ،‬شمارنده ‪ 1‬تا ‪ Sum ،)n‬معموف سدری)‪a ،‬‬
‫(صورت کسر) و ‪( b‬مخرج کسر) را داریم‪.‬‬

‫‪ .122‬برنامهای که مختصات سهنقطه را از ورودی بگیرد و تعیین کند که آ سهنقطه هم خط هستند یا خیر؟‬
‫اگر سهنقطه هم خط بودند‪ ،‬خروجی برنامه‪ ،‬یک معادله بزهصزورت ‪ ax + by + c =0‬خواهزد بزود‪ ،‬وگرنزه‬
‫خروجی "‪ "No‬خواهد بود‪ .‬ورودی بهصورت شش عدد اعشاری خواهد بود که مختصات سزهنقطزه ‪ A‬و‪B‬‬
‫و‪ c‬را بیا میکند‪ .‬سهنقطه )‪ B(x2 , y2) ، A(x1 , y1‬و )‪ C(x3, y3‬را هم خط گویند‪ ،‬هرگاه شزیب دو خزط‬
‫قابلمحاسبه است‪.‬‬ ‫‪ AB‬و ‪ BC‬باهم برابر باشند‪ .‬شیب دو خط ‪ AB‬با ‪ X‬فرمول ‪y  y‬‬
‫‪m 2 1‬‬
‫‪x2  x1‬‬
‫همچنین‪ ،‬معادله خط ‪ AB‬بهصورت ‪ y  y  mx  x ‬نوشته میشود‪.‬‬
‫‪1‬‬ ‫‪1‬‬
‫;‪using System‬‬
‫‪namespace p122‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int n‬‬
‫;‪float x1, x2, x3, y1, y2, y3, m1, m2‬‬
‫;)"‪Console.Write("Enter x1:‬‬
‫; ;))(‪x1 = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter y1:‬‬
‫; ;))(‪y1 = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter x2:‬‬
‫پیوست‬ ‫‪440‬‬

‫; ;))(‪x2 = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter y2:‬‬
‫; ;))(‪y2 = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter x3:‬‬
‫; ;))(‪x3 = int.Parse(Console.ReadLine‬‬
‫;)"‪Console.Write("Enter y3:‬‬
‫; ;))(‪y3 = int.Parse(Console.ReadLine‬‬
‫;)‪m1 = (y2 - y1) / (x2 - x1‬‬
‫;)‪m2 = (y3 - y1) / (x3 - x1‬‬
‫)‪if (m1 != m2‬‬
‫;)"‪Console.Write("No‬‬
‫‪else‬‬
‫;)‪Console.Write("Y - {0} = {1} (x - {2})", y1, m1, x1‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫بزین دو مسزتطیل را‬ ‫‪ .121‬برنامه ای که مختصات دو مستطیل را از ورودی گرفته و مساحت ناحیهی مشزتر‬
‫حساب می نماید‪ .‬به ازاء هر مستطیل دونقطه (جمعا چهار عدد اعشاری) باید گرفته شود‪ .‬توجه کنید کزه هزر‬
‫مستطیل با استفاده از دونقطه میتواند به یکی از چهار فرم زیر نمایش داده شود‪.‬‬
‫‪poin‬‬ ‫‪poin‬‬ ‫‪poin‬‬ ‫‪poin‬‬

‫‪poin‬‬ ‫‪poin‬‬ ‫‪poin‬‬ ‫‪poin‬‬


‫بهعنوان نمونه‪ ،‬هدف این سؤال پیدا کردن ناحیه پررنگ بین دو مسدتطیل‬
‫زیر می باشد‪ .‬البته این احتمال وجود دارد کده ناحیده مشدترج وجدود نداشدته‬
‫باشد که در این صورت مساحت ناحیه مشترج صفر خواهد بود‪.‬‬
‫در این برنامه ‪ temp‬متغیر کم ی است‪.‬‬
‫;‪using System‬‬
‫‪namespace p123‬‬
‫{‬
‫‪class Program‬‬
‫{‬
444 ‫الکترونیکی‬

static void Main(string[] args)


{
float x1, x2, x3, y1, y2, y3, x4, y4,
xLength, yLength, temp;
Console.Write("Enter x1:");
x1 = int.Parse(Console.ReadLine()); ;
Console.Write("Enter y1:");
y1 = int.Parse(Console.ReadLine()); ;
Console.Write("Enter x2:");
x2 = int.Parse(Console.ReadLine()); ;
Console.Write("Enter y2:");
y2 = int.Parse(Console.ReadLine()); ;
Console.Write("Enter x3:");
x3 = int.Parse(Console.ReadLine()); ;
Console.Write("Enter y3:");
y3 = int.Parse(Console.ReadLine()); ;
Console.Write("Enter x4:");
x4 = int.Parse(Console.ReadLine()); ;
Console.Write("Enter y4:");
y4 = int.Parse(Console.ReadLine()); ;
if (x1 > x2)
{
temp = x1;
x1 = x2;
x2 = temp;
temp = y1;
y1 = y2;
y2 = temp;
}
if (y1 > y2)
{
temp = y1;
y1 = y2;
y2 = temp;
}
if (x3 > x4)
{
temp = x3;
x3 = x4;
x4 = temp;
temp = y3;
y3 = y4;
y4 = temp;
}
if (y3 > y4)
{
temp = y3;
y3 = y4;
y4 = temp;
}
if (x1 < x4 && x4 < x2)
{
if (x1 < x3 && x3 < x2)
xLength = x4 - x3;
‫پیوست‬ ‫‪444‬‬

‫‪else‬‬
‫;‪xLength = x4 - x1‬‬
‫}‬
‫‪else‬‬
‫{‬
‫)‪if (x1 < x3 && x3 < x2‬‬
‫;‪xLength = x2 - x3‬‬
‫‪else‬‬
‫;‪xLength = 0‬‬
‫}‬
‫)‪if (y1 < y4 && y4 < y2‬‬
‫{‬
‫)‪if (y1 < y3 && y3 < y2‬‬
‫;‪yLength = y4 - y3‬‬
‫‪else‬‬
‫;‪yLength = y4 - y1‬‬
‫}‬
‫‪else‬‬
‫{‬
‫)‪if (y1 < y3 && y3 < y2‬‬
‫;‪yLength = y2 - y3‬‬
‫‪else‬‬
‫;‪yLength = 0‬‬
‫}‬
‫;)‪Console.Write(xLength * yLength‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .024‬برای هر کسر بهصورت ‪ k( 1/k‬عدد صحی بارگتر از صفر و کوچکتر از ‪ ،)0111‬دو عدد صزحی ‪x‬‬
‫‪1 1 1‬‬
‫‪ ‬‬ ‫و ‪ y‬وجود دارد که عبارت مقابل برقرار باشد‪:‬‬
‫‪k x y‬‬
‫برنامهای که مقدار ‪ k‬را از دریافت میکند و تمام ‪ x‬و ‪y‬هایی که در این عبارت صدق مزیکننزد را نمزایش‬
‫میدهد‪ .‬توجه کنید اگر ‪ k‬در بازه درست نباشد‪ ،‬برنامه باید در خروجی هشدار خطا دهد‪.‬‬
‫نمونه ورودی‪ 02 :‬خروجی‬
‫‪1 1 1‬‬ ‫‪1 1 1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1 1‬‬ ‫‪1‬‬
‫‪ ‬‬ ‫‪ ‬‬ ‫‪ ‬‬ ‫‪ ‬‬
‫‪12 14 84‬‬ ‫‪12 15 60‬‬ ‫‪12 16 48‬‬ ‫‪12 13 156‬‬
‫‪1 1 1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬
‫‪ ‬‬ ‫‪‬‬ ‫‪‬‬ ‫‪ ‬‬ ‫‪ ‬‬
‫‪12 18 36‬‬ ‫‪12 20 30‬‬ ‫‪12 24 24‬‬ ‫‪12 21 28‬‬
444 ‫الکترونیکی‬

‫ بده‬y= kx/ (x-k) ،‫ را داشدته باشدیم‬x ‫ هستند و همچندین ا)در مقددار‬k ‫ بزرگتر از‬y ‫ و‬x ‫دقت کنید که‬
.‫دست میآید‬
using System;
namespace p124
{
class Program
{
static void Main(string[] args)
{
int k, x, y;
Console.Write("Enter k:");
k = int.Parse(Console.ReadLine()); ;
if (k < 0 || k > 1000)
{
Console.Write("Please enter k 1 to 1000");
}
else
{
for (x = k + 1; x <= 2 * k; x++)
{
y = (k * x) / (x - k);
if ((x * y) / (y + x) == k)
Console.WriteLine ("{0} / {1} = {2} / {3}
+ {4} / {5}", 1, k, 1, y, 1, y);
}
}
Console.ReadKey();
}
}
}

.‫ برنامهای که به روش تنصیف معادله زیر را تا چهار رقم اعشار حل میکند‬.025


x  ex  5 Fx   x  e x  5  0
‫( و‬xp) ‫ ی ی عددی که به ازای آن مقدار معادله مثبت باشد‬.‫برای حل این معادله دو تخمین اولیه نیاز داریم‬
.‫( میانگین دو تخمین قبل است‬xm) ‫ تخمین جدید در هر مرحله‬.(xn) ‫دیگری که مقدار منفی به معادله بدهد‬
using System;
namespace p125
{
class Program
{
static void Main(string[] args)
{
double xn, xp, xm;
xn = 0;
xp = 3;
do
‫پیوست‬ 444

{
xm = (xp + xn) / 2;
if (xm + Math.Exp (xm) - 5 > 0)
{
xp = xm;
}
else
{
xn = xm;
}
}
while ((xp - xn) > 1e-5);
Console.WriteLine("Result is {0}", xm);
Console.ReadKey();
}
}
}

.‫ جمله سری زیر را نمایش میدهد‬n ‫ حاصل‬، ‫ را خوانده‬n ‫ برنامهای که‬.021


1 1 1
1   
2 4 8
using System;
namespace p126
{
class Program
{
static void Main(string[] args)
{
int n;
double y = 1, sum = 0;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); ;
for (int i = 1; i <= n; i++)
{
sum += (1 / y);
y *= 2;
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}
.‫ (مخرج کسر) را داریم‬y ‫) و‬n ‫ تا‬1 ‫ (شمارنده از‬i ،)‫ (عدد ورودی‬n ‫در این برنامه متغیرهای‬

‫ مشزابه‬،‫ برنامه ای که همه حروف الفبای انگلیسی را به ترتیب چاپ میکند بهطوریکه هر حرف بارگ‬.026
.‫' میباشد‬Z' ‫' تا‬A' ‫ کد اسکی کاراکترهای‬ch ‫ در این برنامه‬.‫کوچک آ هم نمایش داده شود‬
449 ‫الکترونیکی‬
using System;
namespace p127
{
class Program
{
static void Main(string[] args)
{
int ch;
for (ch = 'A'; ch <= 'Z'; ch++)
{
Console.Write( "{0} = {1}\t",(char)ch,(char)(ch+32));
}
Console.ReadKey();
}
}
}

،‫ را از ورودی خوانزده‬،‫ برنامهای که تعدادی عدد را که بهصورت مرتبشده صعودی وارد مزیشزوند‬.026
.‫ برنامه خاتمه مییابد‬،‫ اگر عدد بعدی از عدد قبلی کمتر وارد شود‬.‫حاصل جمع آ ها را نمایش میدهد‬
using System;
namespace p128
{
class Program
{
static void Main(string[] args)
{
int n1, n2, sum = 0;
Console.Write("Enter first number:");
n1 = int.Parse(Console.ReadLine()); ;
for (; ; )
{
sum += n1;
Console.Write("Enter next number:");
n2 = int.Parse(Console.ReadLine()); ;
if (n2 < n1) break;
n1 = n2;
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}
‫ (معموف اعدادی کده بدهصدورت صدعود‬sum ‫ (عدد بعدی) و‬n2 ،)‫ (عدد قبلی‬n1 ‫در این برنامه متغیرهای‬
.‫واردشدهاند) را داریم‬
‫پیوست‬ 444

‫ نمزایش‬،‫ برنامه ای که دو عدد را خوانده و حاصل عبارت زیر را در بازه بین این دو عدد محاسبه کرده‬.026
‫ (شمارندهای برای شمارش بزازههزای‬t ،)‫ (دومین عدد‬n2 ،)‫ (اولین عدد‬n1 ‫ در این برنامه متغیرهای‬.‫میدهد‬
.‫ (حاصل عبارت) را داریم‬y ‫) و‬n2 ‫ تا‬n1 ‫اعداد‬
using System;
namespace p129
{
class Program
{
static void Main(string[] args)
{
int n1, n2, y;
Console.Write("Enter n1:");
n1 = int.Parse(Console.ReadLine()); ;
Console.Write("Enter n2:");
n2 = int.Parse(Console.ReadLine()); ;
for (int t = n1; t <= n2; t++)
{
if (t >= 0)
{
y = -3 * t * t + 5;
}
else
{
y = 3 * t * t + 5;
}
Console.WriteLine("Y({0}) = {1}\t ",t, y );
}
Console.ReadKey();
}
}
}
444 ‫الکترونیکی‬

:‫ جمله عبارت زیر را نمایش میدهد‬n ‫ حاصل‬،‫ را خوانده‬n ‫ و‬x ‫ برنامهای که‬.011
 x1 x3 x5
  
1 2 3  4 5  6
using System;
namespace p130
{
class Program
{
static void Main(string[] args)
{
int n, sign = -1, t = 1;
double x, sum = 0, pow = 1;
Console.Write("Enter x:");
x = double.Parse(Console.ReadLine()); ;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); ;
pow = x;
for (int i = 1; i <= n; i++)
{
sum = sum + sign * pow / (t * (t + 1));
pow *= (x * x);
t += 2;
sign = -sign;
}
Console.Write( "Sum is {0}", sum);
Console.ReadKey();
}
}
}
t ،)‫ (عالمدت ی دی در میدان منفدی و مثبدت‬sign ،)‫ (تعداد جمدالت‬n ،)‫ (ورودی‬x ‫در این برنامه متغیرهای‬
.‫) را داریم‬n ‫تا‬1 ‫ (شمارنده از‬i ‫) و‬x ‫ (توان‬pow ،)‫ (معموف سری‬sum ،)‫(برای تولید مخرج کسر‬

:‫ جمله عبارت زیر را حساب میکند‬n ‫ حاصل‬،‫ را خوانده‬n ‫ و‬x ‫ برنامهای که‬.111
x2 x4 x6
   
1 3 3  5 5  7
using System;
namespace p131
{
class Program
{
static void Main(string[] args)
{
int n, sign = -1, t = 2;
double x, sum = 0, pow = 1;
Console.Write("Enter x:");
x = double.Parse(Console.ReadLine()); ;
‫پیوست‬ 444

Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); ;
for (int i = 1; i <= n; i++)
{
pow *= (x * x);
sum = sum + sign * pow / ((t - 1) * (t + 1));
t += 2;
sign = -sign;
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}
‫ (برای‬t ،)‫ (عالمت جمالت‬sign ،)x ‫ (توان‬pow ،)‫ (تعداد جمالت‬n ،)‫ (ورودی‬x ‫در این برنامه متغیرهای‬
.‫) را داریم‬n ‫ تا‬1 ‫ (شمارنده از‬i ‫ (معموف سری) و‬sum ،)‫تولید مخرج کسر‬

.‫ نمایش میدهد‬،‫ جمله سری زیر را محاسبه کرده‬n ‫ حاصل‬،‫ را خوانده‬n ‫ و‬x ‫ برنامهای که‬.012
using System;
namespace p132
{
class Program
{
static void Main(string[] args)
{
int n, sign = 1, t = 1;
double x, sum = 0, pow = 1;
Console.Write("Enter x:");
x = double.Parse(Console.ReadLine()); ;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); ;
for (int i = 1; i <= n; i++)
{
pow *= x;
t *= 3;
sum = sum + sign * pow / (i * t);
sign = -sign;
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}
‫ (معمدوف‬sum ،)x ‫ (توانهدای‬pow ،)1 ‫ (توانهای‬t ،)‫ (تعداد جمالت سری‬n ،)‫ (ورودی‬x ‫در این برنامه‬
.‫) را داریم‬n ‫ تا‬1 ‫ (شمارنده از‬i ‫ (عالمت جمالت سری) و‬sign ،)‫سری‬
444 ‫الکترونیکی‬

:‫ جمله سری زیر را محاسبه کرده و نمایش میدهد‬n ‫ حاصل‬،‫ را خوانده‬n ‫ و‬x ‫ برنامهای که‬.011
2 x1 4 x2 8 x3
  
1 2 24 38
using System;
namespace p133
{
class Program
{
static void Main(string[] args)
{
int n, sign = 1, t = 1;
double x, sum = 0, pow = 1;
Console.Write("Enter x:");
x = double.Parse(Console.ReadLine()); ;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); ;
for (int i = 1; i <= n; i++)
{
pow *= x;
t *= 2;
sum = sum + sign * t * pow / (i + t);
sign = -sign;
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}
t ،)‫ (معمدوف سدری‬sum ،)‫ (عالمدت جمدالت‬sign ،)‫ (تعدداد جمدالت‬n ،)‫ (عدد ورودی‬x ‫در این برنامه‬
.‫) را داریم‬n ‫ تا‬1 ‫ (شمارنده از‬i ‫) و‬x ‫ (توانهای‬pow ،).....‫ و‬14 ،8 ،6 ،2 ‫(مقادیر‬

:‫ نمایش میدهد‬،‫ جمله سری زیر را محاسبه کرده‬n ‫ حاصل‬،‫ را خوانده‬n ‫ و‬x ‫ برنامهای که‬.014
x2 x3 x4
x   
5 25 125
using System;
namespace p134
{
class Program
{
static void Main(string[] args)
{
‫پیوست‬ 440

int n, t = 1;
double x, sum = 0, pow = 1;
Console.Write("Enter x:");
x = double.Parse(Console.ReadLine()); ;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); ;
for (int i = 1; i <= n; i++)
{
pow *= x;
sum = sum + pow / t;
t *= 5;
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}
sum ،)x ‫ (توانهای‬pow ،)‫ (مخرج کسر‬t ،)‫ (تعداد جمالت سری‬n ،)‫ (ورودی‬x ‫در این برنامه متغیرهای‬
.‫) را داریم‬n ‫تا‬1 ‫ (شمارنده از‬I ‫(معموف سری) و‬

‫( میخوانزد و معادلزه‬x, y) ‫ نقاط را بهصورت اعشاری‬n ‫ سپس بهاندازه‬،‫ را خوانده‬n ‫ برنامهای که ابتدا‬.015
:‫ صورتهای زیر محاسبه میشوند‬b ‫ و‬m .‫ را به دست آورد‬y= mx + b
m
 xy   y  x  b  y  mx
 xx   x  x 
‫ (مختصدات هدر‬y ‫ و‬x ،))‫ (تعداد نقدا‬n ‫ در این برنامه متغیرهای‬.‫ هستند‬x ‫ و‬y ‫ به ترتیب میانگین‬x ‫ و‬y
،)x*y ‫ (معمدوف‬sumXY ،)y ‫ (معمدوف مقدادیر‬sumY ،)x ‫ (معمدوف مقدادیر‬sumX ،)‫نقطه در هدر مرحلده‬
)n ‫ تا‬1 ‫ (شمارنده از‬i ‫ (مقدار ثابت خط) و‬b ،)‫ (ضریب خط‬m ،)y ‫ (میانگین‬meanY ،)x ‫ (میانگین‬meanX
.‫را داریم‬
using System;
namespace p135
{
class Program
{
static void Main(string[] args)
{
int n;
float x, y, sumX = 0, sumXX = 0, sumY = 0,
sumXY = 0, meanX = 0, meanY = 0, m, b;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine()); ;
for (int i = 1; i <= n; i++)
{
Console.Write("Enter x:");
x = float.Parse(Console.ReadLine()); ;
444 ‫الکترونیکی‬

Console.Write("Enter y:");
y = float.Parse(Console.ReadLine()); ;
sumX += x;
sumY += y;
sumXY += x * y;
sumXX += x * x;
}
meanX = sumX / n;
meanY = sumY / n;
m = (sumXY - meanY * sumX) / (sumXX - meanX * sumX);
b = meanY - m * meanX;
Console.Write("Y = {0} X + {1}", m, b);
Console.ReadKey();
}
}
}

4 ‫ برنامه ای که تعداد سطرها را خوانده و حاصل خروجی زیر را تولید میکنزد (بزرای تعزداد سزرهای‬.114
:).‫خروجی زیر را نمایش میدهد‬
using System;
namespace p136
{
1
class Program
{ 2 3
static void Main(string[] args)
{
int i, j, rows, k = 1; 4 5 6
Console.Write("Input number of rows : ");
rows = int.Parse(Console.ReadLine());
for (i = 1; i <= rows; i++)
7 8 9
{
for (j = 1; j <= i; j++) 10
Console.Write("{0}\t", k++ );
Console.WriteLine();
}
Console.ReadKey();
}
}
}
‫پیوست‬ ‫‪444‬‬

‫مدییابدد (بدرای‬ ‫در این برنامه متغیرهای ‪( rows‬تعداد سدطرها)‪( k ،‬شدمارنده از ‪ 1‬کده ی دیی دی اددزای‬
‫چاپ))‪( i ،‬شمارنده از ‪ 1‬تا تعداد سطرها) و ‪( j‬شمارنده از ‪ 1‬تا ‪ )i‬را داریم‪.‬‬

‫‪ .016‬برنامه ای که تعداد سطرها را خوانده و خروجی را با الگوی زیر نمایش میدهد (اگر تعداد سزطرها ‪4‬‬
‫باشد)‪:‬‬
‫;‪using System‬‬
‫‪namespace p137‬‬
‫{‬
‫‪class Program‬‬
‫‪1‬‬
‫{‬ ‫‪2 3‬‬
‫)‪static void Main(string[] args‬‬
‫{‬ ‫‪4 5 6‬‬
‫;‪int i, j, spc, rows, k, t = 1‬‬
‫;)" ‪Console.Write("Input number of rows :‬‬ ‫‪7 8 9 10‬‬
‫;))(‪rows = int.Parse(Console.ReadLine‬‬
‫;‪spc = rows + 4 - 1‬‬
‫)‪for (i = 1; i <= rows; i++‬‬
‫{‬
‫)‪for (k = spc; k >= 1; k--‬‬
‫{‬
‫;)" "(‪Console.Write‬‬
‫}‬
‫)‪for (j = 1; j <= i; j++‬‬
‫;)‪if (t < 10) Console.Write( "{0} ", t++‬‬
‫;)‪else Console.Write("{0} ", t++‬‬
‫;)(‪Console.WriteLine‬‬
‫;‪spc--‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫داده شود)‪( i ،‬شمارنده از ‪ 1‬تا ‪ ،rows‬برای‬ ‫در این برنامه متغیرهای ‪( rows‬تعداد سطرهایی که باید نمای‬
‫چاپ ‪ rows‬سطر)‪( spc ،‬تعداد دضای خالی که در ابتدای هر سطر باید چاپ شود)‪( k ،‬شدمارنده از ‪ 1‬تدا ‪spc‬‬
‫برای چاپ دضای خالی ابتدای هر سطر)‪( j ،‬شمارنده از ‪ 1‬تا ‪ i‬برای هر سطر) و ‪( t‬مقداری که باید چاپ شدوند)‬
‫را داریم‪.‬‬
444 ‫الکترونیکی‬

:‫ برنامهای که تعداد سطرها را خوانده و الگوی زیر را با ستاره )*( چاپ میکند‬.016
using System;
namespace p138
{ *
class Program *
{ *
static void Main(string[] args) * *
{ *
int i, j, spc, rows, k; * * * *
Console.Write("Input number of rows : ");
rows = int.Parse(Console.ReadLine());
spc = rows + 4 - 1;
for (i = 1; i <= rows; i++)
{
for (k = spc; k >= 1; k--)
{
Console.Write(" ");
}
for (j = 1; j <= i; j++)
Console.Write("* ");
Console.WriteLine();
spc--;
}
Console.ReadKey();
}
}
}
‫ (تعداد دضای خالی ابتدای‬spc ،)rows ‫ تا‬1 ‫ (شمارنده از‬i ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬
)‫ برای نمای * در هر سطر‬i ‫ تا‬1 ‫ (شمارنده از‬j ‫ (شمارندهای برای نمای دضای خالی هر سطر) و‬k ،)‫هر سطر‬
.‫را داریم‬
‫پیوست‬ 444

:‫ برنامهای که تعداد سطرها را خوانده و الگویی بهصورت زیر را نمایش میدهد‬.111


using System;
namespace p139
{ 1
class Program
{ 2 2
static void Main(string[] args)
{ 3 3 3
int i, j, spc, rows, k;
Console.Write("Input number of 4 4 4 4
rows : ");
rows = int.Parse(Console.ReadLine());
spc = rows + 4 - 1;
for (i = 1; i <= rows; i++)
{
for (k = spc; k >= 1; k--)
{
Console.Write( " ");
}
for (j = 1; j <= i; j++)
if (i < 10) Console.Write( "{0} ", i);
else Console.Write("{0} ", i);
Console.WriteLine();
spc--;
}
Console.ReadKey();
}
}
}
SPC ،)‫ را شمارش میکند‬rows ‫ تا‬1 ‫ (شمارندهای که از‬i ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬
( j ،)‫ (شمارندهای برای چاپ دضای خالی ابتدای هر سدطر‬k ،)‫(دضای خالی که ابتدای هر سطر باید چاپ شود‬
.‫ شمارش میکند) را داریم‬i ‫ تا‬1 ‫که در هر سطر از‬

:‫ جمله سری زیر را چاپ میکند‬n ‫ را از ورودی خوانده و سپس‬k ‫ و‬n ‫ برنامهای که‬.041
K  KK  KKK   KKK K
.‫ در پایان معموف این سری را نمای میدهد‬.‫ است‬1 ‫ تا‬1 ‫ عددی بین‬K
using System;
namespace p140
{
class Program
{
static void Main(string[] args)
449 ‫الکترونیکی‬
{
long n, i, sum = 0, k1 = 1, k;
Console.Write("Input k:");
k = int.Parse(Console.ReadLine());
Console.Write("Input n:");
n = int.Parse(Console.ReadLine());
k1 = k;
for (i = 1; i <= n; i++)
{
Console.Write("{0} ", k1);
if (i < n)
{
Console.Write("+ ");
}
sum = sum + k1;
k1 = (k1 * 10) + k;
}
Console.Write(" = {0}", sum);
Console.ReadKey();
}
}
}
،KK ،K ‫ (اعدداد‬k1 ،)‫ (معمدوف سدری‬sum ،)‫ (رقدم ورودی‬k ،)‫ (تعداد جمدالت‬n ‫در این برنامه متغیرهای‬
.‫) را داریم‬n ‫ تا‬1 ‫ (شمارنده از‬i ‫) و‬......‫ و‬KKKK ،KKK

:‫ حاصل عبارت زیر را محاسبه میکند‬،‫ را خوانده‬n ‫ و‬x ‫ برنامهی که‬.040


x n x x  n  n n  x  x  n x n n x  x  n 
n i


x!n!x  n ! i1 x  2i !n  2i !
)‫ (تعداد جمالت‬n ،)‫ (ورودی‬x ‫در این برنامه متغیرهای‬
f3 ،)n ‫ (داکتوریدل‬f2،)x ‫ (داکتوریل‬f1 ، x  n P ، x  P ، x  P ، n P ، x P
i
5
x x
4
nn
3
x
2
n
1
‫ (نتیعده کسدر‬r1 ،)‫ (شدمارنده‬j ،)‫ (شمارنده‬i ،)n+2i ‫ (داکتوریل‬f4 ،)x+ 2i ‫ (داکتوریل‬f4،)x + n ‫(داکتوریل‬
.‫ ) را داریم‬ ‫ (معموف داخل‬Sum ‫ ) و‬ ‫ (نتیعه کسر داخل‬r2 ،)‫اول‬
using System;
namespace p141
{
class Program
{
static void Main(string[] args)
{
int x, n;
double p = 1;
Console.Write("Input x:");
x = int.Parse(Console.ReadLine());
Console.Write("Input n:");
n = int.Parse(Console.ReadLine());
double p1 = 1;
for (int i = 1; i <= n; i++)
{
‫پیوست‬ 444

p1 *= x;
}
double p2 = 1;
for (int i = 1; i <= x; i++)
{
p2 *= n;
}
double p3 = 1;
for (int i = 1; i <= (n + n); i++)
{
p3 *= x;
}
double p4 = 1;
for (int i = 1; i <= (x + x); i++)
{
p4 *= n;
}
double f1 = 1;
for (int i = 1; i <= x; i++)
{
f1 *= i;
}
double f2 = 1;
for (int i = 1; i <= n; i++)
{
f2 *= i;
}
double f3 = 1;
for (int i = 1; i <= (x + n); i++)
{
f3 *= i;
}
double r1 = (p1 * p2 * p3 * p4) / (f1 * f2 * f3);
double sum = 0;
for (int i = 1; i <= n; i++)
{
double p5 = 1;
for (int j = 1; j <= i; j++)
{
p5 *= (x + n);
}
double f4 = 1;
for (int j = 1; j <= (x + 2 * i); j++)
{
f4 *= j;
}
double f5 = 1;
for (int j = 1; j <= (n + 2 * i); j++)
{
f5 *= j;
}
double r2 = (p1 * p2 * p5) / (f4 * f5);
sum = sum + r2;
}
Console.WriteLine( sum * r1);
Console.ReadKey();
}
}
}
444 ‫الکترونیکی‬

‫ سزمت راسزتتزرین‬،‫ (کمارزشترین بیزت‬ ‫ است یا‬0 ‫ برنامهای که تعیین میکند کمارزشترین بیت‬.162
‫ ولی برای عزدد‬،‫ است‬0 ‫ سمت راستترین بیت‬،)     0000(05 ‫ برای عدد‬،‫ بهعنوا مثال‬.)‫بیت میباشد‬
‫ و بیتی‬،)‫ (یک‬       0 ‫ اکنو این اعداد را با‬.‫ است‬ ‫ ) سمت راستترین بیت‬    00   ( 02
‫ ولی اگر نتیجه یک شود سمت راستتزرین بیزت‬،‫ سمت چپترین بیت صفر‬،‫ چنانچه نتیجه صفر شود‬،‫نماییم‬
:‫یک است‬
using System;
namespace p142
{
class Program
{
static void Main(string[] args)
{
int num;
/* Input number from user */
Console.Write("Input num:");
num = int.Parse(Console.ReadLine());
int k = num & 1;
if ( k !=0)
Console.WriteLine("Least Significant Bit of
{0} is set (1).", num);
else
Console.WriteLine("Least Significant Bit of
{0} is is unset (0).", num);
Console.ReadKey();
}
}
}
.‫ عدد ورودی است‬num ‫متغیر‬

‫ )؟ بزاارزشتزرین بیزت‬ ( ‫) است یا صزفر‬0( ‫ برنامهای که تعیین میکند باارزشترین بیت یک عدد یک‬.161
.‫عدد در سمت چپترین بیت آ است‬
using System;
namespace p143
{
class Program
{
static void Main(string[] args)
{
int BITS = sizeof(int) * 8;
int num, msb;
‫پیوست‬ 444

/* Input number from user */


Console.Write("Input num:");
num = int.Parse(Console.ReadLine());
msb = 1 << (BITS - 1);
int k = num & msb;
if (k != 0)
Console.WriteLine("Most Significant Bit of {0}
is set (1).", num);
else
Console.WriteLine("Most Significant Bit of {0}
is unset (0).", num);
Console.ReadKey();
}
}
}
‫ را بهاندازه تعداد بیتهای عدد منهای یک به سدمت چدپ شدیفت مدیدهدیم و‬1 ‫ ابتدا عدد‬،‫برای این منظور‬
‫ و)رنده بداارزشتدرین‬،‫ باارزشترین بیت عدد یک است‬،‫ ا)ر نتیعه یک شود‬.‫نتیعه را با عدد «و بیتی» مینمایم‬
.‫بیت عدد صفر است‬

‫ (عدد یک بعد از‬msb ‫ (عدد ورودی) و‬num ،)int ‫ (تعداد بیتهای نوف‬BITS ‫در این برنامه متغیرهای‬
.‫ بار شیفت به چپ) را داریم‬BITS-1

.(rows= 5) ‫( را خوانده و خروجی مانند زیر را نمایش میدهد‬rows) ‫ برنامهای که تعداد سطرها‬.044
using System;
namespace p144
{
class Program
{
static void Main(string[] args)
{
int i, j, rows;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
for (i = 1; i <= rows; i++)
{
/* Print trailing spaces */
for (j = 1; j <= rows - i; j++)
{
Console.Write(" ");
}

/* Print stars after spaces */


444 ‫الکترونیکی‬

for (j = 1; j <= rows; j++)


{
Console.Write("*");
}
/* Move to the next line */
Console.WriteLine();
}
Console.ReadKey();
}
}
}
.‫ (شمارندههای برنامه) را داریم‬j ‫ و‬i ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬

:(rows= 5) ‫ خروجی زیر را نمایش میدهد‬،‫( را خوانده‬rows) ‫ برنامهای که تعداد سطرها‬.045


using System;
namespace p145
{
class Program
{
static void Main(string[] args)
{
int i, j, rows;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
for (i = 1; i <= rows; i++)
{
/* Print trailing spaces */
for (j = 1; j <= rows - i; j++)
{
Console.Write(" ");
}

/* Print stars after spaces */


for (j = 1; j <= rows; j++)
{
if (i == 1 || i == rows || j == 1 ||
j == rows)
Console.Write("*");
else
Console.Write(" ");
}
/* Move to the next line */
Console.WriteLine();
‫پیوست‬ 440

Console.ReadKey();
}
}
}
.‫ (شمارندهها) را داریم‬j ‫ و‬i ‫ (تعداد سطرها) و‬rows ‫در این برنامه متغیرهای‬

:(rows=5) .‫ خروجی مانند زیر را نمایش میدهد‬،‫( را خوانده‬rows) ‫ برنامهای که تعداد سطرها‬.041
using System;
namespace p146
{
class Program
{
static void Main(string[] args)
{
int i, j, rows;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
for (i = 1; i <= rows; i++)
{
/* Print trailing spaces */
for (j = 1; j <= i; j++)
{
Console.Write(" ");
}
/* Print stars after spaces */
for (j = 1; j <= rows; j++)
{
Console.Write("*");
}
/* Move to the next line */
Console.WriteLine();
}
Console.ReadKey();
}
}
}
.‫ (شمارندهها) را داریم‬j ‫ و‬i ‫ (تعداد سطرها) و‬rows ‫در این برنامه متغیرهای‬
444 ‫الکترونیکی‬

:(rows= 5) ‫( را خوانده و خروجی زیر را نمایش می دهد‬rows) ‫ برنامهای که تعداد سطرها‬.046


using System;
namespace p147
{
class Program
{
static void Main(string[] args)
{
int i, j, rows;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
for (i = 1; i <= rows; i++)
{
/* Print trailing spaces */
for (j = 1; j <= i; j++)
{
Console.Write(" ");
}
/* Print stars after spaces */
for (j = 1; j <= rows; j++)
{
if(i==1 || i== rows || j==1|| j==rows)
Console.Write("*");
else Console.Write(" ");
}
/* Move to the next line */
Console.WriteLine();
}
Console.ReadKey();
}
}
}
.‫ (شمارندهها) را داریم‬j ‫ و‬i ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬
‫پیوست‬ 444

:(rows=5) .‫ خروجی مانند زیر را نمایش میدهد‬،‫( را خوانده‬rows) ‫ برنامهای که تعداد سطرها‬.046
using System;
namespace p148
{
class Program
{
static void Main(string[] args)
{
int i, j, rows;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
for (i = 1; i <= rows; i++)
{
for (j = i; j <= rows; j++)
{
Console.Write("*");
}
for (j = 1; j <= (2 * i - 2); j++)
{
Console.Write(" ");
}
for (j = i; j <= rows; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
// Loop to print lower half of the pattern
for (i = 1; i <= rows; i++)
{
for (j = 1; j <= i; j++)
{
Console.Write("*");
}
for (j = (2 * i - 2); j < (2 * rows - 2); j++)
{
Console.Write(" ");
}
for (j = 1; j <= i; j++)
{
Console.Write("*");
}
Console.WriteLine();
444 ‫الکترونیکی‬

}
Console.ReadKey();
}
}
}
.‫ (شمارندهها) را داریم‬j ‫ و‬i ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬

:(rows=5) ‫ خروجی مانند زیر را نمایش میدهد‬،‫( را خوانده‬rows) ‫ برنامهای که تعداد سطرها‬.046
using System;
namespace p149
{
class Program
{
static void Main(string[] args)
{
int i, j, rows;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
for (i = 1; i < rows; i++)
{
// Print trailing (2*rownumber-2) spaces
for (j = 1; j <= (2 * i - 2); j++)
{
Console.Write(" ");
}
// Print inverted right triangle star pattern
for (j = i; j <= rows; j++)
{
Console.Write("*");
}
Console.Write("\n");
}
// Print lower part of the arrow
for (i = 1; i <= rows; i++)
{
// Print trailing (2*n - 2*rownumber) spaces
for (j = 1; j <= (2 * rows - 2 * i); j++)
{
Console.Write(" ");
}
‫پیوست‬ 444

// Print simple right triangle star pattern


for (j = 1; j <= i; j++)
{
Console.Write("*");
}

Console.Write("\n");
}
Console.ReadKey();
}
}
}
.‫ (شمارندهها) را داریم‬j ‫ و‬i ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬

:(rows=5) ‫( را خوانده و خروجی مانند زیر را نمایش میدهد‬rows) ‫ برنامهای که تعداد سطرها‬.051
using System;
namespace p150
{
class Program
{
static void Main(string[] args)
{
int i, j, rows;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
for (i = 1; i < rows; i++)
{
// Print trailing (n-rownumber) spaces
for (j = 1; j <= (rows - i); j++)
{
Console.Write(" ");
}
// Print inverted right triangle
for (j = i; j <= rows; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
449 ‫الکترونیکی‬

// Print bottom part of the arrow


for (i = 1; i <= rows; i++)
{
// Print trailing (rownumber-1) spaces
for (j = 1; j < i; j++)
{
Console.Write(" ");
}
// Print the right triangle
for (j = 1; j <= i; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
.‫ (شمارندهها) را داریم‬j ‫ و‬i ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬

:(rows=5) ‫( را خوانده و خروجی مانند زیر را نمایش میدهد‬rows) ‫ برنامهای که تعداد سطرها‬.050
using System;
namespace p151
{
class Program
{
static void Main(string[] args)
{
int i, j, rows;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
for (i = 1; i <= (rows * 2 - 1); i++)
{
// For the center horizontal plus
if (i == rows)
{
for (j = 1; j <= (rows * 2 - 1); j++)
{
‫پیوست‬ 444

Console.Write("+");
}
}
else
{
// For spaces before single plus sign
for (j = 1; j <= rows - 1; j++)
{
Console.Write(" ");
}
Console.Write("+");
}

Console.WriteLine();
}
Console.ReadKey();
}
}
}
.‫ (شمارنده) را داریم‬j ‫ و‬i ‫ (تعداد سطرها) و‬rows ‫در این برنامه متغیرهای‬

:(rows=5) .‫( و خروجی مانند زیر را نمایش میدهد‬rows) ‫ برنامهای که تعداد سطرها را خوانده‬.052
using System;
namespace p152
{
class Program
{
static void Main(string[] args)
{
int i, j, rows;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
for (i = 1; i < rows * 2; i++)
{
for (j = 1; j <= rows; j++)
{
if ((i == 1 && (j == 1 || j == rows)) ||
(i == rows && (j == 1 || j == rows)) ||
(i == rows * 2 - 1 && (j == 1 ||
j == rows)))
{
Console.Write(" ");
}
444 ‫الکترونیکی‬

else if (i == 1 || i == rows || i == (rows *


2) - 1 || j == 1 || j == rows)
{
Console.Write("*");
}
else
{
Console.Write(" ");
}
}
Console.WriteLine();
}
Console.ReadKey ();
}
}
}
.‫ (شمارندهها) را داریم‬j ‫ و‬i ‫ (تعداد سطرها) و‬rows ‫در این برنامه متغیرهای‬

:(rows=10) ‫ خروجی مانند زیر را نمایش میدهد‬،‫( را خوانده‬rows) ‫ برنامهای که تعداد سطرها‬.051
using System;
namespace p153
{
class Program
{
static void Main(string[] args)
{
int i, j, rows;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
for (i = rows / 2; i <= rows; i += 2)
{
for (j = 1; j < rows - i; j += 2)
{
Console.Write(" ");
}
for (j = 1; j <= i; j++)
{
Console.Write("*");
}
for (j = 1; j < rows - i; j++)
{
‫پیوست‬ 444

Console.Write(" ");
}
for (j = 1; j <= i; j++)
{
Console.Write("*");
}

Console.WriteLine();
}
for (i = rows; i >= 1; i--)
{
for (j = i; j <= rows; j++)
{
Console.Write(" ");
}
for (j = 1; j <= (i * 2) - 1; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
.‫ (شمارندهها) را داریم‬j ‫ و‬i ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬

:‫ خروجی مانند زیر را نمایش میدهد‬،‫( و یک نام را خوانده‬rows) ‫ برنامهای که تعداد سطرها‬.054
using System;
namespace p154
{
class Program
{
static void Main(string[]
args)
{
string name;
int len;
Console.Write("Enter your
name: ");
name =
Console.ReadLine();
444 ‫الکترونیکی‬
int i, j, rows;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
len = name.Length;
// Print upper part of the heart shape
for (i = rows / 2; i <= rows; i += 2)
{
for (j = 1; j < rows - i; j += 2)
{
Console.Write(" ");
}
for (j = 1; j <= i; j++)
{
Console.Write("*");
}

for (j = 1; j <= rows - i; j++)


{
Console.Write(" ");
}

for (j = 1; j <= i; j++)


{
Console.Write("*");
}
Console.WriteLine();
}
// Prints lower triangular part of the pattern
for (i = rows; i >= 1; i--)
{
for (j = i; j < rows; j++)
{
Console.Write(" ");
}
// Print the name
if (i == rows)
{
for (j = 1; j <= (rows * 2 - len) / 2; j++)
{
Console.Write("*");
}
Console.Write(name);
for (j = 1; j < (rows * 2 - len) / 2; j++)
{
Console.Write("*");
}
}
else
{
for (j = 1; j <= (i * 2) - 1; j++)
{
Console.Write("*");
}
}
Console.WriteLine();
}
Console.ReadKey();
}
‫پیوست‬ 440

}
}
j ‫ و‬i ،)‫ (تعددداد سددطرها‬rows ،)‫ (طددول نددام ورودی‬len ،)‫ (نددام ورودی‬name ‫در ایددن برنامدده متغیرهددای‬
.‫(شمارندهها) را داریم‬

‫ خروجزی ماننزد زیزر را نمزایش‬،‫( را خوانزده‬cols) ‫( و سزتو هزا‬rows) ‫ برنامهای که تعزداد سزطرها‬.055
:)cols=5 ‫ و‬rows= 5(‫میدهد‬
using System;
namespace p155
{
class Program
{
static void Main(string[] args)
{
int i, j, rows, cols;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
Console.Write("Enter number of
columns: ");
cols = int.Parse(Console.ReadLine());

for (i = 1; i <= rows; i++)


{
for (j = 1; j <= cols; j++)
{
// Print 1 if current row is odd
if (i % 2 == 1)
{
Console.Write("1");
}
else
{
Console.Write("0");
}
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
444 ‫الکترونیکی‬

‫ (شدمارنده‬j ‫ (شدمارنده سدطرها) و‬i ،)‫ (تعداد ستونهدا‬cols ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬
.‫ستونها) را داریم‬

‫( را خوانده و خروجی نظیر زیزر را نمزایش‬cols) ‫( و تعداد ستو ها‬rows) ‫ برنامه ای که تعداد سطرها‬.051
:‫میدهد‬
using System;
namespace p156
{
class Program
{
static void Main(string[] args)
{
int i, j, rows, cols;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
Console.Write("Enter number of columns:
");
cols = int.Parse(Console.ReadLine());

for (i = 1; i <= rows; i++)


{
for (j = 1; j <= cols; j++)
{
// Print 1 if current row is odd
if (j % 2 == 1)
{
Console.Write("0");
}
else
{
Console.Write("1");
}
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
‫ (شدمارنده‬j ‫ (شدمارنده سدطر) و‬i ،)‫ (تعدداد سدتونهدا‬cols ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬
.‫ستون) را داریم‬
‫پیوست‬ 444

‫ خروجی نظیر زیر را‬،‫( را از ورودی خوانده‬cols) ‫( و تعداد ستو ها‬rows) ‫ برنامه ای که تعداد سطرها‬.056
:)cols=5 ‫ و‬rows=5( ‫نمایش میدهد‬
using System;
namespace p157
{
class Program
{
static void Main(string[] args)
{
int i, j, rows, cols;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
Console.Write("Enter number of columns:
");
cols = int.Parse(Console.ReadLine());
for (i = 1; i <= rows; i++)
{
for (j = 1; j <= cols; j++)
{
// Print 1 if current row is odd
if (i==1 || i == rows || j == 1 || j == cols)
{

Console.Write("1");
}
else
{
Console.Write("0");
}
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
‫ (شدمارنده‬j ‫ (شدمارنده سدطر) و‬i ،)‫ (تعدداد سدتونهدا‬cols ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬
.‫ستون) را داریم‬
444 ‫الکترونیکی‬

‫( را خوانده و خروجی مانند زیزر را نمزایش‬cols) ‫( و تعداد ستو ها‬rows) ‫ برنامهای که تعداد سطرها‬.056
:‫میدهد‬
using System;
namespace p158
{
class Program
{
static void Main(string[] args)
{
int i, j, rows, cols;
/* Input number of rows from user
*/
Console.Write("Input rows:");
rows =
int.Parse(Console.ReadLine());
Console.Write("Enter number of columns: ");
cols = int.Parse(Console.ReadLine());
int k = 1;
for (i = 1; i <= rows; i++)
{
for (j = 1; j <= cols; j++)
{
if (k == 1)
{
Console.Write("1");
}
else
{
Console.Write("0");
}
// If k = 1 then k *= -1 => -1
// If k = -1 then k *= -1 => 1
k *= -1;
}
if (cols % 2 == 0)
{
k *= -1;
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
‫پیوست‬ 444

‫ (شدمارنده‬j ،)‫ (شدمارنده سدطر‬i ،)‫ (تعدداد سدتونهدا‬cols ،)‫ (تعدداد سدطرها‬rows ‫در این برنامه متغیرهای‬
.‫' چاپ شود) را داریم‬0' ‫' یا‬1' ‫ (برای تعیین اینکه‬k ‫ستون) و‬

‫( را خوانده و خروجی نظیر زیزر را نمزایش‬cols) ‫( و تعداد ستو ها‬rows) ‫ برنامه ای که تعداد سطرها‬.056
:‫میدهد‬
using System;
namespace p159
{
class Program
{
static void Main(string[] args)
{
int i, j, rows, cols;
/* Input number of rows from user
*/
Console.Write("Input rows:");
rows =
int.Parse(Console.ReadLine());
Console.Write("Enter number of columns: ");
cols = int.Parse(Console.ReadLine());
int centerRow, centerCol= 1;
centerRow = (rows+1) / 2;
centerCol = (cols+1) / 2;
for(i=1; i<=rows; i++)
{
for(j=1; j<=cols; j++)
{
// Print 0 for central rows or columns
if(centerCol == j || centerRow == i)
{
Console.Write("0");
}
else if((cols%2 == 0 && centerCol+1 == j) ||
(rows%2 == 0 && centerRow+1 == i))
{
// Print an extra 0 for even rows or columns
Console.Write("0");
}
else
{
Console.Write("1");
}
}
Console.WriteLine();
}
Console.ReadKey();
}
449 ‫الکترونیکی‬
}
}
،)‫ (شماره سطر وسط‬centerRow ،)‫ (تعداد ستونها‬cols ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬
)‫ (شمارندهای برای پیمای ستونها‬j ‫ (شمارندهای برای پیمای سطرها) و‬i ،)‫ (شماره ستون وسط‬centerCol
.‫را داریم‬

‫( را خوانده و خروجی نظیر زیزر را نمزایش‬cols) ‫( و تعداد ستو ها‬rows) ‫ برنامه ای که تعداد سطرها‬.011
:‫میدهد‬
using System;
namespace p160
{
class Program
{
static void Main(string[] args)
{
int i, j, rows, cols;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
Console.Write("Enter number of columns:
");
cols = int.Parse(Console.ReadLine());
for (i = 1; i <= rows; i++)
{
for (j = 1; j <= cols; j++)
{
// Print 0 for central rows or columns
if (i == j || (j == (cols + 1) - i))
{
Console.Write("1");
}
else
{
Console.Write("0");
}
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
)‫سطرها‬ ‫ (شمارندهای برای پیمای‬i ،)‫ (تعداد ستونها‬cols ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬
.‫ (شمارندهای برای پیمای ستونها) را داریم‬j ‫و‬
‫پیوست‬ 404

‫ خروجی ماننزد زیزر را نمزایش‬،‫( را خوانده‬cols) ‫( و تعداد ستو ها‬rows) ‫ برنامهای که تعداد سطرها‬.010
:‫میدهد‬
:‫این خروجی ترکیب خروجیهای زیر میباشد‬
using System;
namespace p161
{
class Program
{
static void Main(string[] args)
{
int i, j, rows, cols;
/* Input number of rows from user */
Console.Write("Input rows:");
rows =
int.Parse(Console.ReadLine());
Console.Write("Enter number of
columns: ");
cols = int.Parse(Console.ReadLine());
for (i = 1; i <= rows; i++)
{
for (j = i; j <= cols; j++)
{
Console.Write(j);
}
for (j = i; j > 1; j--)
{
Console.Write(cols);
}

Console.WriteLine();
}
Console.ReadKey();
}
}
}
‫ (شدمارنده‬j ‫ (شدمارنده سدطر) و‬i ،)‫ (تعدداد سدتونهدا‬cols ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬
.‫ستون) را داریم‬
404 ‫الکترونیکی‬

‫( خروجزی نظیزر زیزر را نمزایش‬cols) ‫( و تعداد ستو ها‬rows) ‫ برنامهای که با خواند تعداد سطرها‬.012
:‫میدهد‬
using System;
namespace p162
{
class Program
{
static void Main(string[] args)
{
int i, j, rows, cols;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
Console.Write("Input columns: ");
cols = int.Parse(Console.ReadLine());
for (i = 1; i <= rows; i++)
{
for (j = i; j <= cols; j++)
{
Console.Write(j);
}
for (j = i - 1; j >= 1; j--)
{
Console.Write(j);
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
‫سدطرها) و‬ ‫ (شمارنده برای پیمای‬i ،)‫ (تعداد ستونها‬cols ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬
.‫ (شمارنده برای پیمای ستونها) را داریم‬j
‫پیوست‬ 404

(rows= .‫ خروجی مانند الگوی زیر را نمایش میدهزد‬،‫( را خوانده‬rows) ‫ برنامهای که تعداد سطرها‬.011
.5)
using System;
namespace p163
{
class Program
{
static void Main(string[] args)
{
int i, j, rows;
/* Input number of rows from user
*/
Console.Write("Input rows:");
rows =
int.Parse(Console.ReadLine());
// First upper half of the
pattern
for (i = rows; i >= 1; i--)
{
// First inner part of upper half
for (j = rows; j > i; j--)
{
Console.Write(j);
}
// Second inner part of upper half
for (j = 1; j <= (i * 2 - 1); j++)
{
Console.Write(i);
}
// Third inner part of upper half
for (j = i + 1; j <= rows; j++)
{
Console.Write(j);
}
Console.Write("\n");
}
// Second lower half of the pattern
for (i = 1; i < rows; i++)
{
// First inner part of lower half
for (j = rows; j > i; j--)
{
Console.Write(j);
}
// Second inner part of lower half
for (j = 1; j <= (i * 2 - 1); j++)
{
Console.Write(i + 1);
404 ‫الکترونیکی‬
}
// Third inner part of lower half
for (j = i + 1; j <= rows; j++)
{
Console.Write(j);
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
.‫ (شمارندهها) را داریم‬j ‫ و‬i ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬

‫( را خوانزده و الگزوی نظیزر خروجزی زیزر را نمزایش مزیدهزد‬rows) ‫ برنامهای که تعزداد سزطرها‬.014
:(rows=5)
using System;
namespace p164
{
class Program
{
static void Main(string[]
args)
{
int i, j, rows,
colCount, value;
colCount = 1;
value = 1;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
for (i = 1; i <= rows; i++)
{
for (j = 1; j <= colCount; j++)
{
if (value == 10)
value = 1; // Restart at 10
Console.Write(value);
value++;
}
‫پیوست‬ 400

Console.WriteLine();
// Increase the total number of columns by 2
colCount *= 2;
}
Console.ReadKey();
}
}
}
)‫ (تعداد ستونهای هر سطر‬colCount ،)‫ (شمارندهها‬j ‫ و‬i ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬
.‫ (مقداری که باید چاپ شود) را داریم‬value ‫و‬

(rows= ‫( را خوانده و الگوی مانند خروجی زیر را نمایش میدهزد‬rows) ‫ برنامهای که تعداد سطرها‬.015
:5)
using System;
namespace p165
{
class Program
{
static void Main(string[] args)
{
int i, j, rows;
/* Input number of rows from
user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
for (i = 1; i <= rows; i++)
{
// Prints first part of pattern
for (j = 1; j <= i; j++)
{
Console.Write(j);
}
// Prints spaces between two parts
for (j = i * 2; j < rows * 2; j++)
{
Console.Write(" ");
}
// Prints second part of the pattern
for (j = i; j >= 1; j--)
{
Console.Write(j);
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
404 ‫الکترونیکی‬

.‫ (شمارندهها) را داریم‬j ‫ و‬i ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬

:(rows= 5) ‫ الگوی نظیر زیر را چاپ مینماید‬،‫( را خوانده‬rows) ‫ برنامهای که تعداد سطرها‬.011
using System;
namespace p166
{
class Program
{
static void Main(string[]
args)
{
int i, j, rows, diff,
value;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
for (i = 1; i <= rows; i++)
{
diff = rows - 1;
value = i;
for (j = 1; j <= i; j++)
{
Console.Write("{0} ", value);
value += diff;
diff--;
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
‫داده‬ ‫ (تعددادی کده بایدد نمدای‬value ،)‫ (شمارندهها‬j ‫ و‬i ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬
.‫ (اختالف) را داریم‬diff ‫شود) و‬

:.‫( و الگوی مانند خروجی زیر را نمایش میدهد‬rows) ‫ برنامهای که تعداد سطرها را خوانده‬.016
‫پیوست‬ 404

using System;
namespace p167
{
class Program
{
static void Main(string[]
args)
{
int i, j, rows, diff,
value;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
diff = 1;
value = 1;
for (i = 1; i <= rows; i++)
{
for (j = 1; j <= i; j++)
{
Console.Write("{0} ", value);
value += diff;
diff++;
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
‫ (مقداری که‬value ،)‫ (شمارندههای سطرها و ستونها‬j ‫ و‬i ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬
.‫ (اختالف بین دو عدد پشت سر هم که باید نمای داده شوند) را داریم‬diff ،)‫باید چاپ شود‬

:(rows=5) ‫ الگوی نظیر زیر را نمایش میدهد‬،‫ برنامهای که تعداد سطرها را خوانده‬.016
using System;
namespace p168
{
class Program
{
static void
Main(string[] args)
{
int i, j, rows,
count, value;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
value = 1;
404 ‫الکترونیکی‬
count = 0;
for (i = 1; i <= rows; i++)
{
// Starting value of column based on even or odd row.
int k = (i & 1);
value = k !=0 ? (count + 1) : (count + i);
for (j = 1; j <= i; j++)
{
Console.Write("{0} ", value);
// Increment the value for odd rows
k = i & 1;
if (k !=0)
value++;
else
value--;
count++;
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
value ،)‫ (شمارندههای موردنظر برای سطرها و ستون‬j ‫ و‬i ،)‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬
.‫ (شمارنده) را داریم‬count ‫(مقداری که چاپ میشود) و‬

.‫ الگزوی نظیزر خروجزی زیزر را نمزایش مزیدهزد‬،‫( را خوانزده‬rows) ‫ برنامهای که تعزداد سزطرها‬.016
:(rows=5)
using System;
namespace p169
{
class Program
{
static void Main(string[] args)
{
int i, j, rows;
/* Input number of rows from user */
Console.Write("Input rows:");
rows = int.Parse(Console.ReadLine());
for (i = 1; i <= rows; i++)
{
for (j = 1; j <= i; j++)
{
if (i <= (rows / 2))
{
Console.Write(j);
}
else
‫پیوست‬ 404

{
Console.Write(rows - i + 1);
}
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
.‫ (شمارندههای موردنیاز) را داریم‬j ‫ و‬i )‫ (تعداد سطرها‬rows ‫در این برنامه متغیرهای‬

‫ خروجزی طبزل الگزوی زیزر را نمزایش‬،‫ برنامه ای که عددی را خوانده و بر اساس عدد خواندهشزده‬.061
:‫میدهد‬
:‫ خروجی بهصورت زیر باشد‬،‫ باشد‬22464 ‫اگر عدد ورودی‬
using System;
namespace p170
{
class Program
{
static void Main(string[] args)
{
int n;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
while (n != 0)
{
Console.WriteLine(n );
n = n / 10;
}
Console.ReadKey();
}
}
}
.‫ عدد ورودی است‬n ‫در این برنامه‬
409 ‫الکترونیکی‬

:‫ خروجی با الگوی زیر را نمایش میدهد‬،‫ را از ورودی بخواند‬24165 ‫ برنامهای که اگر عدد‬.060
using System;
namespace p171
{
class Program
{
static void Main(string[] args)
{
int num, digits, placeValue,
firstDigit;
Console.Write("Enter a
number:");
num =
int.Parse(Console.ReadLine());
while (num > 0)
{
Console.WriteLine(num);
digits = (int)Math.Log10(num);
placeValue =(int)Math.Ceiling(Math.Pow(10, digits));
firstDigit = (int)(num / placeValue);
num = num - (placeValue * firstDigit);
}
Console.ReadKey();
}
}
}
placeValue ‫ (ارقام) و‬digits ،)‫ (اولین رقم‬firstDigit ،)‫ (عدد ورودی‬num ‫در این برنامه متغیرهای‬
.‫(م ان اولین رقم) را داریم‬

:(n=5) ‫ را خوانده و سپس الگوی مانند خروجی زیر را نمایش میدهد‬n ‫ برنامهای که ابتدا‬.062
‫پیوست‬ 444

using System;
namespace p172
{
class Program
{
static void Main(string[] args)
{
int i, j, n;
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
// Prints upper part of the
pattern
for (i = 1; i <= n; i++)
{
for (j = 1; j <= i; j++)
{
Console.Write(j);
}
Console.WriteLine();
}
// Print lower part of the pattern
for (i = n - 1; i >= 1; i--)
{
for (j = 1; j <= i; j++)
{
Console.Write(j);
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
.‫ (شمارندههای موردنیاز) را داریم‬j ‫ و‬i ،)‫ (عدد ورودی‬n ‫در این برنامه متغیرهای‬

:(n=5) ‫ را خوانده و الگوی خروجی نظیر زیر را نمایش میدهد‬n ‫ برنامهای که‬.061
444 ‫الکترونیکی‬
using System;
namespace p173
{
class Program
{
static void Main(string[] args)
{
int i, j, n;
Console.Write("Enter n:");
n =
int.Parse(Console.ReadLine());
// Prints upper part of the
pattern
for (i = 1; i <= n; i++)
{
for (j = 1; j <= (i * 2 - 1); j++)
{
Console.Write(j);
}
Console.WriteLine();
}
// Print lower part of the pattern
for (i = n - 1; i >= 1; i--)
{
for (j = 1; j <= (i * 2 - 1); j++)
{
Console.Write(j);
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
.‫ (شمارندههای موردنیاز) را داریم‬j ‫ و‬i ‫ (ورودی) و‬n ‫در این برنامه متغیرهای‬

:(n=5)‫ را خوانده و الگوی مانند خروجی زیر را نمایش میدهد‬n ‫ برنامهای که‬.064
‫پیوست‬ 444

using System;
namespace p174
{
class Program
{
static void Main(string[] args)
{
int i, j, n;
Console.Write("Enter n:");
n =
int.Parse(Console.ReadLine());
// Prints upper part of the
pattern
for (i = 1; i <= n; i++)
{
Console.Write("*");
for (j = 1; j <= (i * 2 - 1); j++)
{
Console.Write(j);
}
Console.Write("*");
Console.WriteLine();
}
// Print lower part of the pattern
for (i = n - 1; i >= 1; i--)
{
Console.Write("*");
for (j = 1; j <= (i * 2 - 1); j++)
{
Console.Write(j);
}
Console.Write("*");
Console.WriteLine();
}
Console.ReadKey();
}
}
}
.‫ (شمارندههای موردنظر) را داریم‬j ‫ و‬i ‫ (ورودی) و‬n ‫در این برنامه متغیرهای‬

:‫( را نمایش میدهد‬n=5) ‫ را خوانده و الگویی نظیر خروجی زیر‬n ‫ برنامهای که ابتدا‬.065
444 ‫الکترونیکی‬
using System;
namespace p175
{
class Program
{
static void Main(string[] args)
{
int i, j, n;
Console.Write("Enter n:");
n =
int.Parse(Console.ReadLine());
for (i = 1; i <= n; i++)
{
// Print trailing spaces
for (j = 1; j < i; j++)
{
Console.Write(" ");
}
Console.Write(i);
// Print central spacces
for (j = 1; j <= ((n - i) * 2 - 1); j++)
{
Console.Write(" ");
}

// Don't print for last row


if (i != n)
Console.Write(i);
// Moves on to the next row
Console.WriteLine();
}
// Second part of the pattern
for (i = n - 1; i >= 1; i--)
{
// Print trailing spaces
for (j = 1; j < i; j++)
{
Console.Write(" ");
}
Console.Write(i);
// Print central spaces
for (j = 1; j <= ((n - i) * 2 - 1); j++)
{
Console.Write(" ");
}
Console.Write(i);
// Move on to the next line
Console.WriteLine();
}
Console.ReadKey();
}
}
}
.‫ (شمارندههای موردنظر) را داریم‬j ‫ و‬i ،)‫ (عدد ورودی‬n ‫در این برنامه متغیرهای‬
‫پیوست‬ ‫‪440‬‬

‫‪ .061‬برنامهای که عددی را خوانده‪ ،‬مکا باارزشترین بیت آ را برمیگرداند و نمایش میدهد‪.‬‬


‫م ان باارزشترین‪ ،‬سمت چپترین بیت آن یک )‪ (1‬است‪ .‬بهعنوانمثدال عددد ‪ 22‬چنانچده در ‪ 8‬بیتدی‬
‫‪00010110‬‬ ‫نمای داده شود‪ ،‬بهصورت مقابل میشود‪:‬‬
‫;‪using System‬‬
‫‪namespace p176‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int num, order = 0, i‬‬
‫;)"‪Console.Write("Enter a number:‬‬
‫;))(‪num = int.Parse(Console.ReadLine‬‬
‫‪/* Iterate over each bit of integer */‬‬
‫)‪for (i = 0; i < sizeof(int) * 8; i++‬‬
‫{‬
‫‪/* If current bit is set */‬‬
‫;‪int k =( num >> i) & 1‬‬
‫)‪if (k!=0‬‬
‫;‪order = i‬‬
‫}‬
‫‪Console.Write("Highest order set bit in {0} is {1}",‬‬
‫;)‪num , order‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه ‪( num‬عدد ورودی)‪( i ،‬شماره بیتها) و ‪( order‬م انی که ست چدپتدرین بیدت عددد) را‬
‫داریم‪.‬‬

‫‪ .066‬برنامه ای که عددی را خوانده‪ ،‬مکزا سزمت راسزتتزرین بیتزی کزه ‪ 0‬باشزد را نمزایش مزیدهزد‪.‬‬
‫بهعنوا مثال‪ ،‬اگر عدد ‪ 22‬در ‪ n‬بیت نمایش داده شود (یعنی ‪ )00010110‬مکا سمت راستترین بیت یک‬
‫آ ‪ 0‬است‪.‬‬
‫;‪using System‬‬
‫‪namespace p177‬‬
‫{‬
‫‪class Program‬‬
‫{‬
444 ‫الکترونیکی‬
static void Main(string[] args)
{
int num, order = 0, i;
Console.Write("Enter a number:");
num = int.Parse(Console.ReadLine());
order = sizeof(int) * 8 - 1;
/* Iterate through each bit of integer */
for (i = 0; i < sizeof(int) * 8; i++)
{
/* If current bit is set */
int k = (num >> i) & 1;
if (k !=0)
{
order = i;

/* Terminate the loop */


break;
}
}
Console.WriteLine("Lowest order set bit in {0} is
{1}", num, order);
Console.ReadKey();
}
}
}
‫ (م دان سدمت راسدتتدرین‬order ‫ (شماره بیتهای عدد) و‬i ،)‫ (عدد ورودی‬num ‫در این برنامه متغیرها‬
.‫یک عدد) را داریم‬

.‫) را شمارش میکند‬0( ‫( و یک‬0) ‫ تعداد بیتهای صفر‬،‫ برنامهای که عددی را خوانده‬.066
using System;
namespace p178
{
class Program
{
static void Main(string[] args)
{
int num, zeros, ones, i;
Console.Write("Enter a number:");
num = int.Parse(Console.ReadLine());
zeros = 0;
ones = 0;
for (i = 0; i < sizeof(int)*8; i++)
{
int k = num & 1;
if (k!=0)
ones++;
else
zeros++;
/* Right shift bits of num to one position */
num >>= 1;
}
Console.WriteLine("Total zero bit is {0} ", zeros);
Console.WriteLine("Total zero bit is {0} ", ones);
‫پیوست‬ 444

Console.ReadKey();
}
}
}
‫ (تعداد یدکهدا) را‬zeros ‫ (تعداد صفرها) و‬ones ،)‫ (شماره هر بیت‬i ،)‫ (عدد ورودی‬num ‫در این برنامه‬
.‫داریم‬

:(n=w) ‫ برنامهای تعداد حروف الفبا را خوانده و الگوی نظیر خروجی زیر را نمایش میدهد‬.066
using System;
namespace p179
{
class Program
{
static void Main(string[] args)
{
int i, j;
char alph = 'A';
int n, blk;
int ctr = 1;
Console.Write("Input the number of Letters (less
than 26) in the Pyramid : ");
n = int.Parse(Console.ReadLine());
for (i = 1; i <= n; i++)
{
for (blk = 1; blk <= n - i; blk++)
Console.Write(" ");
for (j = 0; j <= (ctr / 2); j++)
{
Console.Write("{0} ", alph++);
}
alph =(char) ((int) alph - 2);

for (j = 0; j < (ctr / 2); j++)


{
Console.Write("{0} ", alph--);
}
ctr = ctr + 2;
alph = 'A';
Console.WriteLine();
}
Console.ReadKey();
}
}
}
444 ‫الکترونیکی‬

‫ (حدروف الفبدای‬alph ،)‫ (جای خالی‬blk ،)‫ (شمارندههای موردنیاز‬j ‫ و‬i ،)‫ (تعداد حروف‬n ‫در این برنامه‬
.‫ (تعیین اینکه کاراکتر ادزای یابد یا کاه یابد) را داریم‬ctr ‫تولید) و‬

‫( است یا خیر؟ عددی زشت است کزه‬ugly) ‫ تشخیص دهد عدد زشت‬،‫ برنامه ای که عددی را خوانده‬.061
:‫ برخی از اعداد زشت عبارتاند از‬.‫ باشند‬5 ‫ یا‬1 ،2 ‫عاملهای اول آ اعداد‬
1 2 3 5 6 8 9 10 12……
using System;
namespace p180
{
class Program
{
static void Main(string[] args)
{
int n;
Console.Write("Input an integer number: ");
n=int.Parse(Console.ReadLine());
if (n <= 0)
{
Console.Write("Input a correct number.");
}
while (n != 1)
{
if (n % 5 == 0)
{
n /= 5;
}
else if (n % 3 == 0)
{
n /= 3;
}
else if (n % 2 == 0)
{
n /= 2;
}
else
{
Console.Write("It is not an ugly number.\n");
Console.ReadKey();
return;
}
}
Console.Write("It is an ugly number.\n");
Console.ReadKey();
}
}
‫پیوست‬ 444

‫ عزدد تشزکیل‬n ‫ عدد را خوانده و تشخیص میدهزد کزه ایزن‬n ‫ سپس‬،‫ را خوانده‬n ‫ برنامهای که ابتدا‬.060
.‫تصاعد حسابی را میدهند یا خیر‬
:‫دو سری از اعداد که تشکیل تصاعد حسابی را میدهند در زیر آمدهاند‬
-1 3 7 11 15 19 …….
5 10 15 20 25 30 ……
using System;
namespace p181
{
class Program
{
static void Main(string[] args)
{
int n, first, next, diff=0;
Console.Write("Enter n: ");
n = int.Parse(Console.ReadLine());
if (n <= 0)
{
Console.Write("Input a correct number.");
}
Console.Write("Enter first number:");
first = int.Parse(Console.ReadLine());
for (int i = 2; i <= n; i++)
{
Console.Write("Enter next number:");
next =int.Parse(Console.ReadLine());
if (i == 2) diff = next - first;
if (next - first != diff)
{
Console.Write("No");
Console.ReadKey();
return ;
}
first = next;
}
Console.Write("Yes");
Console.ReadKey();
}
}
}
i ،)‫ (عددد بعددی سدری‬next ،)‫ (عددد سدری قبلدی‬first ،)‫ (تعداد اعداد ورودی‬n ‫در این برنامه متغیرهای‬
.‫ (داصله بین عدد اول و دوم) را داریم‬diff ‫) و‬n ‫ تا‬2 ‫(شمارنده از‬
449 ‫الکترونیکی‬

‫ و تشزخیص مزیدهزد ایزن اعزداد تشزکیل‬.‫ عدد را میخواند‬n ‫ سپس‬،‫ را خوانده‬n ‫ برنامه ای که ابتدا‬.062
.‫تصاعد هندسی را میدهند یا خیر‬
:‫سریهای زیر تشکیل تصاعد هندسی را میدهند‬
1
10 5 2.5 1.25 ...... ‫نرخ‬ 2 6 18 54 ........ 3 ‫نرخ‬
2
using System;
namespace p182
{
class Program
{
static void Main(string[] args)
{
int n, first, next;
double rate = 0;
Console.Write("Enter n: ");
n = int.Parse(Console.ReadLine());
if (n <= 0)
{
Console.Write("Input a correct number.");
}
Console.Write("Enter first number:");
first = int.Parse(Console.ReadLine());
for (int i = 2; i <= n; i++)
{
Console.Write("Enter next number:");
next = int.Parse(Console.ReadLine());
if (i == 2) rate = (double) next / first;
if ((double)next / first != rate)
{
Console.Write("No");
Console.ReadKey();
return;
}
first = next;
}
Console.Write("Yes");
Console.ReadKey();
}
}
}
I ،)‫ (تعدداد اعدداد سدری‬n ،)‫ (عددد بعددی سدری‬next ،)‫ (عددد قبلدی سدری‬first ‫در این برنامه متغیرهای‬
.‫( را داریم‬first) ‫( به عدد قبلی‬next) ‫ (نسبت عدد بعدی‬rate ‫) و‬n ‫ تا‬2 ‫(شمارنده از‬
‫پیوست‬ 444

‫ که مجمو مکعبات دو یزا‬.‫ را نمایش میدهد‬n ‫ تا‬0 ‫ سپس اعدادی بین‬،‫ برنامه ای که عددی را خواند‬.061
:)‫ (نمونهای از این اعداد در شکل زیر آمده است‬.‫بیشتر عدد برابر با این عدد باشد را نمایش میدهد‬
using System;
namespace p183
{
class Program
{
static void Main(string[] args)
{
int n;
Console.Write("Enter n: ");
n = int.Parse(Console.ReadLine());
for (int a = 1; a <= n;
a++)
{
int a3 = a * a * a;
if (a3 > n) break;
for (int b = a; b <=
n; b++)
{
int b3 = b * b *
b;
if (a3 + b3 > n)
break;
for (int c = a +
1; c <= n; c++)
{
int c3 = c * c * c;
if (c3 > a3 + b3) break;
for (int d = c; d <= n; d++)
{
int d3 = d * d * d;
if (c3 + d3 > a3 + b3) break;
if (c3 + d3 == a3 + b3)
{
Console.Write(" {0} = ", (a3 + b3));
Console.Write( "{0} ^ 3 + {1} ^ 3 = ",a,b);
Console.Write( "{0} ^ 3 + {1} ^ 3 ", c, d);
Console.WriteLine();
}
}
}
}
}
Console.ReadKey();
}
}
}
‫الکترونیکی ‪444‬‬

‫در این برنامه متغیرهای ‪( a‬شمارنده از اعداد ‪ 1‬تا ‪( a3 ،)n‬توان‪( b ،)a 1‬شمارنده از ‪ a‬تا ‪ )n‬و ‪( b3‬تدوان ‪1‬‬
‫‪( c ،)b‬شمارنده از ‪ a‬بعالوه یک تا ‪ )n‬و ‪( c3‬توان ‪( d ،)c 1‬شمارنده از ‪ c‬تا ‪ )n‬و ‪( d3‬توان ‪ )d 1‬را داریم‪.‬‬

‫‪ .064‬اگر اضال مثلث اعداد تکرقمی باشند‪ ،‬تعداد مثلثهایی که میتوا تشکیل داد را نمایش میدهزد‪.‬‬
‫و اضال این مثلثها را نمایش میدهد‪( .‬زمانی اضال تشکیل مثلث را میدهند که مجمزو هزر دو ضزلع‬
‫بیشتر از ضلع سوم باشد)‪.‬‬
‫;‪using System‬‬
‫‪namespace p184‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int count =0‬‬
‫)‪for (int a = 1; a <= 9; a++‬‬
‫{‬
‫)‪for (int b = 1; b <= 9; b++‬‬
‫{‬
‫)‪for (int c = 1; c <= 9; c++‬‬
‫{‬
‫)‪if (a + b > c && a + c > b && b + c > a‬‬
‫{‬
‫;‪count++‬‬
‫;)‪Console.Write("({0}, {1}, {2})\t", a, b, c‬‬
‫}‬

‫}‬
‫}‬
‫}‬
‫;)‪Console.WriteLine ("\nCount is {0}",count‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه متغیرهای ‪( a‬اعداد یک تا ‪( b ،)1‬اعداد ‪ 1‬تا ‪( c ،)1‬اعداد ‪ 1‬تا ‪ )1‬و ‪( count‬تعداد مثلثها) را‬
‫داریم‪.‬‬
‫پیوست‬ ‫‪444‬‬

‫‪ .065‬اگر اضال مثلث اعداد ‪ 0‬تا ‪( 6‬اعداد تکرقمی) باشند‪ ،‬برنامهای که تعداد مثلث متساویالساقین که بزا‬
‫این اعداد میتوا تشکیل داد را نمایش میدهد‪.‬‬
‫;‪using System‬‬
‫‪namespace p185‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int count = 0‬‬
‫)‪for (int a = 1; a <= 9; a++‬‬
‫{‬
‫)‪for (int b = 1; b <= 9; b++‬‬
‫{‬
‫)‪for (int c = 1; c <= 9; c++‬‬
‫{‬
‫> ‪if ((a + b > c && a + c > b && b + c‬‬
‫))‪a) && (a == b || a == c || b == c‬‬
‫{‬
‫;‪count++‬‬
‫;)‪Console.Write("({0}, {1}, {2})\t", a, b, c‬‬
‫}‬
‫}‬
‫}‬
‫}‬
‫;)‪Console.WriteLine("\nCount is {0}", count‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه متغیر ‪ b ،a‬و ‪( c‬اعداد یک تدا ‪ 1‬بدرای تعیدین مقددار اضدالف مثلدث) و ‪( count‬تعدداد مثلدث‬
‫متساویالساقین میباشد) را داریم‪.‬‬
‫الکترونیکی ‪444‬‬

‫‪ .061‬اگر اضال مثلث اعداد تکرقمی باشند‪ ،‬تعداد مثلثهای قائمالااویه که میتوا تشکیل داد را نمایش‬
‫میدهد‪ .‬اضال این مثلث را نمایش میدهد‪( .‬زمانی که سزه ضزلع ‪ b ،a‬و ‪ c‬تشزکیل مثلزث قزائمالااویزه را‬
‫میدهند که ‪ a2 + b2= c2‬یا ‪ a2 + c2 = b2‬یا ‪ a2= b2 + c2‬باشد)‬
‫;‪using System‬‬
‫‪namespace p186‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int count = 0‬‬
‫)‪for (int a = 1; a <= 9; a++‬‬
‫{‬
‫)‪for (int b = 1; b <= 9; b++‬‬
‫{‬
‫)‪for (int c = 1; c <= 9; c++‬‬
‫{‬
‫&& )‪if ((a + b > c && a + c > b && b + c > a‬‬
‫|| ‪( a*a == b*b + c*c ||a*a + b*b == c*c‬‬
‫))‪b*b == c*c + a*a‬‬
‫{‬
‫;‪count++‬‬
‫‪Console.Write("({0}, {1}, {2})\t",‬‬
‫;)‪a, b, c‬‬
‫}‬
‫}‬
‫}‬
‫}‬
‫;)‪Console.WriteLine("\nCount is {0}", count‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه متغیرهای ‪ b ،a‬و ‪( c‬اضالف مثلث از ‪ 1‬تا ‪ )1‬و ‪( Count‬تعداد مثلثهای قائمالزاویه) را داریم‪.‬‬
‫پیوست‬ 440

‫ برنامه ای که مقدار سه زاویه را برحسب درجه دریافت کرده را تشخیص میدهد که آیا زاویزه تشزکیل‬.066
‫مثلث را میدهند یا نه؟‬
using System;
namespace p187
{
class Program
{
static void Main(string[] args)
{
int angle1, angle2, angle3, sum;
Console.Write("Enter angle1 of triangle: ");
angle1 = int.Parse(Console.ReadLine());
Console.Write("Enter angle2 of triangle: ");
angle2 = int.Parse(Console.ReadLine());
Console.Write("Enter angle3 of triangle: ");
angle3 = int.Parse(Console.ReadLine());
sum = angle1 + angle2 + angle3;
if (sum == 180 && angle1 != 0 && angle2 != 0
&& angle3 != 0)
{
Console.Write("Triangle is valid.");
}
else
{
Console.Write("Triangle is not valid.");
}
Console.ReadKey();
}
}
}
‫ معمدوف ایدن‬،sum ‫ به ترتیب زوایای مثلدث ولدی‬gngle3 ‫ و‬gngle2 ،gngle1 ‫در این برنامه متغیرهای‬
.‫زوایا میباشد‬

‫ تشزخیص مزیدهزد حزروف صزدادار اسزت یزا‬Switch ‫ با اسزتفاده از‬،‫ برنامهای که حرفی را خوانده‬.066
.‫ کاراکتر خواندهشده است‬ch ‫بیصدا؟ در این برنامه‬
using System;
namespace p188
{
class Program
{
static void Main(string[] args)
{
char ch;
Console.Write("Enter a character: ");
ch = char.Parse(Console.ReadLine());;
switch (ch)
{
case 'a':
case 'e':
case 'i':
444 ‫الکترونیکی‬
case 'o':
case 'u':
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
Console.Write("Vowel");
break;
default:
Console.Write("Consonant");
break;
}
Console.ReadKey();
}
}
}

.‫ عدد بارگتر را پیداکرده و نمایش میدهد‬Swltch ‫ با استفاده از‬،‫ برنامهای که دو عدد را خوانده‬.066
using System;
namespace p189
{
class Program
{
static void Main(string[] args)
{
int num1, num2;
Console.Write("Enter number one: ");
num1 = int.Parse(Console.ReadLine());
Console.Write("Enter number two: ");
num2 = int.Parse(Console.ReadLine()); ;
int x = Convert.ToInt16(num1 > num2);
switch (x)
{
case 0:
Console.Write( "{0} is maximum", num2);
break;
/* If condition (num1>num2) is true */
case 1:
Console.Write( "{0} is maximum", num1);
break;
}
Console.ReadKey();
}
}
}
.‫ به ترتیب عدد اول و عدد دوم هستند‬num2 num1 ‫در این برنامه‬
‫پیوست‬ 444

‫ با استفاده از سوئیچ ریشههای آ را محاسبه کرده‬،‫ را خوانده‬2 ‫ برنامهای که ضرایب یک معادله درجه‬.061
.‫و نمایش میدهد‬
  b 2  bac ax 2  bx  c  0
.‫ دو ریشه هستند‬ b   ‫ و‬ b   ،‫ باشد‬  0 ‫اگر‬
2x 2x
‫ معادلزه ریشزه نزدارد یزا معادلزه دارای‬،‫ اسزت وگرنزه‬ b ‫ معادله دارای یک ریشزه‬،‫ باشد‬  0 ‫اگر‬
2x

.‫ است‬ b  i   ‫ و‬ b  i   ‫ریشههای‬


2x 2x 2x 2x
using System;
namespace p190
{
class Program
{
static void Main(string[] args)
{
double a, b, c, root1, root2, imaginary,
discriminant;
Console.Write("Enter values of a:");
a = double.Parse(Console.ReadLine());
Console.Write("Enter values of b:");
b = double.Parse(Console.ReadLine());
Console.Write("Enter values of c:");
c = double.Parse(Console.ReadLine());
discriminant = (b * b) - (4 * a * c);
int case1 = Convert.ToInt32 (discriminant > 0);
switch (case1)
{
case 1:
/* If discriminant is positive */
root1 = (-b + Math.Sqrt (discriminant)) / (2 * a);
root2 = (-b - Math.Sqrt (discriminant)) / (2 * a);
Console.Write("Two distinct and real roots
exists: {0} and {1}", root1,root2);
break;
case 0:
int case2=Convert.ToInt16(discriminant < 0);
switch (case2)
{
case 1:
root1 = root2 = -b / (2 * a);
imaginary=Math.Sqrt(-discriminant)/(2*a);
Console.Write("Two distinct complex roots
exists: {0} + i {1} and - i {2}", root1,
imaginary, imaginary, root2);
break;
case 0:
/* If discriminant is zero */
root1 = root2 = -b / (2 * a);
Console.Write("Two equal and real roots exists:
{0} and {1}",root1, root2);
break;
}
break;
}
Console.ReadKey();
444 ‫الکترونیکی‬
}
}
}
،)‫ (ریشدددههدددای معادلددده‬root2 ‫ و‬root1 ،)‫ (ضدددرایب چندجملدددهای‬c ‫ و‬b ،x ‫در ایدددن برنامددده متغیرهدددا‬
.‫موهومی ریشه) را داریم‬ ‫ (بخ‬Imagingry ‫ (مقدار دلتا) و‬diserimimant

Strong ‫ است یزا خیزر؟ عزددی‬Strong ‫ تشخیص میدهد آیا عددی‬،‫ برنامهای که عددی را خوانده‬.060
.‫است که حاصل جمع فاکتوریل ارقام آ برابر خود آ عدد باشد‬
.‫ است‬Strong ‫) یک عدد‬045 =0! +4! +5! 045 ‫بهعنوا مثال (عدد‬
using System;
namespace p191
{
class Program
{
static void Main(string[] args)
{
int i, originalNum, num, lastDigit;
long fact=1, sum;
Console.Write("Enter any number to check Strong number: ");
num = int.Parse(Console.ReadLine());
/* Copy the value of num to a temporary variable */
originalNum = num;
sum = 0;
/* Find sum of factorial of digits */
while (num > 0)
{
/* Get last digit of num */
lastDigit = num % 10;
/* Find factorial of last digit */
fact = 1;
for (i = 1; i <= lastDigit; i++)
{
fact = fact * i;
}
/* Add factorial to sum */
sum = sum + fact;
num = num / 10;
}
/* Check Strong number condition */
if (sum == originalNum)
{
Console.Write( "{0} is STRONG NUMBER", originalNum);
}
else
{
Console.Write("{0} is NOT STRONG NUMBER", originalNum);
}
Console.ReadKey() ;
}
}
‫پیوست‬ 444

}
‫ (عدد خواندهشده را نگهداری میکندد‬originalNum ،)‫ (عدد خواندهشده‬num ‫در این برنامه متغیرهای‬
،)‫ (هر رقم عددد‬18Stdigit ،)‫ (معموف داکتوریل ارقام‬sum ،)‫ آن را داشته باشیم‬num ‫تا با دست ردتن عدد‬
‫ (داکتوریل هر رقدم) را‬Fact ‫ برای محاسبه داکتوریل شمارش میکند) و‬18Stdigit ‫ تا‬1 ‫ (شمارندهای که از‬I
.‫داریم‬

‫ اسزت یزا خیزر؟ عزددی‬Armstrong ‫ برنامه ای که عزددی را خوانزده تشزخیص مزیدهزد عزددی‬.062
Armstrong ‫ اعزداد زیزر‬.‫ است که مجمو ارقام به توا تعداد ارقام برابزر آ عزدد باشزد‬Armstrong
371  33  73  13  371 61   :‫هستند‬
using System;
namespace p192
{
class Program
{
static void Main(string[] args)
{
int originalNum, num, lastDigit, digits, sum;
Console.Write("Enter any number to check Armstrong number:
");
num = int.Parse(Console.ReadLine());
sum = 0;
/* Copy the value of num for processing */
originalNum = num;
/* Find total digits in num */
digits = (int) Math.Log10 (num) + 1;
/* Calculate sum of power of digits */
while (num > 0)
{
/* Extract the last digit */
lastDigit = num % 10;
/* Compute sum of power of last digit */
sum=sum+(int)Math.Round(Math.Pow(lastDigit,digits));
/* Remove the last digit */
num = num / 10;
}
/* Check for Armstrong number */
if (originalNum == sum)
{
Console.Write("{0} is ARMSTRONG NUMBER",
originalNum );
}
else
{
Console.Write("{0} is NOT ARMSTRONG NUMBER",
originalNum);
}
Console.ReadKey();
}
}
449 ‫الکترونیکی‬
}

‫ (عدددد اصددلی خواندددهشددده را نگددهداری‬orginalnum ،)‫ (عدددد ورودی‬num ‫در ایددن برنامدده متغیرهددای‬
‫ (معموف هر رقم به توان تعداد ارقدام) را‬Sum ‫ (تعداد ارقام) و‬digits ،)‫ (رقم دعلی عدد‬1astdigit ،)‫میکند‬
.‫داریم‬

.‫ برنامهای که درجه حرارت را به سانتیگراد خوانده و بر اساس جدول زیر پیغام مناسب چاپ میکند‬.061
using System;
namespace p193 ‫پیغام‬ ‫درجه حرارت‬
{ Freezing Weather <0
class Program Very Cold Weather 0-10
{ Cold Weather 10-20
static void Main(string[] Normal 20-30
args) Hot 30-40
{ Very Hot > =40
int tmp;
Console.Write("Input days temperature : ");
tmp = int.Parse(Console.ReadLine());;
if (tmp < 0)
Console.Write("Freezing weather.\n");
else if (tmp < 10)
Console.Write("Very cold weather.\n");
else if (tmp < 20)
Console.Write("Cold weather.\n");
else if (tmp < 30)
Console.Write("Normal in temp.\n");
else if (tmp < 40)
Console.Write("Its Hot.\n");
else
Console.Write("Its very hot.\n");
Console.ReadKey();
}
}
}

‫ بهعنوا مثزال‬.‫ تبدیل میکند و نمایش میدهد‬01 ‫ را خوانده به مبنای‬2 ‫ برنامه ای یک عدد در مبنای‬.064
:‫ تبدیلشده است‬01 ‫ به مبنای‬2 ‫عدد زیر از مبنای‬
11  1  1  1 2     21  1 2 2    2 3    2 4  1 2 5
 1 2 6  1    4      32  64
 10 3
using System;
namespace p194
{
‫پیوست‬ ‫‪444‬‬

‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪long n1, n‬‬
‫;‪long dec = 0, i = 0, j, d‬‬
‫;)"‪Console.Write("Input the binary number :‬‬
‫;))(‪n = long.Parse(Console.ReadLine‬‬
‫;‪n1 = n‬‬
‫)‪while (n != 0‬‬
‫{‬
‫;‪d = n % 10‬‬
‫;)‪dec = dec + d * (long) Math.Pow (2, i‬‬
‫;‪n = n / 10‬‬
‫;‪i++‬‬
‫}‬
‫‪Console.Write("The Binary Number : {0}\nThe‬‬
‫;)‪equivalent Decimal Number is :{1}", n1, dec‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه متغیرهای ‪( n‬عدد ورودی)‪( n1 ،‬عدد ورودی را در خودش نگهداری میکنند تا با تغییر ‪ n‬بده‬
‫این عدد دسترسی داشته باشد)‪( dec ،‬عدد در مبنای ‪( d ،)11‬هر رقم عدد ‪ ‬یا ‪ )1‬و ‪( I‬توانهای ‪ )2‬را داریم‪.‬‬

‫‪ .065‬برنامه ای که اندازه زوایای یک مثلث را گرفته و نو مثلث را تشخیص میدهد‪ .‬اگر مجمو زوایزای‬
‫مثلث ‪ 061‬درجه نباشد‪ ،‬این زوایا تشکیل مثلث را نمیدهند‪ .‬اما‪ ،‬اگر سزه زاویزه مثلزث برابزر باشزند‪ ،‬مثلزث‬
‫متساوی اًضال است‪ ،‬ولی اگر اندازه دو زاویه مثلث برابر باشد‪ ،‬مثلث متساویالساقین است‪ ،‬وگرنزه مثلزث‬
‫مختلفاًضال است (مانند شکل زیر)‪:‬‬

‫;‪using System‬‬
‫‪namespace p195‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪int angle1, angle2, angle3‬‬
‫;)" ‪Console.Write("Enter angle1 of triangle:‬‬
‫;))(‪angle1 = int.Parse(Console.ReadLine‬‬
444 ‫الکترونیکی‬
Console.Write("Enter angle2 of triangle: ");
angle2 = int.Parse(Console.ReadLine());
Console.Write("Enter angle3 of triangle: ");
angle3 = int.Parse(Console.ReadLine());

if (angle1 + angle2 + angle3 != 180)


{
Console.Write("This is not a triangle.\n ");
}
else if (angle1 == angle2 && angle2 == angle3)
{
Console.Write("This is an equilateral
triangle.\n");
}
else if (angle1 == angle2 || angle1 == angle3 ||
angle2 == angle3)
{
Console.Write("This is an isosceles
triangle.\n");
}
else //check whether no sides are equal
{
Console.Write("This is a scalene triangle.\n");
}
Console.ReadKey();
}
}
}
.‫ را داریم که زوایای مثلث را نگهداری میکند‬angle3 ‫ و‬angle2 ، angle1 ‫در این برنامه متغیرهای‬

‫ (اعزداد‬.‫ تولید کرد را نمایش میدهد‬5 ‫ و‬4 ‫ و‬1 ‫ برنامهای که تمام اعداد سهرقمی که میتوا با ارقام‬.061
.)‫را بهصورت صعودی مرتبشده نمایش میدهد‬
using System;
namespace p196
{
class Program
{
static void Main(string[] args)
{
for (int i = 3; i <= 5; i++)
for (int j = 3; j <= 5; j++)
for (int k = 3; k <= 5; k++)
Console.Write( "{0}\t", i * 100 + j * 10 + k);
Console.ReadKey();
}
}
}
‫) را‬5 ‫ تدا‬1 ‫ (رقدم ی دان از‬k ‫) و‬5 ‫ تدا‬1 ‫ (رقم دهگدان از‬j ،)5 ‫ تا‬1 ‫ (رقم صد)ان از‬i ‫در این برنامه متغیرهای‬
.‫داریم‬
‫پیوست‬ ‫‪444‬‬

‫‪ .066‬برنامه ای که تمام اعداد چهاررقمی که با ارقام ‪6 ،1 ،5‬و ‪ 6‬میتوا تولید کرد را نمایش میدهزد (در‬
‫این برنامه در تولید اعداد از ارقام تکراری استفاده نمیکند)‪.‬‬
‫;‪using System‬‬
‫‪namespace p197‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫)‪for (int i = 5; i <= 8; i++‬‬
‫)‪for (int j = 5; j <= 8; j++‬‬
‫)‪for (int k = 5; k <= 8; k++‬‬
‫)‪for (int m = 5; m <= 8; m++‬‬
‫‪if (i != j && i != k && i != m && j != k‬‬
‫)‪&& j != m && k != m‬‬
‫;)‪Console.Write("{0}\t", i*1000+j*100+k*10+ m‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه متغیرهای ‪( i‬هزار)ان که از ‪ 5‬تا ‪( j ،)8‬صد)ان از ‪ 5‬تا ‪( k ،)8‬دهگان از ‪ 5‬تا ‪ )8‬و ‪( m‬ی ان از‬
‫‪ 5‬تا ‪ )8‬را داریم‪.‬‬

‫‪ .066‬برنامهای که اعداد سهرقمی با ارقام فرد میتوا نوشت را نمایش مزیدهزد‪ .‬کزه ارقزام آ تکزراری‬
‫نیستند‪.‬‬
‫;‪using System‬‬
‫‪namespace p198‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫)‪for (int i = 1; i <= 9; i += 2‬‬
‫)‪for (int j = 1; j <= 9; j += 2‬‬
‫)‪for (int k = 1; k <= 9; k += 2‬‬
‫)‪if (i != j && i != k && j != k‬‬
‫;)‪Console.Write("{0}\t", i * 100 + j * 10 + k‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه متغیرهای ‪( i‬ضریب صد)ان اعدداد ددرد ‪ 1‬تدا ‪( j ،)1‬ضدریب دهگدان اعدداد ددرد ‪ 1‬تدا ‪ )1‬و ‪k‬‬
‫(ضریب ی ان اعداد درد ‪ 1‬تا ‪ )1‬را داریم‪.‬‬
444 ‫الکترونیکی‬

‫ رقم دهگا آ‬،6 ‫ تا‬2 ‫ برنامهای که تمام اعداد سهرقمی را تولید میکند که رقم یکا آ اعداد زو‬.066
.‫ میباشند را نمایش میدهد‬6 ‫ تا‬1 ‫ و رقم یکا آ اعداد مضرب‬6 ‫ تا‬5 ‫اعداد فرد‬
using System;
namespace p199
{
class Program
{
static void Main(string[] args)
{
for (int i = 2; i <= 8; i += 2)
for (int j = 5; j <= 9; j += 2)
for (int k = 3; k <= 9; k += 3)
Console.Write( "{0}\t", i * 100 + j * 10 + k);
Console.ReadKey();
}
}
}
.‫ دهگان و ی ان ب ار میروند‬،‫ به ترتیب برای تعیین ضرایب صد)ان‬k ‫ و‬j ،i ‫در این برنامه متغیرهای‬

‫ نمزایش‬،‫ میاا سود یزا زیزا را محاسزبه کزرده‬،‫ برنامهای که قیمت خریدوفروش یک کاً را خوانده‬.211
.‫میدهد‬
using System;
namespace p200
{
class Program
{
static void Main(string[] args)
{
int cp, sp, amt;
/* Input cost price and selling price of a product */
Console.Write( "Enter cost price: ");
cp = int.Parse(Console.ReadLine());
Console.Write( "Enter selling price: ");
sp = int.Parse(Console.ReadLine()); ;
if (sp > cp)
{
/* Calculate Profit */
amt = sp - cp;
Console.Write( "Profit = {0}", amt);
}
else if (cp > sp)
{
/* Calculate Loss */
amt = cp - sp;
Console.Write( "Profit = {0}", amt);
‫پیوست‬ ‫‪440‬‬

‫}‬
‫‪else‬‬
‫{‬
‫‪/* Neither profit nor loss */‬‬
‫;)"‪Console.Write( "No Profit No Loss.‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .210‬یک اسبسوار به یک پیرز برخورد کرده‪ ،‬تمام تخممرغهای پیرز از سزبد مزیافتزد و مزیشزکند‪.‬‬
‫صاحب اسب از پیرز عذرخواهی میکند و به او میگوید خسارت تخممرغهایتزا را مزیدهزم‪ .‬پیزرز‬
‫میگوید‪ ،‬تخممرغها را دو تا دو تا برداشتم‪ ،‬یکی ماند‪ ،‬سه تا سه برداشتم‪ ،‬نیا یکی مانزد‪ ،‬چهزار تزا چهزار تزا‬
‫برداشتم‪ ،‬همچنین یکی ماند‪ ،‬پنج تا پنج تا برداشتم‪ ،‬یکی ماند‪ ،‬شش تا شش تا برداشتم‪ ،‬نیا یکزی مانزد‪ ،‬ولزی‬
‫هفت تا هفت تا برداشتم‪ ،‬هیچ تخم مرغی نماند‪ .‬برنامهای که تعیین میکند‪ ،‬حداقل چند تخممزرغ در سزبد‬
‫پیرز وجود داشت‪.‬‬
‫;‪using System‬‬
‫‪namespace p201‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬

‫)‪for (int i = 7; ; i += 7‬‬


‫&& ‪if (i % 2 == 1 && i % 3 == 1 && i % 4 == 1‬‬
‫)‪i % 5 == 1 && i % 6 == 1 && i % 7 == 0‬‬
‫{‬
‫;)‪Console.WriteLine("Min is {0}", i‬‬
‫;‪break‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .212‬برنامهای که تا زمانی که کاربر کلید ‪ ESC‬را فشار ندهد‪ ،‬کلید از کاربر میگیزرد‪ .‬بزهمحزض ایزنکزه‬
‫کاربر کلید ‪ ESC‬را فشار دهد‪ ،‬از برنامه خار میشود‪ .‬این برنامه کلید و کد اسکی کاراکتر فشار دادهشزده‬
‫را نمایش میدهد‪ .‬کد اسکی کلید ‪ 26 ،ESC‬است‪.‬‬
‫;‪using System‬‬
‫‪namespace p202‬‬
444 ‫الکترونیکی‬
{
class Program
{
static void Main(string[] args)
{
char ch = '0';
while ((int)ch != 27)
{
ConsoleKeyInfo key = Console.ReadKey ();
ch = key.KeyChar;
Console.WriteLine( "\nThe pressed key is {0}\tand its code
is {1}" , ch, (int)ch );
}
Console.ReadKey();
}
}
}

‫ یک رابطه ریاضی خیلی خوب خیلی خوب برای تخمین جذر اعداد به این صزورت اسزت کزه ابتزدا‬.211
‫ قزدیم ایزنگونزه محاسزبه‬t ‫ جدیزد را از روی‬t ‫ سزپس هزر بزار‬،‫ قرار میدهیم‬0 ‫ را برابر‬t ---- ‫یک متغیر‬
:‫میکنیم‬
x
t ‫ = جدید‬0.5 * )t ‫ قدیم‬+ t ‫(قدیم‬
.‫خزواهیم رسزید‬ x ‫ بزه تعمزیم خزوبی بزرای‬،‫بهاینترتیب اگر این کار را بهصورت متوالی انجزام دهزیم‬
t ‫همزا جدیزد‬ x ‫را پیش میبرد (تخمین نهزایی‬ x ‫ مرحله تخمین‬n ‫ را خواند و تا‬n ‫ و‬x ‫برنامهای که‬
)‫آخرین مرحله خواهد بود‬
using System;
namespace p203
{
class Program
{
static void Main(string[] args)
{
int x, n;
Console.Write("Enter x:");
x = int.Parse(Console.ReadLine());
Console.Write("Enter n:");
n = int.Parse(Console.ReadLine());
double tOld = 1, tNew=0;
for (int i = 1; i <= n; i++)
{
tNew = 0.5 * (tOld + x / tOld);
tOld = tNew;
‫پیوست‬ 444

}
Console.Write("Sqrt( {0} ):{1}", x, tNew);
Console.ReadKey();
}
}
}

‫' را‬A' ‫ برنامهای که تعداد سطر را خوانده و با استفاده از حلقههای تکرار تودرتو و کزاراکتر '*' حزرف‬.214
.‫نمایش میدهد‬
using System;
namespace p204
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'A' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{
if (((column == 1 || column == n-2) &&
row != 0) ||((row == 0 || row == n/2)
&& (column > 1 && column < n-2)))
Console.Write("*");
else
Console.Write(" ");
}
Console.Write("\n");
}
Console.ReadKey();
}
}
}
444 ‫الکترونیکی‬

'*' ‫ برنامه ای که تعداد سطر (عددی زو ) را خوانده و با اسزتفاده از حلقزه تکزرار تودرتزو و کزاراکتر‬.215
.‫' را نمایش میدهد‬B' ‫حرف‬
using System;
namespace p205
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'B' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{
if (column == 1 || ((row == 0 || row == n/2
|| row == n) && (column < n-1 &&
column > 1)) || (column == n-1 &&
(row != 0 && row != n/2 && row != n)))
Console.Write("*");
else
Console.Write(" ");
}

Console.Write("\n");
}
Console.ReadKey();
}
}
}

‫' را نمزایش‬C' ‫ برنامهای که تعداد سطر را خوانده و با استفاده از حلقزه تودرتزو و کزاراکتر '*' حزرف‬.211
.‫میدهد‬
using System;
namespace p206
{
class Program
{
static void Main(string[] args)
{
‫پیوست‬ 444

Console.Write("Display the pattern like 'C' with an


asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{
if ((column == 1 && (row != 0 && row != n)) ||
((row == 0 || row == n) && (column > 1 &&
column < n-1)) || (column == n-1 &&
(row == 1 || row == n-1)))
Console.Write("*");
else
Console.Write(" ");
}
Console.Write("\n");
}
Console.ReadKey();
}
}
}

‫' را‬D' ‫ برنامهای که تعداد سطر را خوانده و با استفاده از حلقه تکزرار تودرتزو و کزاراکتر '*' کزاراکتر‬.216
.‫نمایش میدهد‬
using System;
namespace p207
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'D' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{
if (column == 1 || ((row == 0 || row == n)
449 ‫الکترونیکی‬
&& (column > 1 && column < n-1)) ||
(column == n-1 && row != 0 && row != n))
Console.Write("*");
else
Console.Write(" ");
}
Console.Write("\n");
}
Console.ReadKey();
}
}
}

‫' را‬E' ‫ برنامهای که تعداد سطر را خوانده و با استفاده از حلقه تکزرار تودرتزو و کزاراکتر '*' کزاراکتر‬.216
.‫نمایش میدهد‬
using System;
namespace p208
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'E' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{
if (column == 1 || ((row == 0 || row == n) &&
(column > 1 && column < n)) || (row == n/2 &&
column > 1 && column < n-1))
Console.Write("*");
else
Console.Write(" ");
}
Console.Write("\n");
}
Console.ReadKey();
}
}
}
‫پیوست‬ 444

‫' را نمزایش‬F' ‫ برنامه ای که تعداد سطر را خوانده و با استفاده از حلقزه تکزرار تودرتزو و '*' کزاراکتر‬.216
.‫میدهد‬
using System;
namespace p209
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'F' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{
if (column == 1 || (row == 0 && column > 1
&& column < n) || (row == n/2 && column > 1 &&
column < n-1))
Console.Write("*");
else
Console.Write(" ");
}
Console.Write("\n");
}
Console.ReadKey();
}
}
}
444 ‫الکترونیکی‬

‫' را‬G' ‫ برنامهای که تعداد سطر را خوانده و با استفاده از حلقه تکزرار تودرتزو و کزاراکتر '*' کزاراکتر‬.201
.‫نمایش میدهد‬
using System;
namespace p210
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'G' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{
if ((column == 1 && row != 0 && row != n) ||
((row == 0 || row == n) && column > 1 &&
column < n-1) ||(row == n/2 && column > n/2-1
&& column < n) || (column == n-1 && row != 0
&& row != n/2-1 && row != n))
Console.Write("*");
else
Console.Write(" ");
}
Console.Write("\n");
}
Console.ReadKey();
}
}
}

‫' را‬H' ‫ برنامهای که تعداد سطر را خوانده و با استفاده از حلقه تکزرار تودرتزو و کزاراکتر '*' کزاراکتر‬.200
.‫نمایش میدهد‬
using System;
namespace p211
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'H' with an
asterisk:\n");
Console.WriteLine("---------------------------------
‫پیوست‬ 444

------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{
if ((column == 1 || column == n-1) || (row == n/2
&& column > 1 && column < n-1))

Console.Write("*");
else
Console.Write(" ");
}

Console.Write("\n");
}
Console.ReadKey();
}
}
}

‫' را‬I' ‫ برنامهای که تعداد سطر را خوانده و با استفاده از حلقزه تکزرار تودرتزو و کزاراکتر '*' کزاراکتر‬.202
.‫نمایش میدهد‬
using System;
namespace p212
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'I' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{
if (column == n/2 || (row == 0 && column > 0 &&
column < n-1) || (row == n && column > 0 &&
444 ‫الکترونیکی‬
column < n-1) )
Console.Write("*");
else
Console.Write(" ");
}
Console.Write("\n");
}
Console.ReadKey();
}
}
}

‫' را‬J' ‫ با استفاده از حلقزه تکزرار تودرتزو و کزاراکتر '*' کزاراکتر‬،‫ برنامه ای که تعداد سطر را خوانده‬.201
.‫نمایش میدهد‬
using System;
namespace p213
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'J' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{
if ((column == 2*n/3 && row != n) || (row == 0
&& column > n/3 && column < n) || (row == n &&
column == n/2) || (row == n-1 && column == n /3))
Console.Write("*");
else
Console.Write(" ");
}
Console.Write("\n");
}
Console.ReadKey();
}
}
}
‫پیوست‬ 440

‫' را‬K' ‫ برنامهای که تعداد سطر را خوانده و با استفاده از حلقه تکزرار تودرتزو و کزاراکتر '*' کزاراکتر‬.204
.‫نمایش میدهد‬
using System;
namespace p214
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'K' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
int j = n-1, i = 0;
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{
int k = n / 3;
if (k == 2 && n==6) k = 1;
if (column == k || ((row == column + 1) &&
column != 0 && row >=n/2))
Console.Write("*");
else if (row == i && column == j )
{
Console.Write("*");
i = i + 1;
j = j - 1;
}
else
Console.Write(" ");
}
Console.Write("\n");
}
Console.ReadKey();
}
}
}
444 ‫الکترونیکی‬

‫' را نمزایش‬L' ‫ کزاراکتر‬،'*' ‫ برنامه ای که تعداد سطر را خوانده و با استفاده از حلقه تودرتو و کاراکتر‬.205
.‫میدهد‬
using System;
namespace p215
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'L' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{
int k = n / 3;
if (k == 2 && n <= 6) k = 1;
else if (n % 2 == 0) k++;
if (column == k || (row == n && column >=k
&& column < n))
Console.Write("*");
else
Console.Write(" ");
}
Console.Write("\n");
}
Console.ReadKey();
}
}
}
‫پیوست‬ 444

‫' را‬M' ‫ کزاراکتر‬،'*' ‫ و با استفاده از حلقه تکرار تودرتو و کزاراکتر‬،‫ برنامه ای که تعداد سطر را خوانده‬.201
.‫نمایش میدهد‬
using System;
namespace p216
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'M' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
if (column == 1 || column == n-1 || (row == 2 &&
(column == n/3 || column == 2 *n/ 3)) ||
(row == n/2 && column == n/2))
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
}
444 ‫الکترونیکی‬

‫' را‬N' ‫ کزاراکتر‬،'*' ‫ با استفاده از حلقه تکزرار تودرتزو و کزاراکتر‬،‫ برنامه ای که تعداد سطر را خوانده‬.206
.‫نمایش میدهد‬
using System;
namespace p217
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'N' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
if (column == 1 || column == n - 1 || (row
== column && column != 0 && column != n))
Console.Write("*");
else
Console.Write(" ");
Console.WriteLine();
}
Console.ReadKey();
}
}
}

‫' را‬O' ‫ کزاراکتر‬،'*' ‫ با استفاده از حلقه تکزرار تودرتزو و کزاراکتر‬،‫ برنامهای که تعداد سطر را خوانده‬.206
.‫نمایش میدهد‬
using System;
namespace p218
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'O' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
‫پیوست‬ 444

Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{
int k = n / 5;
if (k == 2 && n <= 6) k = 1;
if (((column == k || column == n-k) && row
!= 0 && row != n) || ((row == 0 ||
row == n) && column > k && column < n-k))
Console.Write("*");
else
Console.Write(" ");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}

‫' را‬P' ‫ کزاراکتر‬،'*' ‫ با استفاده از حلقه تکزرار تودرتزو و کزاراکتر‬،‫ برنامه ای که تعداد سطر را خوانده‬.206
.‫نمایش میدهد‬
using System;
namespace p219
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'P' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{
int k = n/3;
if (n >= 6 && n <= 8) k++;
449 ‫الکترونیکی‬
else if (n % 3 != 0) k = k + n % 3;
else k++;
if (column == 1 || ((row == 0 || row == n
/ 2) && column > 0 && column < n-1) ||
((column == n-1 || column == 1) &&
(row >= 1 && row <=k )))
Console.Write("*");
else
Console.Write(" ");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}

‫' را‬Q' ‫ کزاراکتر‬،'*' ‫ با استفاده از حلقه تکزرار تودرتزو و کزاراکتر‬،‫ برنامه ای که تعداد سطر را خوانده‬.221
.‫نمایش میدهد‬
using System;
namespace p220
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'Q' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{
int k = n / 3;
if (n >= 6 && n <= 8) k++;
else if (n % 3 != 0) k = k + n % 3;
else k++;
if ((column == 1 && row != 0 && row != n)
|| (row == 0 && column > 1 &&
column < n-1) || (column == n-1 &&
row != 0 && row != n-1) || (row == n
‫پیوست‬ 494

&& column > 1 && column < 2*n/3) ||


(column == row - 1 && row > 2*n/4))
Console.Write("*");
else
Console.Write(" ");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}

‫' را‬R' ‫ کزاراکتر‬،'*' ‫ با استفاده از حلقه تکرار تودرتو و کزاراکتر‬،‫ برنامه ای که تعداد و سطر را خوانده‬.220
.‫نمایش میدهد‬
using System;
namespace p221
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'R' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{

if (column == n/6 || ((row == 0 || row == n/2)


&& column > n/6 && column < n-n/6) ||
(column == n-n/6 && row != 0 && row < n/2)
|| (column == row - n/6 && row > n /2))
Console.Write("*");
else
Console.Write(" ");
}
494 ‫الکترونیکی‬
Console.WriteLine();
}
Console.ReadKey();
}
}
}

‫' را‬S' ‫ کزاراکتر‬،'*' ‫ با استفاده از حلقزه تکزرار تودرتزو و کزاراکتر‬،‫ برنامهای که تعداد سطر را خوانده‬.222
.‫نمایش میدهد‬
using System;
namespace p222
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'S' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{
if (((row == 0 || row == n/2 || row == n)
&& column > n/6 && column < n-n/6) ||
(column == n/6 && (row == n/6 ||
row == n/3 || row == n))||
(column == n-n/6 && (row == 0 ||
row == 2 * n / 3 || row == n-n/6)))
Console.Write("*");
else
Console.Write(" ");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
‫پیوست‬ 494

‫' را‬T' ‫ کزاراکتر‬،'*' ‫ با استفاده از حلقه تکزرار تودرتزو و کزاراکتر‬،‫ برنامهای که تعداد سطر را خوانده‬.221
.‫نمایش میدهد‬
using System;
namespace p223
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'T' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{

if (column == n /2 || (row == 0 && column > 0


&& column < n))
Console.Write("*");
else
Console.Write(" ");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
494 ‫الکترونیکی‬

‫' را‬U' ‫ کزاراکتر‬،'*' ‫ با استفاده از حلقه تکزرار تودرتزو و کزاراکتر‬،‫ برنامه ای که تعداد سطر را خوانده‬.224
.‫نمایش میدهد‬
using System;
namespace p224
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'U' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{

if (((column == n/6 || column == n - n/6) &&


row != n) || (row == n && column > n/6 &&
column < n- n/6))
Console.Write("*");
else
Console.Write(" ");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}

‫' را‬W' ‫ کزاراکتر‬، '*' ‫ با استفاده از حلقه تکرار تودرتزو و کزاراکتر‬،‫ برنامه ای که تعداد سطر را خوانده‬.225
.‫نمایش میدهد‬
using System;
namespace p225
{
class Program
{
static void Main(string[] args)
{
‫پیوست‬ 490

Console.Write("Display the pattern like 'W' with an


asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{

if (((column == n/6 || column == n- n/6) &&


row < n) || ((row == n-n/6 || row == 2 *n /3)
&& column == n/2)|| (row == n &&
(column == n/3 || column == 2*n/3)))
Console.Write("*");
else
Console.Write(" ");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}

‫' را‬V' ‫ کزاراکتر‬،'*' ‫ با استفاده از حلقه تکزرار تودرتزو و کزاراکتر‬،‫ برنامه ای که تعداد سطر را خوانده‬.221
.‫نمایش میدهد‬
using System;
namespace p226
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'V' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
494 ‫الکترونیکی‬
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{
if (((column == n/6 || column == n-n/6) &&
row < n-n/6) || (row == n && column == n/2)
|| (row == n-n/6 && (column == n/3 || column
== 2*n/3)))
Console.Write("*");
else
Console.Write(" ");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}

‫' را‬X' ‫ کزاراکتر‬،'*' ‫ با استفاده از حلقه تکزرار تودرتزو و کزاراکتر‬،‫ برنامه ای که تعداد سطر را خوانده‬.226
.‫نمایش میدهد‬
using System;
namespace p227
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'X' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{

if (column == row || column + row == n )


Console.Write("*");
else
Console.Write(" ");
‫پیوست‬ 494

}
Console.WriteLine();
}
Console.ReadKey();
}
}
}

.‫' را نمایش میدهد‬Y' ‫ کاراکتر‬،'*' ‫ با استفاده از کاراکتر‬،‫ برنامهای که تعداد سطر را خوانده‬.226
using System;
namespace p228
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'Y' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{

if (((column == n/6 || column == n - n/6) &&


row < n/3) || row == column && column > 0
&& column < 2*n /3|| (column == 2 * n/3
&& row == n/3) || ((column == n/2) && row > n/2))
Console.Write("*");
else
Console.Write(" ");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
494 ‫الکترونیکی‬

.‫' را نمایش میدهد‬Z' ‫ با استفاده از کاراکتر '*' کاراکتر‬،‫ برنامهای که تعداد سطرها را خوانده‬.226
using System;
namespace p229
{
class Program
{
static void Main(string[] args)
{
Console.Write("Display the pattern like 'Z' with an
asterisk:\n");
Console.WriteLine("---------------------------------
------------");
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.WriteLine();
for (int row = 0; row <= n; row++)
{
for (int column = 0; column <= n; column++)
{

if (((row == 0 || row == n) && column >= 0


&& column <= n) || row + column == n)
Console.Write("*");
else
Console.Write(" ");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
‫پیوست‬ 494

‫فصل‬
C# ‫متد در‬
3
:‫ حاصل سری زیر را محاسبه کرده و نمایش میدهد‬،‫ را خوانده‬n ‫ و‬x ‫ برنامهای که اعداد‬.60
x1 1 x  n 1 n  1
n 1 1
x 0n
  
n  n  1 1
x n n1 x n 1 n  1 x 2 n 1 2n  1
2 n
 
1 2 n
using System;
namespace p81
{
class Program
{
static double pow(double x, int n)
{
double p = 1;
for (int i = 1; i <= n; i++) p *= x;
return p;
}
static void Main(string[] args)
{
double x, sum = 0;
Console.Write("Enter x:");
x = double.Parse(Console.ReadLine());
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
for (int i = 0; i < n; i++)
{
double p1 = pow(x, i) * pow(i, n - i) / -(n - i);
sum = sum + p1;
}
for (int j = 1; j <= n; j++)
{
double p2 = pow(x, n+ j - 1)*pow(n + j - 1, j) / j;
sum = sum + p2;
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
499 ‫الکترونیکی‬
}

:.‫ حاصل سری زیر را نمایش میدهد‬،‫ را خوانده‬n ‫ برنامهای که‬.62


1 2 3 n
   2
12  1 22  2 32  3 n n
using System;
namespace p82
{
class Program
{
static double pow(double x, int n)
{
double p = 1;
for (int i = 1; i <= n; i++) p *= x;
return p;
}
static void Main(string[] args)
{
double sum = 0;
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
double p1 = 1.0 / (i + pow(i, 2));
sum = sum + p1;
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}

:‫ حاصل سری زیر را نمایش میدهد‬،‫ را خوانده‬n ‫ و‬x ‫ برنامهای که‬.61


tan x tan  x 
2
tan 3 x tan n x
   
 
sin x n 
sin x n 1  
sin x n  2 

sin  x 
using System;
namespace p83
{
class Program
{
static double pow(double x, int n)
{
double p = 1;
for (int i = 1; i <= n; i++) p *= x;
return p;
}
‫پیوست‬ 444

static void Main(string[] args)


{
double sum = 0;
Console.Write("Enter x:");
double x = double.Parse(Console.ReadLine());
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
double p1 = pow(Math.Tan(x), i) /Math.Sin(
pow(x, n - i + 1)));
sum = sum + p1;
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}

:‫ حاصل عبارت زیر را نمایش میدهد‬،‫ را خوانده‬n ‫ و‬x ‫ برنامهای که‬.64


log log 1og
log  x 

 n 
log  
using System;
namespace p84
{
class Program
{
static double loglog(double x, int n)
{
double base1, log1;
base1 = (double)x;
log1 = 0;
for(int i = 1; i <= n; i++)
{
log1 = Math.Log(base1);
base1 = log1;
}
return log1;
}
static void Main(string[] args)
{
double sum = 0;
Console.Write("Enter x:");
double x = double.Parse(Console.ReadLine());
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.Write("Result is {0}", loglog(x, n));
Console.ReadKey();

}
}
}
444 ‫الکترونیکی‬

:‫ حاصل سری زیر را نمایش میدهد‬،‫ را خوانده‬n ‫ برنامهای که‬.65


1! 2! 3! n!
 2 3  2 3 4  2 3
1 1 2 1 2 3
2
1  2    n n 1
using System;
namespace p85
{
class Program
{
static double pow(double x, int n)
{
double p = 1;
for (int i = 1; i <= n; i++) p *= x;
return p;
}
static double fact(int n)
{
double f = 1;
for (int i = 1; i <= n; i++) f *= i;
return f;
}
static void Main(string[] args)
{
double sum = 0, sum1 = 0;
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
sum1 += pow(i, i + 1);
sum = sum + fact(i) / sum1;
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}

:‫ حاصل سری زیر را نمایش میدهد‬،‫ را خوانده‬n ‫ و‬x ‫ برنامهای که‬.61

Cosx   1 
x2 x4
 
 1 x 2nn

2! 4! 2n!
using System;
namespace p86
{
class Program
{
static double pow(double x, int n)
{
‫پیوست‬ 444

double p = 1;
for (int i = 1; i <= n; i++) p *= x;
return p;
}
static double fact(int n)
{
double f = 1;
for (int i = 1; i <= n; i++) f *= i;
return f;
}
static void Main(string[] args)
{
double sum = 0;
Console.Write("Enter x:");
double x = double.Parse(Console.ReadLine());
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
sum = 1;
for (int i = 1; i <= n; i++)
{
sum += pow(-1, i) * pow(x, 2 * i) / fact(2 * i);
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}

:‫ حاصل سری زیر را نمایش میدهد‬،‫ را خوانده‬n ‫) و‬0 ‫ تا‬-0 ‫ (بین‬x ‫ برنامهای که‬.66

arcsin x  x 
2! x3 4! x5
 2 3  n
 
2n ! x 2n 1
4 1! 3 4 2! .5 4 .n! .2n  1
1 2 2

using System;
namespace p87
{
class Program
{
static double pow(double x, int n)
{
double p = 1;
for (int i = 1; i <= n; i++) p *= x;
return p;
}
static double fact(int n)
{
double f = 1;
for (int i = 1; i <= n; i++) f *= i;
return f;
}
static void Main(string[] args)
{
double sum = 0;
Console.Write("Enter x:");
double x = double.Parse(Console.ReadLine());
444 ‫الکترونیکی‬
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
double p1 = fact(2 * i) * pow(x, 2 * i + 1);
double p2 = pow(4, i) * pow(fact(i), 2) * (2 * i + 1);
sum += p1 / p2;
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();

}
}
}

:‫ حاصل سری زیر را نمایش میدهد‬،‫ را خوانده‬n ‫ برنامهای که‬.66


1 1! 2 2! 3 3! n n!
   2   2   2
1 12 2 2 3 3 n n
using System;
namespace p88
{
class Program
{
static double fact(int n)
{
double f = 1;
for (int i = 1; i <= n; i++) f *= i;
return f;
}
static void Main(string[] args)
{
double sum = 0;
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
sum += Math.Sqrt(i) / i - fact(i) / (i * i);
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}

:‫ حاصل عبارت زیر را نمایش میدهد‬،‫ را خوانده‬n ‫ برنامهای که‬.66


3 2 4 3 n 1  n
 
2 2
2
3 3
2
n2  n
‫پیوست‬ 440

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace p89
{
class Program
{
static void Main(string[] args)
{
double sum = 0;
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
for (int i = 2; i <= n; i++)
{
sum += (Math.Sqrt(i + 1) - Math.Sqrt(i))
/ Math.Sqrt(i * i + i);
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}

:‫ حاصل عبارت زیر را نمایش میدهد‬،‫ را خوانده‬n ‫ برنامهای که‬.61


1 1 1
 2    n1
2 log 2  3 log 3 n log n 
1 2 3 n

using System;
namespace p90
{
class Program
{
static void Main(string[] args)
{
double sum = 0;
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
for (int i = 2; i <= n; i++)
{
sum += (1) / (Math.Pow(i, i - 1) *
Math.Pow(Math.Log(i), i));
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}
444 ‫الکترونیکی‬

:.‫ حاصل عبارت زیر را نمایش میدهد‬،‫ را خوانده‬n ‫ برنامهای که‬.60


2 32  n n1 
log  log   log  n 
22  1 33  1  n 1
using System;
namespace p91
{
class Program
{
static void Main(string[] args)
{
double sum = 0;
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
for (int i = 2; i <= n; i++)
{
sum += Math.Log(2.0 / (Math.Pow (i, i) - 1));
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}

:.‫ حاصل عبارت زیر را نمایش میدهد‬،‫ را خوانده‬n ‫ برنامهای که‬.62


5 7 2n  1
 
2 3
 2
2
3
3
 3
2
n 3
 n
2

using System;
namespace p92
{
class Program
{
static void Main(string[] args)
{
double sum = 0;
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
for (int i = 2; i <= n; i++)
{
sum += Math.Sqrt(2*i+1)/Math.Pow(i* i * i + i, 2);
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}
‫پیوست‬ 444

:‫ حاصل عبارت زیر را محاسبه میکند و نمایش میدهد‬،‫ را خوانده‬n ‫ برنامهای که‬.61

 1 
sin  
sin  2 
1 sin  6  1
 nn  1 
 
cos 11 . cos 12  cos 12 . cos 13   1 
cos 1n . cos 
 n  1
using System;
namespace p93
{
class Program
{
static void Main(string[] args)
{
double sum = 0;
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++)
{
sum += Math.Sin(1.0 / (n * (n + 1))) /
(Math.Cos(1.0 / n) * Math.Cos(1.0 / (n + 1)));
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();

}
}
}

:.‫ حاصل سری زیر را نمایش میدهد‬،‫ را خوانده‬n ‫ و‬x ‫ برنامهای که‬.64
sin n . log 2! sin n  1. log 3! sin . log n  2!
 
tan n 1 tan n 1 2 tan n n  1
using System;
namespace p94
{
class Program
{
static double pow(double x, int n)
{
double p = 1;
for (int i = 1; i <= n; i++) p *= x;
return p;
}
static double fact(int n)
{
double f = 1;
for (int i = 1; i <= n; i++) f *= i;
return f;
}
444 ‫الکترونیکی‬
static void Main(string[] args)
{
double sum = 0;
Console.Write("Enter x:");
double x = double.Parse(Console.ReadLine());
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
sum = 0;
for (int i = 0; i <= n; i++)
{
double p0 =Math.Tan((double)(i + 1));
double p1 = Math.Sqrt(Math.Sin(n - i) *
Math.Log(fact(i + 2)));
double p2 = pow(p0, n - i);
sum += p1 / p2;
}
Console.Write("Sum is {0}", sum);
Console.ReadKey();
}
}
}

‫ این برنامزه از ایزن‬.‫ حاصل سری زیر را برمیگرداند‬،‫ را به عنوا پارامتر دریافت کرده‬n ‫ و‬x ‫ متدی که‬.65
.‫متد استفاده میکند‬
   
tan x1  tan x 2    tan x n  
sin1  x   sin 2  x     sin n  x 
using System;
namespace p95
{
class Program
{
static double seri(double x, int n)
{
double sum = 0;
for (int i = 1; i <= n; i++)
{
sum = sum + Math.Tan(Math.Pow(x, i)) /
Math.Pow(Math.Sin(x), i);
}
return sum;
}
static void Main(string[] args)
{
double sum = 0;
Console.Write("Enter x:");
double x = double.Parse(Console.ReadLine());
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.Write("Sum is {0}", seri(x, n));
Console.ReadKey();
}
}
}
‫پیوست‬ 444

‫ برنامزه از ایزن‬.‫ سپس حاصل سری زیر را محاسبه و نمایش میدهد‬،‫ را بهعنوا دریافت کرده‬n ‫ متدی‬.61
.‫متد استفاده میکند‬
n  1! 1n 1  n  2! 2n  2     0!nn  n 
using System;
namespace p96
{
class Program
{
static double pow(double x, int n)
{
double p = 1;
for (int i = 1; i <= n; i++) p *= x;
return p;
}
static double fact(int n)
{
double f = 1;
for (int i = 1; i <= n; i++) f *= i;
return f;
}
static double seri(double x, int n)
{
double sum = 0;
for (int i = 1; i <= n; i++)
{
sum += fact(n - i) * pow(i, n - i);
}
return sum;
}
static void Main(string[] args)
{
double sum = 0;
Console.Write("Enter x:");
double x = double.Parse(Console.ReadLine());
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.Write("Sum is {0}", seri(x,n));
Console.ReadKey();
}
}
}

‫ حاصل سری زیر را محاسبه میکند و برنامزه‬،‫ را به عنوا پارامتر دریافت کرده‬n ‫ متدی که عدد صحی‬.66
:‫اصلی آ را نمایش میدهد‬
449 ‫الکترونیکی‬

1 n2 n 1
x x  x
n 1 2 1
using System;
namespace p97
{
class Program
{
static double seri(double x, int n)
{
double sum = 0;
for (int i = 1; i <= n; i++)
{
if (i % 2 == 1)
{
sum += i * x / (n - i);
}
else
{
sum += (n - i) * x / i;
}
}
return sum;
}
static void Main(string[] args)
{
double sum = 0;
Console.Write("Enter x:");
double x = double.Parse(Console.ReadLine());
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.Write("Sum is {0}", seri(x, n));
Console.ReadKey();
}
}
}

:‫ را خوانده با استفاده از متدی حاصل سری زیر را محاسبه و نمایش میدهد‬n ‫ برنامهای که‬.66
1 2  3 2 3 4
 
n  1n  2n  3 n  2n  3n  4
nn  1n  2 
n  n n  n  1n  n  2
using System;
namespace p98
{
class Program
{
static double seri(int n)
{
double sum = 0;
for (int i = 1; i <= n; i++)
{
‫پیوست‬ 444

sum += (double)(i * (i + 1) * (i + 2)) /


((n + i) * (n + i + 1) * (n + i + 2));
}
return sum;
}
static void Main(string[] args)
{
double sum = 0;
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.Write("Sum is {0}", seri(n));
Console.ReadKey();
}
}
}

:‫ نمایش میدهد‬،‫ را خوانده و توسط متدهای حاصل سری زیر را محاسبه کرده‬n ‫ و‬x ‫ برنامهای که‬.66
nx1 nn  1x 2 n! x n
1  
1! 2! n!

:‫ را خوانده و با استفاده از متدی حاصل سری زیر را محاسبه کرده و نمایش میدهد‬n ‫ برنامهای که‬.011

 1
 1
1 
 11

 
 1
n‫جمله‬  1
 11

using System;
namespace p100
{
class Program
{
static double seri(int n)
{
double sum = 0;
double base1 = 1 + 1;
for(int i =1; i<= n; i++)
{
sum = 1 + (1 / base1);
444 ‫الکترونیکی‬
base1= sum;
}
return sum;
}

static void Main(string[] args)


{
double sum = 0;
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.Write("Sum is {0}", seri(n));
Console.ReadKey();
}
}
}

‫ باشزد را نمزایش‬6 ‫ کزه یکزی از ارقزام آ‬n ‫ زیر‬6 ‫ کلیه اعداد مضرب‬،‫ را خوانده‬n ‫ برنامه ای که عدد‬.010
‫ اسزت از‬6 ‫ یک متد و برای تعیین اینکه یک رقم عزدد‬6 ‫ در این برنامه برای نمایش اعداد مضرب‬.‫میدهد‬
.‫متد دیگری استفاده میشود‬
using System;
namespace p101
{
class Program
{
static void display(int n)
{
for (int i = 7; i <= n; i += 7)
{
if (exists7(i) == true) Console.Write("{0}\t", i);
}
}
static bool exists7(int n)
{
while (n > 0)
{
if (n % 10 == 7) return true;
n /= 10;
}
return false;
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.Write("Result is ");
display(n);
Console.ReadKey();
}
}
}
‫پیوست‬ 444

‫ نباشد را نمزایش‬6 ‫ که هیچیک از ارقام آ‬n ‫ زیر‬6 ‫ کلیه اعداد مضرب‬،‫ را خوانده‬n ‫ برنامهای که عدد‬.012
.‫میدهد‬
using System;
namespace p102
{
class Program
{
static void display(int n)
{
for (int i = 7; i <= n; i += 7)
{
if (exists7(i) == false) Console.Write("{0}\t", i);
}
}
static bool exists7(int n)
{
while (n > 0)
{
if (n % 10 == 7) return true;
n /= 10;
}
return false;
}

static void Main(string[] args)


{
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.Write("Result is ");
display(n);
Console.ReadKey();
}
}
}

No ‫ وگرنه‬،Yes ،‫ اگر ارقام از سمت راست به چپ دوتا دوتا کم شدند‬،‫ برنامه ای که عددی را خوانده‬.011
.‫ برای تعیین اینکه اعداد از راست به چپ دو تا کم شدند از یک متد اسزتفاده مزیکنزد‬.‫را نمایش می دهد‬
.‫' را نمایش میدهد‬No' ،151 ،024 ‫" و برای اعداد‬Yes" ،015 ،156 ‫ و‬،241 ‫ برای اعداد‬،‫بهعنوا مثال‬
using System;
namespace p103
{
class Program
{
static bool test(int n)
{
int r1 = n % 10, r2;
n /= 10;
if (n == 0) return false;
while (n > 0)
444 ‫الکترونیکی‬
{
r2 = n % 10;
if (Math.Abs(r1 - r2) != 2) return false;
n /= 10;
r1 = r2;
}
return true;
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
if (test(n) == true) Console.Write("Yes ");
else Console.Write("No");
Console.ReadKey();
}
}
}

‫فصل‬
‫آرایهها و رشتهها‬
4
.‫ با استفاده از اشارهگر و متد بازگشتی معکوس رشته را نمایش میدهد‬،‫ برنامهای که رشتهای را خوانده‬.27
‫ را میخوانزد و بزا فراخزوانی متزد‬s ‫ سپس با یک پیغام مناسب رشته‬،‫ را تعریف میکند‬s ‫ ابتدا رشته‬،main() ‫متد‬
.‫ رشته را معکوس مینماید و چاپ میکند‬reverse()
‫ دریافت میکند و بهصورت بازگشتی آ رشته را معکزوس‬،‫ را که ابتدای رشتهای است‬s ‫ اشارهگر‬،revese() ‫متد‬
.‫میکند و برمیگرداند‬

‫هدف‬ ‫متغیر‬ ‫متد‬

using System; ‫رشته ورودی‬ S main


namespace p81 main() ‫ را از متد‬s ‫اشاره اشاره)ری که ابتدا رشته‬ reverse
{ s
class Program .‫دریادت میکند‬
{
public static void reverse(ref string s)
{
if (s != "")
{
Console.Write(s.Substring(s.Length - 1));
s = s.Substring(0, s.Length - 1);
reverse(ref s);
}
}
static void Main(string[] args)
{
string s = new string(new char[80]);
Console.Write("Enter a string: ");
‫پیوست‬ 440

s = Console.ReadLine();
Console.Write("Reverse ");
Console.Write(s);
Console.Write(" is ");
reverse(ref s);
Console.ReadKey();
}
}
}

‫ تعیین میکند که آیا دو نام با هم برابر هستند یا خیر؟‬،‫ برنامهای دو نام را خوانده‬.27
‫ را‬name2 ‫ و‬name1 ‫ سپس با پیغامهای مناسب‬،‫ را تعریف کرده‬c ‫ و متغیر‬name2 ،name1 ‫ ابتدا‬،main() ‫متد‬
‫ را پیمایش میکند و تعداد‬name2 ‫ و‬name1 ‫ کاراکترهای‬،for ‫ با یک حلقه‬،‫ در ادامه‬،‫از ورودی میخواند‬
‫ عبارت‬،‫ باشد‬name1 ‫ اگر تعداد کاراکترهای برابر دو رشته برابر طول‬.‫کاراکترهای متناظر و برابر آ ها را میشمارد‬
.‫“ را نمایش میدهد‬Not Equal” ‫ عبارت‬،‫“ وگرنه‬Equal”

‫هدف‬ ‫متغیر‬ ‫متد‬


‫اولین نام‬ name1 main
‫دومین نام‬ name2
.‫میکند‬ ‫ را پیمای‬Name2 ‫ و‬name1 ‫شمارنده کاراکترهای‬ I
name2 ‫ و‬name1 ‫تعداد کاراکترهای برابر‬ C
using System;
namespace p82
{
class Program
{
static void Main(string[] args)
{
int c = 0;
Console.Write("Enter name1:");
string name1 = Console.ReadLine();
Console.Write("Enter name2:");
string name2 = Console.ReadLine();
for (int i = 0;i < name1.Length;i++)
{
if (name1.Length == name2.Length)
{
if (name1[i] == name2[i])
{
c++;
}
}
}
if (c == name1.Length)
{
Console.Write("Equal");
}
else
{
‫الکترونیکی ‪444‬‬
‫;)"‪Console.Write("Not equal‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .27‬برنامهای که تعدادی نام را دریافت کرده‪ ،‬سپس یک نام جدید را میخواند و تعیین میکند که آیا این نام در‬
‫لیست نامهای دریافتی وجود دارد یا خیر؟‬
‫متد )(‪ ،main‬ابتدا متغیرهای ‪ 01( list‬نام ورودی را نگهداری میکند)‪ name ،‬و ‪ c‬را تعریف کرده‪ ،‬با استفاده از‬
‫یک حلقه‪ 01 ،‬نام را خوانده‪ ،‬در عناصر ‪ list‬قرار میدهد‪ .‬سپس یک نام جدید را میخواند‪ ،‬در ‪ name‬قرار میدهد‪.‬‬
‫در ادامه‪ ،‬با حلقهای با شمارنده ‪ i‬هر یک از نامهای لیست را پیمایش میکند و با حلقه داخلی ‪ j‬تعداد کاراکترهای‬
‫متناظر هر نام در لیست کاراکترهای متناظر ‪ name‬را میشمارد‪ .‬اگر مقدار این کاراکترها (یعنی ‪ )c‬برابر با طول‬
‫‪ name‬باشد‪ ،‬حلقه خاتمه میدهد‪ .‬در پایا حلقه‪ ،‬اگر ‪ c‬برابر طول ‪ name‬باشد‪ ،‬عبارت “نام لیست را پیداشده” را‬
‫نمایش میدهد‪ ،‬وگرنه پیغام “نام در لیست پیدا نشد” را خواهد داد‪.‬‬

‫هدف‬ ‫متغیر‬ ‫متد‬


‫آرایهای ‪ 11‬عنصری که ‪ 11‬نام را نگهداری میکند‪.‬‬ ‫‪list‬‬ ‫‪main‬‬
‫نام ورودی که در لیست نامها باید جستوجو شود‪.‬‬ ‫‪name‬‬
‫‪ 11‬نام‬ ‫شمارندهای بر دریادت ‪ 1‬نام و پیمای‬ ‫‪i‬‬
‫تعداد کاراکترهای برابر هر یک از ‪ 11‬نام بانام واردشده ‪name‬‬ ‫‪c‬‬
‫هر یک از کاراکترهای ‪ 11‬نام یا ‪name‬‬ ‫شمارندهای برای پیمای‬ ‫‪j‬‬

‫;‪using System‬‬
‫‪namespace p83‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪string s‬‬
‫;)" ‪Console.Write("Enter a string:‬‬
‫;)(‪s= Console.ReadLine‬‬

‫)‪for (int i = 0; i < s.Length; i++‬‬


‫{‬
‫;)]‪Console.Write(" {0}",s[i‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫پیوست‬ 444

.‫( ایجززاد مززیکنززد‬Blank) ‫ برنامززهای کززه رشززتهای را از ورودی خوانززده و بززین حززروف آ فاصززله‬.64
‫ در ایزن برنامزه‬.‫ را نمزایش مزیدهزد‬T e s t ‫ برنامه رشته‬،‫ را وارد کند‬Test ‫ اگر کاربر رشته‬،‫بهعنوا مثال‬
.‫ (رشته خروجی) را داریم‬S2 ‫ (رشته ورودی) و‬S1 ‫متغیرهای‬
using System;
namespace p84
{
class Program
{
static void Main(string[] args)
{
string s1, s2="";
Console.Write("Enter a string: ");
s1 = Console.ReadLine();
for (int i = 0; i < s1.Length; i++)
{
s2 += s1[i];
s2 += ' ';
}
Console.WriteLine("String : {0}", s2);
Console.ReadKey();
}
}
}

‫ در ایزن‬.‫ رشته را میخواند و طول هر یک را نمایش میدهزد‬n ‫ سپس‬،‫ را خوانده‬n ‫ برنامهای که ابتدا‬.65
)‫ را شمارش میکنزد‬n-1 ‫ تا‬0 ‫ (شمارندهای که از‬i ‫ (آرایهای از رشتهها) و‬s ،)‫ (تعداد رشته‬n ‫برنامه متغیرهای‬
.‫را داریم‬
using System;
namespace p85
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter n: ");
int n= int.Parse(Console.ReadLine());
string[] s=new string [n];
for (int i = 0; i < n; i++)
{
Console.Write("Enter string {0}:", i + 1 );
s[i]=Console.ReadLine();
}
for (int i = 0; i < n; i++)
{
Console.WriteLine("String : {0}\tSize : {1}",
s[i], s[i].Length);
}
444 ‫الکترونیکی‬
Console.ReadKey();
}
}
}

،‫ رشته را میخوانزد و رشزتهای کزه بزیشتزرین طزول را دارد‬n ‫ سپس‬،‫ را خوانده‬n ‫ برنامه ای که ابتدا‬.61
maxLen ،)‫ (شزمارنده‬i ،)‫ (تعداد رشزتههزا‬n ،)‫ (آرایهای از رشته‬s ‫ در این برنامه متغیرهای‬.‫نمایش میدهد‬
.‫ (رشتهای که بیشترین طول را دارد) را داریم‬maxString ‫(بیشترین طول رشته) و‬
using System;
namespace p86
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter n: ");
int n = int.Parse(Console.ReadLine());
string[] s = new string[n];
for (int i = 0; i < n; i++)
{
Console.Write("Enter string {0}:", i + 1);
s[i] = Console.ReadLine();
}
string maxString="";
int maxLen = 0;
for (int i = 0; i < n; i++)
{
if (s[i].Length >= maxLen)
{
maxLen = s[i].Length;
maxString = s[i];
}
}
Console.Write("Max lenght string is {0}",
maxString);
Console.ReadKey();
}
}
}
‫پیوست‬ ‫‪444‬‬

‫‪ .66‬برنامهای که ابتدا ‪ n‬را خوانده‪ ،‬سپس ‪ n‬رشته را میخواند و رشتههزایی کزه حزرف اول و آخزر آ هزا‬
‫یکسا باشد را نمایش میدهد‪ .‬در این برنامه متغیرهای ‪( n‬تعداد رشته ورودی)‪ ،‬و ‪( i‬شمارنده) را داریم‪.‬‬
‫;‪using System‬‬
‫‪namespace p87‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)" ‪Console.Write("Enter n:‬‬
‫;))(‪int n = int.Parse(Console.ReadLine‬‬
‫;]‪string[] s = new string[n‬‬
‫)‪for (int i = 0; i < n; i++‬‬
‫{‬
‫;)‪Console.Write("Enter string {0}:", i + 1‬‬
‫;)(‪s[i] = Console.ReadLine‬‬
‫}‬
‫)‪for (int i = 0; i < n; i++‬‬
‫{‬
‫)]‪if (s[i][s[i].Length - 1] == s[i][0‬‬
‫{‬
‫;) ]‪Console.WriteLine(s[i‬‬
‫}‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .66‬برنامهای که ابتدا ‪ n‬را خوانده‪ ،‬سزپس ‪ n‬رشزته را خوانزده و در پایزا یزک کزاراکتر را مزیخوانزد و‬
‫رشتههایی که با این کاراکتر شرو میشوند یا پایا مییابند را نمایش میدهد‪ .‬در این برنامه متغیرهزای ‪n‬‬
‫(تعداد رشتهها)‪( s ،‬آرایهای از رشتهها)‪( ch ،‬کاراکتر ورودی) و ‪( i‬شمارنده) را داریم‪.‬‬
‫;‪using System‬‬
‫‪namespace p88‬‬
‫{‬
‫‪class Program‬‬
‫{‬
449 ‫الکترونیکی‬
static void Main(string[] args)
{
Console.Write("Enter n: ");
int n = int.Parse(Console.ReadLine());
string[] s = new string[n];
for (int i = 0; i < n; i++)
{
Console.Write("Enter string {0}:", i + 1);
s[i] = Console.ReadLine();
}
Console.Write("Enter a char:");
char ch = char.Parse(Console.ReadLine());
for (int i = 0; i < n; i++)
{
if (s[i][s[i].Length - 1]== ch || s[i][0] == ch)
{
Console.WriteLine(s[i]);
}
}
Console.ReadKey();
}
}
}

‫ سپس یک کاراکتر را میخواند و بزین حزروف رشزته آ کزاراکتر را‬،‫ برنامهای که یکرشته را خوانده‬.66
.‫ تا اندازه رشته) را داریم‬0 ‫ (شمارنده از‬i ‫ اضافهشده است) و‬ch ‫(رشتهای که بین حروف آ حرف‬
using System;
namespace p89
{
class Program
{
static string appCh(string s, char ch)
{
string s1="";
for (int i = 0; i < s.Length; i++)
{
s1 += s[i];
s1 += ch;
}
return s1;
}
static void Main(string[] args)
{
Console.Write("Enter a string :");
string s= Console.ReadLine();
Console.Write("Enter a char:");
‫پیوست‬ 444

char ch=char.Parse(Console.ReadLine());
s = appCh(s, ch);
Console.Write("Result is {0}", s);
Console.ReadKey();
}
}
}

‫ قرار میدهزد و رشزته‬S3 ‫ را خوانده و کاراکترها را یکدرمیا در رشته‬S2 ‫ و‬S1 ‫ برنامه ای که رشتههای‬.11
Count ‫ (رشزته نتیجزه) و‬S3 ،)‫ (رشته دوم‬S2 ،)‫ (رشته اول‬S1 ‫ در این برنامه متغیرهای‬.‫ را نمایش می دهد‬S3
.‫(برای پیمایش کاراکترهای رشته اول و دوم) را داریم‬
using System;
namespace p90
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter a string 1:");
string s1 = Console.ReadLine();
Console.Write("Enter a string 2:");
string s2 = Console.ReadLine();
string s3 = "";
int count = 0;
while (count < s1.Length && count < s2.Length)
{
s3 += s1[count];
s3 += s2[count];
count++;
}
if (count == s1.Length && count < s2.Length)
{
while (count < s2.Length)
{
s3 += s2[count];
count++;
}
}
else if (count == s2.Length && count < s1.Length)
{
while (count < s1.Length)
{
s3 += s1[count];
count++;
}
}

Console.Write("String : {0}", s3);


Console.ReadKey();
}
}
}
444 ‫الکترونیکی‬

.‫ نمایش مزیدهزد‬،‫ کاراکتری از رشته که بیشترین کد اسکی را دارد‬،‫ برنامه ای که رشتهای را خوانده‬.60
.‫ (شمارنده) را داریم‬i ‫ (بارگترین کاراکتر) و‬max ،)‫ (رشته ورودی‬s ‫در این برنامه متغیرهای‬
using System;
namespace p91
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter a string:");
string s = Console.ReadLine();
char max =(char) 0;
for (int i = 0; i < s.Length; i++)
{
if (s[i] >= max)
{
max = s[i];
}
}
Console.Write("Max :{0}", max );
Console.ReadKey();
}
}
}

‫ در ایزن‬.‫ برنامهای که رشتهای را از ورودی خوانده و تمام کاراکترهای تکراری آ را حذف مینمایزد‬.62
.‫ (شمارندههایی برای پیمایش کاراکترهای رشته) را داریم‬j ‫ و‬i ،)‫ (رشته ورودی‬s ‫برنامه متغیرهای‬
using System;
namespace p92
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter a string:");
string s = Console.ReadLine();
for (int i = 0; i < s.Length; i++)
{
for (int j = i + 1; j < s.Length; j++)
{
if (s[i] == s[j])
{

s = s.Remove(j);
}
}
}
Console.Write("Result :{0}", s );
Console.ReadKey();
‫پیوست‬ ‫‪444‬‬

‫}‬
‫}‬
‫}‬

‫‪ .61‬برنامه ای که دو رشته را خوانده‪ ،‬حروف مشتر بین آ ها را نمایش میدهد‪ .‬در این برنامه متغیرهزای‬
‫‪( S1‬رشته اول)‪( S2 ،‬رشته دوم)‪( i ،‬شمارندهای برای پیمایش رشته اول)‪( j ،‬شمارندهای برای پیمزایش رشزته‬
‫دوم) و ‪( flag‬آیا کاراکتر فعلی رشته اول در رشته دوم وجود دارد یا نه) را داریم‪.‬‬
‫;‪using System‬‬
‫‪namespace p93‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;)"‪Console.Write("Enter a string 1:‬‬
‫;)(‪string s1 = Console.ReadLine‬‬
‫;)"‪Console.Write("Enter a string 2:‬‬
‫;)(‪string s2 = Console.ReadLine‬‬
‫;‪bool flag = false‬‬
‫;)"‪Console.Write("Result :‬‬
‫)‪for (int i = 0; i < s1.Length; i++‬‬
‫{‬
‫;‪flag = false‬‬
‫)‪for (int j = 0; j < s2.Length; j++‬‬
‫{‬
‫)‪if (s1[i] == s2[j] && flag == false‬‬
‫{‬
‫;)]‪Console.Write(s1[i‬‬
‫;‪flag = true‬‬
‫}‬
‫}‬
‫;‪flag = false‬‬
‫}‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬

‫‪ .64‬برنامهای که رشتهای را خوانده‪ ،‬سپس دو عدد را میخواند و با توجه به اعزداد خوانزدهشزده‪ ،‬حزروف‬
‫مکا های آ ها را جابجا نماید‪ .‬در این برنامه از متد ‪ Change‬بهصورت زیر استفاده میشود‪:‬‬
‫‪String Change (String s, int n1, int n2),‬‬
‫بهعنوانمثال‪ ،‬ا)ر متد ‪ Change‬بهصورت زیر دراخوانی شود‪:‬‬
‫)‪Change ("Fanavarienovin", 3, 5‬‬
‫متد‪ ،‬رشته "‪ "Favanari novin‬را برمی)رداند‪.‬‬
444 ‫الکترونیکی‬
using System;
namespace p94
{
class Program
{
static string change(string s, int n1, int n2)
{
string s1 = "";
if (n1 <= s.Length && n2 <= s.Length)
{
char ch1 = s[n2 - 1];
char ch2 = s[n1 - 1];
for(int i=0; i < s.Length; i++)
{
if (i == n1 - 1) s1 = s1 + ch1.ToString();
else if (i == n2 - 1)
s1 = s1 + ch2.ToString();
else s1 = s1 + s[i].ToString();
}
}
else
{
Console.Write("adad bzorg tar az size string ast");
s1 = s;
}
return s1;
}
static void Main(string[] args)
{
Console.Write("Enter a string:");
string s = Console.ReadLine();
Console.Write("Enter number 1 : ");
int n1=Convert.ToInt32(Console.ReadLine());
Console.Write("Enter Number 2 : ");
int n2=Convert.ToInt32(Console.ReadLine());
s = change(s, n1, n2);
Console.Write("String :{0}", s);
Console.ReadKey();
}
}
}
‫م دان پایدان‬ ‫ (انددی‬n2 ،)‫ (اندی م ان شروف تعویض‬n1 ،)‫ (رشته ورودی‬s ‫در این برنامه متغیرهای‬
.‫ (کاراکتر م ان پایان تعویض) را داریم‬ch2 ‫ (کاراکتر م ان شروف تعویض) و‬ch1 ،)‫تعویض‬

‫ اگزر‬.‫ تغییزر یابزد‬n ‫ برنامه ای که تعداد فاصله اضافی به سمت چپ رشته اضافه میکند تا اندازه رشته به‬.65
.‫ رشته هیچ تغییر نمییابد‬،‫ باشد‬n ‫اندازه رشته بارگتر یا مساوی‬
using System;
namespace p95
{
class Program
‫پیوست‬ 440

{
static string padLeft(string s, int n)
{
if (s.Length >= n)
{
return s;
}
string j = "";
for (int i = 0; i < n - s.Length; i++)
{
j += " ";
}
j += s;
return j;
}
static void Main(string[] args)
{
Console.Write("Enter a string:");
string s = Console.ReadLine();
Console.Write("Enter a number : ");
int n = Convert.ToInt32(Console.ReadLine());
s = padLeft(s, n);
Console.Write("Result : {0}", s);
Console.ReadKey();
}
}
}
‫( را بدهعندوان پدارامتر‬n) ‫( و طدول آن‬s) ‫ داریم که یدکرشدته‬PadLeft( ) ‫در این برنامه متدی به نام‬
‫ تغییدر مدیدهدد (امضدای متدد‬n ‫ در ابتدای آن بده طدول‬Blank ‫ رشته موردنظر را با ادزودن‬،‫دریادت کرده‬
:)‫بهصورت زیر است‬
String PadLeft (String s, int n);
i ‫ (رشددته جدیددد تولیدشددده) و‬j ،)‫ (طددول جدیددد رشددته‬n ،)‫ (رشددته ورودی‬s ‫در ایددن برنامدده متغیرهددای‬
.‫(شمارندهای برای پیمای رشته) را داریم‬

‫ در این برنامزه‬.‫' را به همراه کد اسکی آ ها نمایش میدهد‬Z' ‫' تا‬A' ‫' و‬Z' ‫' تا‬a' ‫ برنامه ای که حروف‬.61
‫ (کزد‬j ‫(کد اسکی هر حرف بزارگ) و‬i ،)‫ (هر حرف کوچک‬lowCh ،)‫ (هر حرف بارگ‬upCh ‫متغیرهای‬
:‫اسکی هر حرف کوچک) را داریم‬
using System;
namespace p96
{
class Program
{
static void Main(string[] args)
{
char upCh, lowCh;
int j = 97;
for (int i = 65; i <= 90; i++)
{
444 ‫الکترونیکی‬
upCh = (char)i;
lowCh = (char)j;
Console.Write("{0}={1}\t{2}={3}\t", upCh,i, lowCh, j);
j++;
}
Console.ReadKey();
}
}
}

‫ در ایزن‬.‫ نمزایش مزیدهزد‬،‫ برنامه ای که رشتهای را خوانده و کاراکتری که بیشترین تکزرار را دارد‬.66
maxCh ،)‫ (حزداکثر تکزرار‬max ،)‫ (تعزداد تکزرار هزر کزاراکتر‬Count ،)‫ (رشته ورودی‬s ‫برنامه متغیرهای‬
،)‫ (کاراکتر فعلی که تعداد تکرار آ در حال شمارش اسزت‬t ،)‫(کاراکتری که بیش از همه تکرار شده است‬
‫ (متغیر کمکزی بزرای جابجزایی‬temp ،)‫ (تعداد تکرار کاراکتر فعلی‬Count ،)‫ (شمارنده برای پیمایش رشته‬i
.‫ (آیا جابجایی ًزم است) را داریم‬flag ‫کاراکترها) و‬
using System;
namespace p97
{
class Program
{
static string sortString(string s1)
{
char temp;
int flag = 1;
char[] s = new char[s1.Length];
s1.CopyTo(0, s, 0, s1.Length);
while (flag == 1)
{
flag = 0;
for (int i = 0; i < s.Length - 1; i++)
{
if (s[i] > s[i + 1])
{
temp = s[i];
s[i] = s[i + 1];
s[i + 1] = temp;
flag = 1;
}
}
}
s1 = "";
foreach (char ch in s)
{
s1 = s1 + ch.ToString();
}
return s1;
}
static void Main(string[] args)
{
string s;
int count = 0;
‫پیوست‬ 444

int max = 0;
char maxCh =(char) 0;
char t = (char)0;
Console.Write("Enter a string : ");
s = Console.ReadLine();
s = sortString(s);
t = s[0];
for (int i = 1; i < s.Length; i++)
{
if (s[i] == t)
{
count++;
}
else
{
count = 0;
}
if (count > max)
{
max = count;
maxCh = s[i];
}
t = s[i];
}
Console.Write("Max Char Repeat :{0}\nCount Repeat :
{1} ", maxCh, max + 1 );
Console.ReadKey();
}
}
}

‫ در این برنامه متغیرهای‬.‫ رشته دوم را به وسط رشته اول اضافه میکند‬،‫ برنامه ای که دو رشته را خوانده‬.66
.‫ (رشته دوم) را داریم‬S2 ‫ (رشته اول) و‬S1
using System;
namespace p98
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter a string 1: ");
string s1 = Console.ReadLine();
Console.Write("Enter a string 2: ");
string s2 = Console.ReadLine();
s1=s1.Insert( ((int)s1.Length / 2), s2);
Console.Write("Result is : {0}",s1);
Console.ReadKey();
}
}
}
444 ‫الکترونیکی‬

‫ حروف بارگ آ کاراکتر را اضافه‬،‫ برنامهای که رشتهای را خوانده و بعد از هر یک از حروف کوچک‬.66
.‫" تبدیل میشود‬TrReEeE" ‫" به رشته‬Tree" ‫ رشته‬،‫ بهعنوا مثال‬.‫میکند‬
using System;
namespace p99
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter a string: ");
string s = Console.ReadLine();
string r = "";
for (int i = 0; i < s.Length; i++)
{
if (s[i] >= 95 && s[i] <= 122)
{
r += ((char)((int) s[i] - 32)).ToString();
s= s.Insert(i + 1, r);
r = "";
}
}
Console.Write("Result is : {0}", s);
Console.ReadKey();
}
}
}
‫ (رشته تاکنون بهعالوه یک کاراکتر بزرگ‬r ،)‫ (رشته ورودی و رشته نتیعه‬s ‫ متغیرهای‬،‫در این برنامه‬
.‫(شمارندهای برای پیمای کاراکترهای رشته) را داریم‬i ‫بعد از کاراکتر کوچک) و‬

.‫ امین کاراکتر رشته اول در مینماید‬n ‫ برنامهای که دو رشته را دریافت کرده و رشته دوم را بعد از‬.011
:‫ استفادهشده که دارای اعضای زیر است‬insert ‫در این برنامه متد‬
String insert (string s1, string s2, int n);
using System;
namespace p100
{
class Program
{
static string insert(string s1, string s2, int n)
{
return s1.Insert(n + 1, s2);
}
static void Main(string[] args)
{
Console.Write("Enter string 1: ");
string s1 = Console.ReadLine();
Console.Write("Enter string 2: ");
‫پیوست‬ ‫‪444‬‬

‫;)(‪string s2 = Console.ReadLine‬‬
‫;)" ‪Console.Write("Enter n:‬‬
‫;))(‪int n=int.Parse(Console.ReadLine‬‬
‫;)‪s1 = insert(s1, s2, n‬‬
‫;)‪Console.Write("Result is : {0}", s1‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه متغیرهای ‪( S1‬رشته اول)‪( S2 ،‬رشته دوم) و ‪( n‬م انی کده رشدته دوم بایدد در رشدته اول‬
‫درج شود) را داریم‪.‬‬

‫‪ .010‬برنامه ای که تعدادی رشته را خوانده (برای خاتمه برنامه رشته پایانی ‪ Finish‬وارد میگزردد)‪ ،‬تعزداد‬
‫رشتههایی که در آ ها کاراکترهای رقمی ('‪ '0‬تا '‪ )'9‬وجود دارد را شمارش میکند‪.‬‬
‫;‪using System‬‬
‫‪namespace p101‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪string s‬‬
‫;‪int count = 0, i, has‬‬
‫) ; ;( ‪for‬‬
‫{‬
‫;)"‪Console.Write("Enter a string:‬‬
‫;;)(‪s=Console.ReadLine‬‬
‫)"‪if (s == "finish‬‬
‫;‪break‬‬
‫;‪has = 0‬‬
‫)‪for (i = 0; i < s.Length; i++‬‬
‫)'‪if (s[i] >= '0' && s[i] <= '9‬‬
‫{‬
‫;‪has = 1‬‬
‫;‪break‬‬
‫}‬
‫;‪if (has == 1) count++‬‬
‫}‬
‫;)‪Console.Write("Count is {0}", count‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این برنامه متغیرهای ‪( s‬رشتههای خواندهشده)‪( Count ،‬تعداد رشتههایی که در آنها رقدم وجدود‬
‫دارد)‪( i ،‬شمارنده برای پیمای هر کاراکتر رشته) و ‪( hgs‬آیا در رشته کاراکتر رقمی وجود دارد (مقددار‬
‫‪ )1‬یا خیر (مقدار ‪ ))0‬را داریم‪.‬‬
449 ‫الکترونیکی‬

‫ تشخیص میدهد که آیا این ماتریس یک ماتریسی اسپارس اسزت‬،‫ برنامهای که یک ماتریس را خوانده‬.012
‫ حزداقل‬،‫ باشد‬n×m ‫ اگر ماتریس‬،‫ یعنی‬.‫یا نه؟ ماتریسی اسپارس است که حداقل نصف عناصر آ صفر باشند‬
.‫( عناصر آ صفر باشد‬n*m)/2
using System;
namespace p102
{
class Program
{
const int SIZE = 4;
static void Main(string[] args)
{
int[,] A = new int[SIZE, SIZE];
int row, col, total = 0;
/* Input elements in matrix from user */
Console.Write("Enter elements in matrix of size 4x4: \n");
for (row = 0; row < SIZE; row++)
{
string [] s = Console.ReadLine().Split(' ');
for (col = 0; col < SIZE; col++)
{
A[row, col] = int.Parse(s[col]);
}
}
/* Count total number of zero elements in the matrix */
for (row = 0; row < SIZE; row++)
{
for (col = 0; col < SIZE; col++)
{
/* If the current element is zero */
if (A[row, col] == 0)
{
total++;
}
}
}
if (total >= (SIZE * SIZE) / 2)
{
Console.WriteLine("\nThe given matrix is a
Sparse matrix.");
}
else
{
Console.WriteLine("\nThe given matrix is not
Sparse matrix.");
}
Console.ReadKey();
}
}
}
‫پیوست‬ 444

row ،)‫ (مدداتری مددوردنظر‬A ،) ‫ (تعدداد سددطرها و سددتونهدای مدداتری‬SIZE ‫در ایدن برنامدده ثابددت‬
total ‫ (شمارندهای برای پیمای ستونهای ماتری ) و‬col ،) ‫(شمارندهای برای پیمای سطرهای ماتری‬
.‫(تعداد عناصر صفر ماتری ) را داریم‬

‫ برنامه ای که یک ماتریس را میخواند و تعیین میکند که آیا متقار است یا خیزر؟ ماتریسزی متقزار‬.011
:‫ ماتریس زیر متقار است‬،‫ بهعنوا مثال‬A=AT ‫ یعنی‬.‫است که برابر ترانهاده خودش باشد‬
T
1 2 3  1 2 3
2 4 5  4 5
   2 

3 5 8  3 5 8

using System;
namespace p103
{
class Program
{
const int SIZE = 3;
static void Main(string[] args)
{
int[,] A = new int[SIZE, SIZE];
int[,] B = new int[SIZE, SIZE];
int row, col, isSymmetric;
/* Input elements in matrix from user */
Console.Write("Enter elements in matrix of size 3x3: \n");
for (row = 0; row < SIZE; row++)
{
string[] s = Console.ReadLine().Split(' ');
for (col = 0; col < SIZE; col++)
{
A[row, col] = int.Parse(s[col]);
}
}
/* Find transpose of matrix A */
for (row = 0; row < SIZE; row++)
{
for (col = 0; col < SIZE; col++)
{
/* Store each row of matrix A to each column of matrix B */
B[row, col] = A[col, row];
}
}

/* Check whether matrix A is equal to its transpose or not */


isSymmetric = 1;
for (row = 0; row < SIZE && isSymmetric==1; row++)
{
for (col = 0; col < SIZE; col++)
444 ‫الکترونیکی‬
{
/* If matrix A is not equal to its transpose */
if (A[row, col] != B[row,col])
{
isSymmetric = 0;
break;
}
}
}
/*
* If the given matrix is symmetric.
*/
if (isSymmetric == 1)
{
Console.WriteLine("The given matrix is Symmetric
matrix:");
for (row = 0; row < SIZE; row++)
{
for (col = 0; col < SIZE; col++)
{
Console.Write("{0}\t", A[row,col] );
}

Console.WriteLine();
}
}
else
{
Console.WriteLine("The given matrix is not
Symmetric matrix.");
}
Console.ReadKey();
}
}
}
‫ (ترانهاده ماتری‬B ،)‫ (ماتری ورودی‬A ،) ‫ (تعداد سطرها و ستونهای ماتری‬SIZE ‫در این برنامه‬
‫ (شدددمارندهای بدددرای پیمدددای سدددتونهدددا) و‬col ،)‫ (شدددمارندهای بدددرای پیمدددای سدددطرها‬row ،)A
.‫)؟) را داریم‬0( ‫) یا نه‬1( ‫ (آیا متقارن است‬isSymmetric

.‫ تعداد هر رقم استفادهشده در آ را نمایش میدهد‬،‫ برنامهای که یک عدد را خوانده‬.014


using System;
namespace p104
{
class Program
{
const int BASE = 10;
static void Main(string[] args)
{
long num, n;
‫پیوست‬ 444

int i, lastDigit;
int[] freq = new int[BASE];
Console.Write("Enter a number: ");
num = long.Parse(Console.ReadLine());
/* Copy the value of 'num' to 'n' */
n = num;
/* Run till 'n' is not equal to zero */
while (n != 0)
{
/* Get last digit */
lastDigit = (int)n % 10;
/* Remove last digit */
n /= 10;
/* Increment frequency array */
freq[lastDigit]++;
}
/* Print frequency of each digit */
Console.WriteLine("Frequency of each digit in {0} is
", num);
for (i = 0; i < BASE; i++)
{
if (freq[i] > 0)
Console.WriteLine("Frequency of {0} = {1}", i,
freq[i]);
}
Console.ReadKey();
}
}
}
‫ تغییر مییابد در ایدن متغیدر‬num ‫ (عدد ورودی یعنی‬n ،)‫ (عدد ورودی‬num ‫در این برنامه متغیرهای‬
‫ عنصدر از‬11 ‫ (آرایهای بدا‬freq ‫) و‬num ‫ (آخرین رقم‬lastdigit ،)11 ‫ تا‬1 ‫ (شمارنده از‬i ،)‫قرار می)یرد‬
.‫ را نگهداری میکند) را داریم‬1 ‫ که تعداد ارقام صفر تا‬1 ‫ تا‬0 ‫اندی‬

‫ در ایزن‬.‫ متمم یک آ را نمایش مزیدهزد‬،‫ را بهصورت رشته خوانده‬2 ‫ برنامه ای که یک عدد مبنای‬.015
‫ (شمارنده بزرای‬i ،)‫ (متمم یکرشته دودویی واردشده‬onescom ،)‫ (رشته دودویی‬binary ‫برنامه متغیرهای‬
‫) ؟‬0 ‫) یا خیر (مقدار‬0 ‫ (آیا رشته ورودی باینری است (مقدار‬error ‫) و‬binary ‫پیمایش کاراکترهای رشته‬
using System;
namespace p105
{
class Program
{
const int SIZE = 32;
static void Main(string[] args)
{
string onesComp = "";
int i, error = 0;
444 ‫الکترونیکی‬
Console.Write("Enter {0} bit binary value: ", SIZE);
string binary = Console.ReadLine();
for (i = 0; i < binary.Length; i++)
{
if (binary[i] == '1')
{
onesComp += "0";
}
else if (binary[i] == '0')
{
onesComp += "1";
}
else
{
Console.Write("Invalid Input");
error = 1;

/* Exits from loop */


break;
}
}
/* Check if there are binary string contains no error */
if (error == 0)
{
Console.WriteLine("Original binary = {0}",
binary);
Console.WriteLine("Ones complement = {0}",
onesComp);
}
Console.ReadKey();
}
}
}

‫ بزرای‬.‫ تبدیل میکند و نمزایش مزیدهزد‬6 ‫ به مبنای‬،‫ برنامه ای که یک عدد باینری را دریافت کرده‬.011
‫ را جزایگاین هزر سزه‬6 ‫ عدد را سه رقم سه رقم جدا کرده و معادل مبنزای‬6 ‫تبدیل عدد از باینری به مبنای‬
:)‫رقم میکند (مطابل جدول زیر‬
2 ‫معادل مبنای‬ 8 ‫معادل مبنای‬ ‫معادل باینری‬ 8 ‫معادل مبنای‬
001 1 000 0
011 3 010 2
101 5 100 4
111 7 110 6
)154 ‫( است (یعنی معادل‬01)1 ‫( و‬101)5 ،(101)6 ‫ معادل آن‬،‫ باشد‬01101100 ‫ا)ر عدد باینری‬
using System;
namespace p106
{
class Program
{
static void Main(string[] args)
‫پیوست‬ 440

{
int[] octalConstant = new int[8] { 0, 1, 10, 11,
100, 101, 110, 111 };
long binary, octal, tempBinary;
int digit, place, i;
octal = 0;
place = 1;
/* Input binary number from user */
Console.Write("Enter any binary number: ");
binary = long.Parse(Console.ReadLine());
/* Copy original binary value to temp variable */
tempBinary = binary;
while (tempBinary != 0)
{
/* Extract last three digit of binary */
digit = (int)tempBinary % 1000;
/* Find octal equivalent of 3 digit binary */
for (i = 0; i < 8; i++)
{
if (octalConstant[i] == digit)
{
/*
* Increase the place value of octal
* and add the previous octal value
*/
octal = (i * place) + octal;
break;
}
}
/* Remove the last three digit of binary */
tempBinary /= 1000;
/* Increase the place value */
place *= 10;
}
Console.WriteLine("Original binary number = {0}",
binary);
Console.WriteLine("Octal number = {0}", octal);
Console.ReadLine();
}
}
}

‫ هر چهار بیت‬.‫ تبدیل مینماید و نمایش میدهد‬01 ‫ به مبنای‬،‫ خوانده‬2 ‫ برنامهای که عددی در مبنای‬.016
:)‫ است (معادل جدول زیر‬01 ‫ معادل یک رقم مبنای‬2 ‫مبنای‬
2 ‫ مبنای‬15 ‫مبنای‬ 2 ‫ مبنای‬14 ‫مبنای‬ 2 ‫ مبنای‬14 ‫مبنای‬ 2 ‫ مبنای‬14 ‫مبنای‬
0011 3 0010 2 0001 1 0000 0
0111 7 0110 6 0101 5 0100 4
1011 B 1010 A 1001 9 1000 8
1111 F 1110 E 1101 D 1100 C
444 ‫الکترونیکی‬

(1=0001, 7=0111, E=1101, 5=0101) 1705 ‫ معدادل‬1011111010101 ‫ عددد بداینری‬،‫بهعنوانمثال‬


.‫است‬
using System;
namespace p107
{
class Program
{
static void Main(string[] args)
{
int [] hexConstant=new int[16] {0, 1, 10, 11,
100, 101, 110, 111, 1000, 1001, 1010, 1011,
1100, 1101, 1110, 1111};
long binary, tempBinary, digit;
string hex="";
int index, i;
/* Input binary number from user */
Console.Write("Enter binary number: ");
binary= Convert.ToInt64(Console.ReadLine());
/* Copy binary number to temp variable */
tempBinary = binary;
index = 0;
/* Find hexadecimal of binary number */
while(tempBinary!=0)
{
/* Group binary to last four digits */
long digit1 = tempBinary / 10000;
digit = tempBinary - digit1 * 10000;
/* Find hexadecimal equivalent of last four digit */
for(i=0; i<16; i++)
{
if(hexConstant[i] == digit)
{
if(i<10)
{
/* 0-9 integer constant */
hex = ((char)(i + 48)).ToString()+hex;
}
else
{
/* A-F character constant */
hex = ((char)((i-10) + 65)).ToString()+hex;
}
index++;
break;
}
}

/* Remove the last 4 digits as it is processed */


tempBinary /= 10000;
}
/* Reverse the hex digits */
Console.WriteLine("Binary number = {0}", binary);
Console.WriteLine("Hexadecimal number = {0}", hex);
Console.ReadKey();
}
}
}
‫پیوست‬ 444

‫ را خوانززد و مقززدار مززاکایمم‬z ‫ و‬y ،x ‫ عنصززر و سززه عززدد‬n ‫ برنامززهای کززه یززک آرایززه بززا‬.016
.‫ پیداکرده و نمایش میدهد‬i<=j<=k ‫( را برای‬x*a[i])+(y*a[j]+(z*a[k])
using System;
namespace p108
{
class Program
{
static int maximizeExpr(int[] a, int n, int x, int y, int z)
{
// Traverse the whole array and compute
// left maximum for every index.
int[] L = new int[n];
L[0] = x * a[0];
for (int i = 1; i < n; i++)
L[i] = Math.Max(L[i - 1], x * a[i]);
// Compute right maximum for every index.
int[] R = new int[n];
R[n - 1] = z * a[n - 1];
for (int i = n - 2; i >= 0; i--)
R[i] = Math.Max(R[i + 1], z * a[i]);
// Traverse through the whole array to
// maximize the required expression.
int ans = int.MinValue; ;
for (int i = 0; i < n; i++)
ans = Math.Max(ans, L[i] + y * a[i] + R[i]);
return ans;
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
int[] a = new int[n];
Console.Write("Enter {0} numbers:", n);
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
a[i] = int.Parse(input[i]);
int x = 1, y = 2, z = -3;
Console.Write("Enter x, y, z:");
input = Console.ReadLine().Split(' ');
x = int.Parse(input[0]); y = int.Parse(input[1]);
z = int.Parse(input[2]); ;
Console.WriteLine(maximizeExpr(a, n, x, y, z));
Console.ReadKey();
}
}
}
444 ‫الکترونیکی‬

،‫ بهعنوا مثزال‬.‫ کلمات آ را از انتها به ابتدای رشته نمایش میدهد‬،‫ برنامه ای که رشتهای را خوانده‬.016
:‫اگر ورودی بهصورت زیر باشد‬
I Like Cat Programming
.‫خروجی بهصورت زیر خواهد بود‬
Programming Cat Like I
using System;
namespace p109
{
class Program
{
static void Main()
{
string s = "";
Console.Write("Enter a string:");
s = Console.ReadLine();
string[] words = new string[s.Split(' ').Length];
words = s.Split(' ');
string temp = "";
for (int i = words.Length - 1; i >= 0; i--)
temp = temp + words[i] + " ";
Console.Write(temp);
Console.ReadKey();
}
}
}

‫( را میخواند و در رشزته جسزتوجزو‬Pat) ‫( و سپس یک الگو‬TXT) ‫ برنامهای که رشتهای را خوانده‬.001


.‫ را نمایش میدهد‬TXT ‫ در‬Pat ‫ مکا های وقو‬.‫مینماید‬
‫ ا)ر‬،‫بهعنوانمثال‬
TXT= "AABAACAADAABAABA"
Pat= "AAB"
:‫داده شود‬ ‫ خروجی بهصورت زیر نمای‬،‫باشد‬
Pattern Found at index 0
Pattern Found at index 9
Pattern Found at index 12
using System;
namespace p110
{
class Program
{
static void search(string pat, string txt)
{
int M = pat.Length;
int N = txt.Length;
/* A loop to slide pat[] one by one */
for (int i = 0; i <= N - M; i++)
{
int j;
/* For current index i, check for pattern match */
for (j = 0; j < M; j++)
‫پیوست‬ 444

if (txt[i + j] != pat[j])
break;
if (j == M)
Console.WriteLine("Pattern found at index
{0}", i );
}
}
static void Main(string[] args)
{
string txt = "AABAACAADAABAAABAA";
string pat = "AABA";
Console.Write("Enter a string:");
txt = Console.ReadLine();
Console.Write("Enter pattern:");
pat = Console.ReadLine();
search(pat, txt);
Console.ReadKey();
}
}
}

‫هزای‬0 ،‫ یا یک با ترتیب تصادفی هستند را خوانزده‬0 ‫ عنصر که مقادیر آ ها‬n ‫ برنامهای که آرایهای با‬.000
‫ اگزر آرایزه‬،‫ بزهعنزوا مثزال‬.‫ نمایش میدهزد‬،‫ها را به سمت راست آرایه منتقل کرده‬0 ‫را به سمت چپ و‬
:‫ورودی بهصورت زیر باشد‬
[0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0]
:‫خروجی بهصورت زیر خواهد بود‬
[0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1]
using System;
namespace p111
{
class Program
{
static void segregate0and1(int[] arr, int n)
{
int count = 0; // counts the no of zeros in arr

for (int i = 0; i < n; i++)


{
if (arr[i] == 0)
count++;
}
// loop fills the arr with 0 until count
for (int i = 0; i < count; i++)
arr[i] = 0;
// loop fills remaining arr space with 1
for (int i = count; i < n; i++)
arr[i] = 1;
}
// function to print segregated array
static void print(int[] arr, int n)
{
449 ‫الکترونیکی‬
Console.Write("Array after segregation is ");
for (int i = 0; i < n; i++)
Console.Write("{0} ", arr[i]);
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
int[] arr = new int[n];
Console.Write("Enter {0} Numbers(0 or 1):", n);
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
arr[i] = int.Parse(input[i]);
segregate0and1(arr, n);
print(arr, n);
Console.ReadKey();

}
}
}

‫ را میخواند و ماکایمم عبارت زیر را نمزایش‬z ‫ و‬y ،x ‫ سپس سه عدد‬،‫ برنامهای که آرایهای را خوانده‬.002
:.‫میدهد‬
maxx  ai  y  a j  z  ak 
i  j  k ‫برای‬
.‫ بهصورت زیر باشد‬a ‫ ا)ر آرایه‬،‫بهعنوانمثال‬
a   1,2,3,4,  5
:‫ زیرا‬.‫ خواهد بود‬12 ‫ آنگاه خروجی‬،‫ باشد‬z= -3 ‫ و‬y=2 ، x=1 ‫و‬
1 1  2  2   3  5  12
using System;
namespace p112
{
class Program
{
static int maximizeExpr(int[] a, int n, int x, int y, int z)
{
// Traverse the whole array and compute
// left maximum for every index.
int[] L = new int[n];
L[0] = x * a[0];
for (int i = 1; i < n; i++)
L[i] = Math.Max(L[i - 1], x * a[i]);
// Compute right maximum for every index.
int[] R = new int[n];
R[n - 1] = z * a[n - 1];
for (int i = n - 2; i >= 0; i--)
R[i] = Math.Max(R[i + 1], z * a[i]);
// Traverse through the whole array to
// maximize the required expression.
int ans = int.MinValue;
for (int i = 0; i < n; i++)
‫پیوست‬ 404

ans = Math.Max(ans, L[i] + y * a[i] + R[i]);


return ans;
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
int[] a = new int[n];
Console.Write("Enter {0} Numbers:", n);
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
a[i] = int.Parse(input[i]);
int x = 1, y = 2, z = -3;
Console.Write("Enter x, y, z:");
input = Console.ReadLine().Split(' ');
x = int.Parse(input[0]); y = int.Parse(input[1]);
z = int.Parse(input[2]); ;
Console.Write("Max is {0}",maximizeExpr(a,n,x,y,z));
Console.ReadKey();
}
}
}

‫ دو عنصری را مییابد که حاصل جمع آ ها نادیکترین عزدد بزه‬،‫ برنامه ای که یک آرایه را خوانده‬.001
‫ برای انجام این برنامه باید عددی را پیدا کنیم که مینزیم قزدر مطلزل مجمزو دو عنصزر آرایزه‬.‫صفر است‬
.‫میباشد‬
using System;
namespace p113
{
class Program
{
static void minAbsSumPair(int[] arr, int arr_size)
{
int inv_count = 0;
int l, r, min_sum, sum, min_l, min_r;
/* Array should have at least two elements*/
if (arr_size < 2)
{
Console.Write("Invalid Input");
return;
}
/* Initialization of values */
min_l = 0;
min_r = 1;
min_sum = arr[0] + arr[1];
for (l = 0; l < arr_size - 1; l++)
{
for (r = l + 1; r < arr_size; r++)
{
sum = arr[l] + arr[r];
if (Math.Abs(min_sum) > Math.Abs(sum))
{
min_sum = sum;
404 ‫الکترونیکی‬
min_l = l;
min_r = r;
}
}
}
Console.Write(" The two elements whose sum is
minimum are {0} and {1}", arr[min_l], arr[min_r]);
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
int[] arr = new int[n];
Console.Write("Enter {0} Numbers:", n);
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
arr[i] = int.Parse(input[i]);
minAbsSumPair(arr, n);
Console.ReadKey();
}
}
}

.‫ ماکایمم مقدار اختالف بین هر دو عنصر آرایه را نمایش میدهد‬،‫ برنامهای که آرایها ی را خوانده‬.004
using System;
namespace p114
{
class Program
{
// Returns 0 if elements are equal
static int maxDiff(int[] arr, int arr_size)
{
int max_diff = arr[1] - arr[0];
int i, j;
for (i = 0; i < arr_size; i++)
{
for (j = i + 1; j < arr_size; j++)
{
if (arr[j] - arr[i] > max_diff)
max_diff = arr[j] - arr[i];
}
}
return max_diff;
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
int[] arr = new int[n];
Console.Write("Enter {0} Numbers:", n);
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
arr[i] = int.Parse(input[i]);
Console.Write("Maximum difference is {0}",
‫پیوست‬ 404

maxDiff(arr, n));
Console.ReadKey();
}
}
}

.‫ اعداد فرد و زو را از هم جدا میکند‬،‫ برنامهای که آرایهای را خوانده‬.005


using System;
namespace p115
{
class Program
{
static void segregateEvenOdd(int[] arr, int size)
{
/* Initialize left and right indexes */
int left = 0, right = size - 1;
while (left < right)
{
/* Increment left index while we see 0 at left */
while (arr[left] % 2 == 0 && left < right)
left++;
/* Decrement right index while we see 1 at right */
while (arr[right] % 2 == 1 && left < right)
right--;

if (left < right)


{
/* Swap arr[left] and arr[right]*/
swap(ref arr[left], ref arr[right]);
left++;
right--;
}
}
}
/* UTILITY FUNCTIONS */
static void swap(ref int a, ref int b)
{
int temp = a;
a = b;
b = temp;
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
int[] arr = new int[n];
Console.Write("Enter {0} Numbers:", n);
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
arr[i] = int.Parse(input[i]);
segregateEvenOdd(arr, n);
Console.WriteLine("Array after segregation ");
for (int i = 0; i < n; i++)
404 ‫الکترونیکی‬
Console.Write("{0}\t", arr[i]);
Console.ReadKey();
}
}
}

.‫باشزد‬ arr j  arri ‫ را پیدا میکند بهطوریکزه‬j-i ‫ برنامهای که آرایهای را خوانده و ماکایمم‬.001
:‫ بهعنوا مثال اگر آرایه بهصورت زیر باشد‬.‫سپس مقدار ماکایمم را نمایش میدهد‬
arr[ ] = {34, 8, 10, 3, 2, 80, 30, 33, 1}
.‫( است‬j= 7, i=1) ‫ که‬.‫میدهد‬ ‫ را نمای‬4 ‫آنگاه مقدار‬
using System;
namespace p116
{
class Program
{
static int maxIndexDiff(int[] arr, int n)
{
int maxDiff = -1;
int i, j;

for (i = 0; i < n; ++i)


{
for (j = n - 1; j > i; --j)
{
if (arr[j] > arr[i] && maxDiff < (j - i))
maxDiff = j - i;
}
}

return maxDiff;
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
int[] arr = new int[n];
Console.Write("Enter {0} Numbers:", n);
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
arr[i] = int.Parse(input[i]);
int maxDiff = maxIndexDiff(arr, n);
Console.Write("Max diff {0}", maxDiff);
Console.ReadKey();
}
}
}
‫پیوست‬ 400

‫ سزپس اطالعزات آرایزه را‬.‫ برنامه ای که یک آرایه دوبعدی تعریف کرده و مقداردهی اولیه مزیکنزد‬.006
:‫ اگر آرایه دوبعدی بهصورت زیر باشد‬،‫ بهعنوا مثال‬.‫بهصورت مارپیچی نمایش میدهد‬
:‫خروجی بهصورت زیر است‬
1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10
using System;
namespace p117
{
class Program
{
static void spiralPrint(int[,] a, int m, int n)
{
int i, k = 0, l = 0;
/* k - starting row index
m - ending row index
l - starting column index
n - ending column index
i - iterator
*/
while (k < m && l < n)
{
/* Print the first row from the remaining rows */
for (i = l; i < n; ++i)
{
Console.Write("{0} ", a[k, i]);
}
k++;
/* Print the last column from the remaining columns */
for (i = k; i < m; ++i)
{
Console.Write("{0} ", a[i, n - 1]);
}
n--;

/* Print the last row from the remaining rows */


if (k < m)
{
for (i = n - 1; i >= l; --i)
{
Console.Write("{0} ", a[m - 1, i]);
}
m--;
}
/* Print the first column from the remaining columns */
if (l < n)
{
for (i = m - 1; i >= k; --i)
{
Console.Write("{0} ", a[i, l]);
}
l++;
}
}
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
404 ‫الکترونیکی‬
Console.Write("Enter m:");
int m = int.Parse(Console.ReadLine());
int[,] a = new int[n, m];
for (int i = 0; i < n; i++)
{
Console.Write("Enter {0} Numbers:", m);
string[] input = Console.ReadLine().Split(' ');
for (int j = 0; j < m; j++)
a[i, j] = int.Parse(input[j]);
}
Console.Write("\nSpiral Print is ");
spiralPrint(a, n, m);
Console.ReadKey();
}
}
}
‫( یزا‬False)0 ‫ مقداردهی میکند (تمام عناصر آرایزه‬،‫ برنامهای که یک آرایه دوبعدی را تعریف کرده‬.006
‫ ام را برابر یک قزرار‬j ‫ ام و ستو‬i ‫ تمام عنصر سطر‬،‫) باشد‬0( ‫ برابر یک‬a[i][j] ‫ اگر عنصر‬،)‫( هستند‬True)1
:‫ اگر آرایه بهصورت زیر باشد‬،‫ بهعنوا مثال‬.‫میدهد‬
0 1 0
0 0 0
0 0 1
:‫خروجی بهصورت زیر است‬
1 1 1
0 1 1
0 1 1
using System;
namespace p118
{
class Program
{
static void modifyMatrix(bool[,] mat, int R, int C)
{
bool[] row = new bool[R];
bool[] col = new bool[C];
int i, j;
/* Initialize all values of row[] as 0 */
for (i = 0; i < R; i++)
{
row[i] = false;
}
/* Initialize all values of col[] as 0 */
for (i = 0; i < C; i++)
{
col[i] = false;
}
/* Store the rows and columns to be marked as 1 in
row[] and col[] arrays respectively */
for (i = 0; i < R; i++)
{
for (j = 0; j < C; j++)
{
‫پیوست‬ 404

if (mat[i, j] == true)
{
row[i] = true;
col[j] = true;
}
}
}
/* Modify the input matrix mat[] using the above
constructed row[] and col[] arrays */
for (i = 0; i < R; i++)
{
for (j = 0; j < C; j++)
{
if (row[i] == true || col[j] == true)
{
mat[i, j] = true;
}
}
}
}
static void printMatrix(bool[,] mat, int R, int C)
{
int i, j;
for (i = 0; i < R; i++)
{
for (j = 0; j < C; j++)
{
Console.Write("{0} ", mat[i, j]);
}
Console.Write("\n");
}
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
Console.Write("Enter m:");
int m = int.Parse(Console.ReadLine());
bool[,] mat = new bool[n, m];
for (int i = 0; i < n; i++)
{
Console.Write("Enter {0} bools:", m);
string[] input = Console.ReadLine().Split(' ');
for (int j = 0; j < m; j++)
mat[j, j] = bool.Parse(input[j]);
}
Console.Write("Input Matrix \n");
printMatrix(mat, n, m);
modifyMatrix(mat, n, m);
Console.Write("Matrix after modification \n");
printMatrix(mat, n, m);
Console.ReadKey();
}
}
}
404 ‫الکترونیکی‬

‫ برنامه ای که مقادیر چند آرایه را مقداردهی اولیه میکند و یک نقطه ثابتشده (عنصری از آرایه کزه‬.006
‫زز را نمزایش خواهزد‬0 ،‫ چنانچه نقطه ثابت نباشد‬.‫مقدار آ عنصر برابر اندیس آ است) را نمایش میدهد‬
:‫ آرایههای زیر را در نظر بگیرید‬،‫ بهعنوا مثال‬.‫داد‬
arr1= {-10, -5, 0, 3, 7}
arr2= {10, 2, 5, 8, 17}
.‫ است‬-1 ‫ خروجی‬arr2 ‫ است) و برای‬arr1[3]=3 ‫ (چون‬1 ‫ خروجی‬arr1 ‫برای‬
using System;
namespace p119
{
class Program
{
static int linearSearch(int []arr, int n)
{
int i;
for(i = 0; i < n; i++)
{
if(arr[i] == i)
return i;
}
/* If no fixed point present then return -1 */
return -1;
}
static void printArray(int[] arr, int n)
{
for (int i = 0; i < n; i++)
Console.Write("{0} ", arr[i]);
Console.WriteLine();
}
static void readArray(int[] arr, int n)
{
Console.Write("Enter {0} numbers:", n);
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
{
arr[i] = int.Parse(input[i]);
}
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
int[] arr = new int[n];
readArray(arr, n);
printArray(arr, n);
Console.WriteLine("Fixed Point is {0}",
linearSearch(arr, n));
int[] arr1 = new int[n];
readArray(arr1, n);
printArray(arr1, n);
Console.WriteLine("Fixed Point is {0}",
linearSearch(arr1, n));
int[] arr2 = new int[n];
readArray(arr2, n);
printArray(arr2, n);
Console.WriteLine("Fixed Point is {0}",
linearSearch(arr2, n));
‫پیوست‬ 404

Console.ReadKey();
}
}
}
‫ برنامه ای که آرایهای را تعریف کرده و مقداردهی اولیه میکند بهطوریکه مقزدار عناصزر آ ابتزدا‬.021
‫ ایزن برنامزه‬.‫ عنصر قبلی کمتر از عنصر بعدی است) و سپس عناصر آ کاهشزی اسزت‬،‫افاایشی است (یعنی‬
.‫بارگترین مقدار این نو آرایه را نمایش میدهد‬
:‫ ا)ر عناصر آرایه بهصورت زیر باشد‬،‫بهعنوانمثال‬
7 41 1 3 50 10
.‫ خواهد بود‬50 ‫خروجی‬
using System;
namespace p120
{
class Program
{
static int findMaximum(int[] arr, int n)
{
int max = arr[0];
int i;
for (i = 1; i < n; i++)
{
if (arr[i] > max)
max = arr[i];
else
return max;
}
return -1;
}
static void printArray(int[] arr, int n)
{
for (int i = 0; i < n; i++)
Console.Write("{0} ", arr[i]);
Console.WriteLine();
}
static void readArray(int[] arr, int n)
{
Console.Write("Enter {0} numbers:", n);
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
{
arr[i] = int.Parse(input[i]);
}
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
int[] arr = new int[n];
readArray(arr, n);
printArray(arr, n);
Console.Write("\nThe maximum element is {0}",
findMaximum(arr, n));
Console.ReadKey();
}
}
}
409 ‫الکترونیکی‬

‫ آرایزهای را ایجزاد‬، ‫ سپس مقداردهی اولیه میکند و در پایا‬،‫ برنامه ای که یک آرایه را تعریف کرده‬.020
.‫ تعزداد عناصزری کوچزکتزر از سزمت راسزت خزودش را شزمارش مزیکنزد‬، ‫میکند که هزر عنصزر آ‬
:‫ اگر آرایه بهصورت زیر باشد‬،‫بهعنوا مثال‬
arr={12, 1, 2, 3, 0, 11, 4}
:‫خروجی بهصورت زیر خواهد بود‬
6, 1, 1, 1, 0, 1, 0
using System;
namespace p121
{
class Program
{
static void printArray(int[] arr, int n)
{
for (int i = 0; i < n; i++)
Console.Write("{0} ", arr[i]);
Console.WriteLine();
}
static void readArray(int[] arr, int n)
{
Console.Write("Enter {0} numbers:", n);
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
{
arr[i] = int.Parse(input[i]);
}
}
static void constructLowerArray(int[] arr, int[]
countSmaller, int n)
{
int i, j;
// initialize all the counts in countSmaller array as 0
for (i = 0; i < n; i++)
countSmaller[i] = 0;

for (i = 0; i < n; i++)


{
for (j = i + 1; j < n; j++)
{
if (arr[j] < arr[i])
countSmaller[i]++;
}
}
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
int[] arr = new int[n];
readArray(arr, n);
printArray(arr, n);
int[] low = new int[n];
constructLowerArray(arr, low, n);
Console.Write("Result is ");
printArray(low, n);
Console.ReadKey();
‫پیوست‬ 444

}
}
}
‫ سپس یزک عزدد را خوانزده و آرایزه‬.‫ مقداردهی اولیه میکند‬،‫ برنامهای که آرایهای را تعریف کرده‬.022
‫ اگزر آرایزهای وجزود نداشزته‬.‫فرعی را نمایش میدهد که مجمو عناصر آ برابر عدد واردشده میباشد‬
‫" را نمزایش‬No SubArrAry Found" ‫ پیغزام‬،‫باشد که مجمو عناصزر آ برابزر عزدد واردشزده نباشزد‬
:‫ اگر آرایههای ورودی بهصورت زیر باشد‬،‫ بهعنوا مثال‬.‫میدهد‬
5 1 4 0 0 3 10
:‫ آنگاه خروجی بهصورت زیر است‬،‫ باشد‬sum=30 ‫و ا)ر‬
Sum found between indexes 1 and 4
using System;
namespace p122
{
class Program
{
static void printArray(int[] arr, int n)
{
for (int i = 0; i < n; i++)
Console.Write("{0} ", arr[i]);
Console.WriteLine();
}
static void readArray(int[] arr, int n)
{
Console.Write("Enter {0} numbers:", n);
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
{
arr[i] = int.Parse(input[i]);
}
}
static int subArraySum(int[] arr, int n, int sum)
{
int curr_sum, i, j;
// Pick a starting point
for (i = 0; i < n; i++)
{
curr_sum = arr[i];
// try all subarrays starting with 'i'
for (j = i + 1; j <= n; j++)
{
if (curr_sum == sum)
{
Console.Write("Sum found between indexes
{0} and {1}", i, j - 1);
return 1;
}
if (curr_sum > sum || j == n)
break;
curr_sum = curr_sum + arr[j];
}
}
Console.Write("No subarray found");
return 0;
}
static void Main(string[] args)
{
444 ‫الکترونیکی‬
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
int[] arr = new int[n];
readArray(arr, n);
printArray(arr, n);
Console.Write("\nEnter sum:");
int sum = int.Parse(Console.ReadLine());
subArraySum(arr, n, sum);
Console.ReadKey();
}
}
}
،‫ سزپس یزک عزدد را مزیخوانزد‬، ‫ برنامه ای که یک آرایه را تعریف کرده و مقداردهی اولیه میکند‬.021
‫ آ سه عدد را نمزایش مزیدهزد و‬،‫توسط متدی اگر مجمو سه عنصر آرایه برابر با عدد خواندهشده باشد‬
.‫ را برمیگرداند‬True
using System;
namespace p123
{
class Program
{
static void printArray(int[] arr, int n)
{
for (int i = 0; i < n; i++)
Console.Write("{0} ", arr[i]);
Console.WriteLine();
}
static void readArray(int[] arr, int n)
{
Console.Write("Enter {0} numbers:", n);
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
{
arr[i] = int.Parse(input[i]);
}
}
static bool find3Numbers(int[] A, int arr_size, int sum)
{
int l, r;
// Fix the first element as A[i]
for (int i = 0; i < arr_size - 2; i++)
{
// Fix the second element as A[j]
for (int j = i + 1; j < arr_size - 1; j++)
{
// Now look for the third number
for (int k = j + 1; k < arr_size; k++)
{
if (A[i] + A[j] + A[k] == sum)
{
Console.Write("Triplet is {0} , {1}
, {2}", A[i], A[j], A[k]);
return true;
}
}
}
}
// If we reach here, then no triplet was found
return false;
‫پیوست‬ 444

}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
int[] arr = new int[n];
readArray(arr, n);
printArray(arr, n);
Console.Write("\nEnter sum:");
int sum = int.Parse(Console.ReadLine());
find3Numbers(arr, n, sum);
Console.ReadKey();

}
}
}
‫ برنامهای که کوچکترین عدد مثبت (غیر منفی) که در آرایه غیر مرتب حذفشده ست را مزییابزد و‬.024
:‫ اگر آرایه ورودی بهصورت زیر باشد‬،‫ بهعنوا مثال‬.‫نمایش میدهد‬
{2, 3, -7, 6, 8, 1, -10, 15}
:‫ خواهد شد‬2 ‫ ولی برای آرایه زیر خروجی‬.‫ خواهد بود‬4 ‫خروجی عدد‬
{1, 1, 0, -1, -2}
using System;
namespace p124
{
class Program
{
static void swap(ref int a, ref int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
/* Utility function that puts all non-positive (0 and
negative) numbers on left side of arr[] and return
count of such numbers */
static int segregate(int[] arr, int size)
{
int j = 0, i;
for (i = 0; i < size; i++)
{
if (arr[i] <= 0)
{
swap(ref arr[i], ref arr[j]);
// increment count of non-positive integers
j++;
}
}

return j;
}
/* Find the smallest positive missing number in an array
that contains all positive integers */
static int findMissingPositive(int[] arr, int size)
{
int i;
for (i = 0; i < size; i++)
444 ‫الکترونیکی‬
{
if (Math.Abs(arr[i]) - 1 < size &&
arr[Math.Abs(arr[i]) - 1] > 0)
arr[Math.Abs(arr[i]) - 1] = -arr[Math.Abs(arr[i]) - 1];
}
// Return the first index value at which is positive
for (i = 0; i < size; i++)
if (arr[i] > 0)
return i + 1; //1 is added becuase indexes start from 0
return size + 1;
}
/* Find the smallest positive missing number in an array
that contains both positive and negative integers */
static int findMissing(int[] arr, int size)
{
// First separate positive and negative numbers
int shift = segregate(arr, size);
// Shift the array and call findMissingPositive for
// positive part
int[] s = new int[size - shift];
for (int i = 0; i < size - shift; i++)
s[i] = arr[i + shift];
return findMissingPositive(s, size - shift);
}
static void printArray(int[] arr, int n)
{
for (int i = 0; i < n; i++)
Console.Write("{0} ", arr[i]);
Console.WriteLine();
}
static void readArray(int[] arr, int n)
{
Console.Write("Enter {0} numbers:", n);
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
{
arr[i] = int.Parse(input[i]);
}
}
static bool find3Numbers(int[] A, int arr_size, int sum)
{
int l, r;
// Fix the first element as A[i]
for (int i = 0; i < arr_size - 2; i++)
{
// Fix the second element as A[j]
for (int j = i + 1; j < arr_size - 1; j++)
{
// Now look for the third number
for (int k = j + 1; k < arr_size; k++)
{
if (A[i] + A[j] + A[k] == sum)
{
Console.Write("Triplet is {0} , {1}
, {2}", A[i], A[j], A[k]);
return true;
}
}
}
‫پیوست‬ 440

}
// If we reach here, then no triplet was found
return false;
}
static void Main(string[] args)
{
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
int[] arr = new int[n];
readArray(arr, n);
printArray(arr, n);
int missing = findMissing(arr, n);
Console.Write("\nThe smallest positive missing
number is {0}", missing);
Console.ReadKey();
}
}
}
‫ سپس یک عزدد را مزیخوانزد و زو‬،‫ مقداردهی اولیه میکند‬،‫ برنامهای که آرایهای را تعریف کرده‬.025
‫ اگزر عناصزر‬،‫ بهعنوا مثزال‬.‫ را نمایش میدهد‬،‫مقادیر از عناصر آرایه که اختالف آ ها عدد واردشده باشد‬
:‫آرایه بهصورت زیر باشد‬
{2, 20, 3, 2, 50, 80}
:‫ خروجی بهصورت زیر است‬،‫ باشد‬78 ‫و عدد ورودی‬
Pair Found: (2, 80)
using System;
namespace p125
{
class Program
{
static void printArray(int[] arr, int n)
{
for (int i = 0; i < n; i++)
Console.Write("{0} ", arr[i]);
Console.WriteLine();
}
static void readArray(int[] arr, int n)
{
Console.Write("Enter {0} numbers:", n);
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
{
arr[i] = int.Parse(input[i]);
}
}
static bool findPair(int[] arr, int size, int n)
{
int i = 0;
int j = 1;
// Search for a pair
while (i < size && j < size)
{
if (i != j && arr[j] - arr[i] == n)
{
Console.Write("Pair Found: ( {0}, {1})",
arr[i], arr[j]);
return true;
}
444 ‫الکترونیکی‬
else if (arr[j] - arr[i] < n)
j++;
else
i++;
}
Console.Write("No such pair");
return false;
}
static void Main(string[] args)
{
Console.Write("Enter size:");
int size = int.Parse(Console.ReadLine());
int[] arr = new int[size];
readArray(arr, size);
printArray(arr, size);
Console.Write("Enter n:");
int n = int.Parse(Console.ReadLine());
findPair(arr, size, n);
Console.ReadKey();
}
}
}
‫ سپس هر عنصر را با بارگترین عنصزر‬،‫ مقداردهی اولیه میکند‬،‫ برنامهای که آرایهای را تعریف کرده‬.021
‫ قزرار مزیگیزرد و آرایزه‬-0 ‫ بهجای آخرین عزدد‬،‫بعد از خودش (سمت راست خودش) جایگاین میکند‬
.‫جدید را نمایش میدهد‬
:‫ ا)ر آرایه ورودی بهصورت زیر باشد‬،‫بهعنوانمثال‬
{16, 17, 4, 3, 5, 2}
:‫آرایه خروجی بهصورت زیر خواهد شد‬
{17, 5, 5, 5, 2, -}
using System;
namespace p126
{
class Program
{
static void printArray(int[] arr, int n)
{
for (int i = 0; i < n; i++)
Console.Write("{0} ", arr[i]);
Console.WriteLine();
}
static void readArray(int[] arr, int n)
{
Console.Write("Enter {0} numbers:", n);
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
{
arr[i] = int.Parse(input[i]);
}
}
static void nextGreatest(int[] arr, int size)
{
int max_from_right = arr[size - 1];
arr[size - 1] = -1;
for (int i = size - 2; i >= 0; i--)
{
int temp = arr[i];
‫پیوست‬ 444

arr[i] = max_from_right;
if (max_from_right < temp)
max_from_right = temp;
}
}
static void Main(string[] args)
{
Console.Write("Enter size:");
int size = int.Parse(Console.ReadLine());
int[] arr = new int[size];
readArray(arr, size);
printArray(arr, size);
nextGreatest(arr, size);
Console.Write("The modified array is: \n");
printArray(arr, size);
Console.ReadKey();
}
}
}
‫ سپس یک عدد را خوانده و مجمزو‬،‫ مقداردهی اولیه می کند‬،‫ برنامه ای که آرایهای را تعریف کرده‬.026
‫ اگزر آرایزه ورودی‬،‫ بزهعنزوا مثزال‬.‫ عنصر آرایه که برابر با عدد خواندهشده باشد را نمزایش مزیدهزد‬4
:‫بهصورت زیر باشد‬
{10, 2, 3, 4, 5, 9, 7, 8}
:‫ آنگاه خروجی بهصورت زیر است‬،‫ باشد‬21 ‫و عدد ورودی برابر‬
3 5 7 8
using System;
namespace p127
{
class Program
{
static void printArray(int[] arr, int n)
{
for (int i = 0; i < n; i++)
Console.Write("{0} ", arr[i]);
Console.WriteLine();
}
static void readArray(int[] arr, int n)
{
Console.Write("Enter {0} numbers:", n);
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
{
arr[i] = int.Parse(input[i]);
}
}
static void findFourElements(int[] A, int n, int X)
{
// Fix the first element and find other three
for (int i = 0; i < n - 3; i++)
{
// Fix the second element and find other two
for (int j = i + 1; j < n - 2; j++)
{
// Fix the third element and find the fourth
for (int k = j + 1; k < n - 1; k++)
{
// find the fourth
444 ‫الکترونیکی‬
for (int l = k + 1; l < n; l++)
if (A[i] + A[j] + A[k] + A[l] == X)
Console.Write("{0} {1} {2} {3}
", A[i], A[j], A[k], A[l]);
}
}
Console.WriteLine();
}
}
static void Main(string[] args)
{
Console.Write("Enter size:");
int size = int.Parse(Console.ReadLine());
int[] A = new int[size];
readArray(A, size);
printArray(A, size);
Console.Write("Enter x:");
int x = int.Parse(Console.ReadLine());
findFourElements(A, size, x);
Console.ReadKey();
}
}
}
‫ سپس عناصری از آرایزه‬.‫ برنامهای که آرایهای را تعریف کرده و عناصر آ را مقداردهی اولیه میکند‬.026
‫که مقادیر آ ها تشکیل مثلث را میدهد را شمارش میکند (سه مقدار از آرایه که مجمزو هزر دو مقزدار‬
.)‫ تشکیل مثلث را میدهند‬،‫بیشتر از مقدار سوم باشد‬
using System;
namespace p128
{
class Program
{
static void printArray(int[] arr, int n)
{
for (int i = 0; i < n; i++)
Console.Write("{0} ", arr[i]);
Console.WriteLine();
}
static void readArray(int[] arr, int n)
{
Console.Write("Enter {0} numbers:", n);
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
{
arr[i] = int.Parse(input[i]);
}
}

static void sort(int[] a, int n)


{
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
if (a[i] > a[j])
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
‫پیوست‬ 444

}
}
static int findNumberOfTriangles(int[] arr, int n)
{
sort(arr, n);
// Initialize count of triangles
int count = 0;
// Fix the first element. We need to run till n-3
// as the other two elements are selected from
// arr[i+1...n-1]
for (int i = 0; i < n - 2; ++i)
{
// Initialize index of the rightmost third
// element
int k = i + 2;

// Fix the second element


for (int j = i + 1; j < n; ++j)
{
// because the array is sorted.
while (k < n && arr[i] + arr[j] > arr[k])
++k;

count += k - j - 1;
}
}
return count;
}
static void Main(string[] args)
{
Console.Write("Enter size:");
int size = int.Parse(Console.ReadLine());
int[] arr = new int[size];
readArray(arr, size);
printArray(arr, size);
Console.Write("\nTotal number of triangles possible is ");
Console.Write(findNumberOfTriangles(arr, size));
Console.ReadKey();
}
}
}

‫فصل‬
‫ وراثت و چندریختی‬،‫ کالسها‬:‫برنامهنویسی شیءگرا‬
5
‫ > و => را‬، <= ،< ، != ،== ،/ ،* ،- ،+ ‫ عملگرهای‬،‫( را پیادهسازی کرده‬Fraction) ‫ برنامهای که کالس کسر‬.22
.)‫( است‬y) ‫( و مخر‬x) ‫برای آ پیادهسازی میکند(کسر دارای صورت‬
‫مراحل طراحی و اجرا‬
.‫ پروژه جدیدی ایعاد کنید‬.0
:‫ دستورات آن را بهصورت زیر تغییر دهید‬،‫ را به پروژه اضاده کرده‬Fraction ‫کالد‬.2
using System;
namespace p28
{
class Fraction
{
449 ‫الکترونیکی‬
private int x;
private int y;
public Fraction()
{
x = 0;
y = 1;
}
public Fraction(int s, int m)
{
X = s;
Y = m;
}
public int X
{
get { return x; }
set { x = value; }
}
public int Y
{
get { return y; }
set { y = (value != 0) ? value : 1; }
}
public static Fraction operator +(Fraction f1, Fraction
f2)
{
return new Fraction(f1.x*f2.y+f1.y*f2.x,f1.y*f2.y);
}
public static Fraction operator -(Fraction f1, Fraction
f2)
{
return new Fraction(f1.x*f2.y-f1.y*f2.x,f1.y*f2.y);
}
public static Fraction operator *(Fraction f1, Fraction
f2)
{
return (new Fraction(f1.x * f2.x, f1.y * f2.y));
}
public static Fraction operator /(Fraction f1, Fraction
f2)
{
return new Fraction(f1.x * f2.y, f1.y * f2.x);
}
public static bool operator >(Fraction f1, Fraction f2)
{
return (f1.x * f2.y > f1.y * f2.x);
}
public static bool operator >=(Fraction f1, Fraction f2)
{
return (f1.x * f2.y >= f1.y * f2.x);
}
public static bool operator <=(Fraction f1, Fraction f2)
{
return (f1.x * f2.y <= f1.y * f2.x);
}
public static bool operator <(Fraction f1, Fraction f2)
{
return (f1.x * f2.y < f1.y * f2.x);
}
public static bool operator ==(Fraction f1, Fraction f2)
‫پیوست‬ 444

{
return (f1.x * f2.y == f1.y * f2.x);
}
public static bool operator !=(Fraction f1, Fraction f2)
{
return (f1.x * f2.y != f1.y * f2.x);
}
public override string ToString()
{
return ("("+x.ToString()+"/"+y.ToString()+")");
}
}
}
‫ دو خاصدیت‬،y ‫ و‬x ‫ ایدن کدالد دارای دو دیلدد‬.‫ را پیدادهسدازی مدیکنندد‬Fraction ‫این دستورات کالد‬
‫ پیدادهسدازی‬،‫ دو سدازنده‬،)y ‫(برای بازیابی و مقددار دهدی بده دیلدد‬Y ‫) و‬x ‫(برای بازیابی و مقدار دهی به دیلد‬X
.‫ است‬ToString() ‫ => و پیادهسازی معدد متد‬،<= ،> ،= ،< ،! ،== ،/ ، * ، - ،+ ‫معدد عملگرهای‬
:‫ بر)ردید و دستورات آن را بهصورت زیر تغییر دهید‬Program ‫ به کالد‬.1
using System;
namespace p28
{
class Program
{
static void Main(string[] args)
{
Fraction f1 = new Fraction(10, 15);
Fraction f2 = new Fraction(12, 17);
Fraction f3 = f1 + f2;
Console.WriteLine("{0} + {1} = {2}", f1.ToString(),
f2.ToString(), f3.ToString());
f3 = f1 - f2;
Console.WriteLine("{0} - {1} = {2}", f1.ToString(),
f2.ToString(), f3.ToString());
f3 = f1 * f2;
Console.WriteLine("{0} * {1} = {2}", f1.ToString(),
f2.ToString(), f3.ToString());
f3 = f1 / f2;
Console.WriteLine("{0} / {1} = {2}", f1.ToString(),
f2.ToString(), f3.ToString());
Console.WriteLine("{0} == {1} = {2}", f1.ToString(),
f2.ToString(), f1 == f2);
Console.WriteLine("{0} != {1} = {2}", f1.ToString(),
f2.ToString(), f1 != f2);
Console.WriteLine("{0} > {1} = {2}", f1.ToString(),
f2.ToString(), f1 > f2);
Console.WriteLine("{0} >= {1} = {2}", f1.ToString(),
f2.ToString(), f1 >= f2);
Console.WriteLine("{0} < {1} = {2}", f1.ToString(),
f2.ToString(), f1 < f2);
Console.WriteLine("{0} <= {1} = {2}", f1.ToString(),
f2.ToString(), f1 <= f2);
Console.ReadKey();
}
}
}
‫الکترونیکی ‪444‬‬

‫را بدر روی‬ ‫این دستورات دو نمونه به نامهای ‪ f1‬و ‪ f2‬از نوف ‪ Fraction‬ایعداد کدرده‪ ،‬عملگرهدای مختلد‬
‫آنها اجرا میکنند‪ .‬نتیعه عملگرهای ‪ * ،- ،+‬و ‪ /‬را در نمونه ‪ f3‬قرار میدهد‪.‬‬
‫‪ .4‬پروژه را ذخیره و اجرا کنید تا خروجی زیر را ببینید‪:‬‬

‫‪ .22‬برنامهای که ایجاد و استفاده از متدهای توسعهیافته را نشا میدهد‪.‬‬


‫مراحل طراحی و اجرا‬
‫‪ .0‬پروژه جدیدی ایعاد کنید‪.‬‬
‫‪ .2‬دستورات کالد ‪ Program‬را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p29‬‬
‫{‬
‫‪public static class ExtensionMethods‬‬
‫{‬
‫)‪public static void SendToLog(this String str‬‬
‫{‬
‫;)‪Console.WriteLine(str‬‬
‫}‬
‫}‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;"‪String str = "Some useful information to log‬‬
‫‪// Call the extension method‬‬
‫;)(‪str.SendToLog‬‬
‫‪// Call the same method the old way.‬‬
‫;)‪ExtensionMethods.SendToLog(str‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫ایددن دسددتورات کالسددی بدده نددام ‪ EextensionMethods‬ایعدداد مددینماین دد کدده دارای یددک متددد بدده نددام‬
‫‪ SendToLong‬است‪ .‬این متد یک رشدته را بدهعندوان پدارامتر دریاددت کدرده‪ ،‬نمدای مدیدهدد‪ .‬متدد )(‪Main‬‬
‫دراخوانی‪ ،‬متد توسدعهیادتده )(‪ SendToLong‬را بده دو روش نمدای مدیدهدد‪ .‬تداکنون کدالدهدا را در دایدل‬
‫جدا)انهای ایعاد میکردید‪ .‬اما‪ ،‬این برنامه نشان میدهد که کالد را میتوان در برنامه اصلی نیز ایعاد نمود‪.‬‬
‫‪ .1‬پروژه را ذخیره و اجرا کنید تا ش ل زیر را ببینید‪:‬‬
‫پیوست‬ ‫‪444‬‬

‫‪ .33‬برنامهای که دایرکتوری فعلی را نمایش میدهد(هدف این برنامه آشنایی با متدهای خارجی است)‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .0‬پروژه جدیدی ایعاد کنید‪.‬‬
‫‪ .2‬به کالد ‪ Program.cs‬بروید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫;‪using System.Text‬‬
‫;‪using System.Runtime.InteropServices‬‬
‫‪namespace p30‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫])‪[DllImport("kernel32", SetLastError = true‬‬
‫‪static extern int GetCurrentDirectory(int bufSize,‬‬
‫;)‪StringBuilder buf‬‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪const int MaxDirLength = 250‬‬
‫;)(‪StringBuilder sb = new StringBuilder‬‬
‫;‪sb.Length = MaxDirLength‬‬
‫;)‪GetCurrentDirectory(MaxDirLength, sb‬‬
‫;)‪Console.WriteLine("Current Directory is: [{0}]", sb‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫‪ .1‬پروژه را ذخیره و اجرا کنید تا خروجی زیر را ببینید‪:‬‬

‫‪ .10‬برنامهای که اطالعات کارمندا از قبیل نام‪ ،‬نام خانوادگی‪ ،‬نو بیمه‪ ،‬مبلغ حقوق ماهانه و تعداد روزهایی کزه‬
‫کارکرده را دریافت میکند‪ ،‬حقوق دریافتی کارمند را محاسبه کرده‪ ،‬برمیگرداند‪ .‬حقوق دریافتی کارمند بزهصزورت‬
‫زیر محاسبه میشود‪:‬‬
‫حقوق دریافتی=بیمه – مالیات – تعداد روز * حقوق کارمند‬
‫اگر نو بیمه ‪ 0‬باشد‪ 6 ،‬درصد * حقوق ماهانه‬
‫بیمه‬ ‫اگر نو بیمه ‪ 2‬باشد‪ 6 ،‬درصد * حقوق ماهانه‬
‫اگر نو بیمه ‪ 1‬باشد‪ 01 ،‬درصد * تعداد روز‬
‫اگر حقوق * ماهانه بارگتر از ‪ 465111‬توما باشد‪01 ،‬درصد مازاد بر ‪ 465111‬توما مالیات منظور میشود‪.‬‬
‫توضی ‪ :‬این برنامه با دو کالد ‪ Person‬و ‪ Employee‬طراحیشده است‪ .‬کالد ‪ Person‬اطالعاتی از قبیدل‬
‫نام‪ ،‬نام خانواد)ی و نوف بیمه را نگهداری میکند و کالد ‪ Employee‬از کالد ‪ Person‬مشتق شده‪ ،‬عالوه بر‬
‫اطالعات نام‪ ،‬نام خانواد)ی‪ ،‬و نوف بیمه که از کالد ‪ Person‬به ارث مدیبدرد‪ ،‬اعضدای دادهای ‪ salary‬و ‪days‬‬
‫را نیز دارد‪ .‬در ادامه اعضای این کالدها را خواهید دید‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایعاد کنید‪.‬‬
‫‪ .7‬کالد ‪ Person‬را به پروژه اضاده کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p31‬‬
‫{‬
‫الکترونیکی ‪444‬‬
‫‪class Person‬‬
‫{‬
‫;‪protected string firstName‬‬
‫;‪protected string lastName‬‬
‫;‪private int insuranceType‬‬
‫‪public int InsuranceType‬‬
‫{‬
‫‪get‬‬
‫{‬
‫;‪return insuranceType‬‬
‫}‬
‫‪set‬‬
‫{‬
‫;‪insuranceType=(value>=1 && value<=3)?value 0‬‬
‫}‬
‫}‬
‫} { )(‪public Person‬‬
‫)‪public Person(string fn, string ln, int ins‬‬
‫{‬
‫;‪firstName = fn‬‬
‫;‪lastName = ln‬‬
‫;‪InsuranceType = ins‬‬
‫}‬
‫)(‪public void displayElement‬‬
‫{‬

‫" ‪Console.Write("Name :" + firstName + " " + lastName +‬‬


‫;))(‪Insurance:" + insuranceType.ToString‬‬
‫}‬
‫}‬
‫}‬
‫این کالد از اعضای زیر تش یلشده است‪:‬‬
‫فیلد ‪ ،firstName‬نام کارمند را نگهداری میکند‪ .‬چون با سطح دستیابی ‪ protected‬معردیشده است‪ ،‬هر‬
‫کالسی که از ‪ Person‬بهطور مستقیم مشتق میشود‪ ،‬این دیلد را به ارث میبرد‪.‬‬
‫فیلد ‪ ،lastName‬نام خانواد)ی کارمند را نگهداری میکند و مانند دیلد ‪ firstName‬توسط کالد مشدتق‬
‫مستقیم ‪ Person‬به ارث برده میشود‪.‬‬
‫فیلد ‪ ،insuranceType‬نوف بیمه را نگهداری میکند‪ .‬چون با سطح دستیابی ‪ private‬است کالسدی کده از‬
‫‪ Person‬مشتق میشود‪ ،‬آن را به ارث نمیبرد‪.‬‬
‫خاصیت ‪ ،InsuranceType‬برای بازیابی و مقداردهی دیلد ‪ InsuranceType‬به کدار مدیرود‪ .‬متدد ‪ set‬آن‪،‬‬
‫ا)ر مقادیر واردشده خارج از بازه ‪ 1‬تا ‪ 1‬باشدد‪ ،‬صدفر را بده دیلدد ‪ insuranceType‬تخصدیص مدیدهدد‪ .‬تمدام‬
‫کالدهای مشتق ‪ Person‬در سلسلهمراتب وراثت این خاصیت را به ارث میبرند‪.‬‬
‫سازنده بدو پارامتر )(‪ ،Person‬سازنده پی درض کالد ‪ Person‬را پیادهسازی میکند‪.‬‬
‫سازنده با پارامتر )(‪ ،Person‬نام (‪ ،)fn‬نام خانواد)ی (‪ )ln‬و نوف بیمه (‪ )ins‬را بهعنوان پارامتر دریادت کرده‪،‬‬
‫به ترتیب در دیلدهای ‪ lastName ،firstName‬و خاصیت ‪ InsuranceType‬قرار میدهد‪.‬‬
‫متد )(‪ ،displayElement‬نام‪ ،‬نام خانواد)ی و نوف بیمه کارمند را نمای میدهدد‪ .‬کدالد مشدتق ‪Person‬‬
‫(یعنی ‪ )Employee‬این متد را به ارث میبرد‪.‬‬
‫پیوست‬ 440

:‫ دستورات آن را بهصورت زیر تغییر دهید‬،‫ را به پروژه اضاده کرده‬Employee ‫ کالد‬.7


using System;
namespace p31
{
class Employee : Person
{
private uint salary;
private uint days;
public uint Salary
{
get
{
return salary;
}
set
{
salary = (value > 0) ? value : 0;
}
}
public uint Days
{
get
{
return days;
}
set
{
days=((value > 0) && (value <= 31))?value: 0;
}
}
public Employee() : base() { }
public Employee(string fn, string ln, int ins, uint sa,
uint da) : base(fn, ln, ins)
{
Salary = sa;
Days = da;
}
private uint salaryPerDays()
{
return salary * days / 30;
}
private uint calculateTax()
{
uint tax = 0, salPerDays = salaryPerDays();
if (salPerDays > 485000)
tax = (salPerDays - 485000) * 10 / 100;
return tax;
}
private uint calculateInsurance()
{
uint ins = 0;
switch (InsuranceType)
{
case 1: ins = salaryPerDays() * 7 / 100;
break;
case 2: ins = salaryPerDays() * 9 / 100;
break;
case 3: ins = salaryPerDays() * 10 / 100;
‫الکترونیکی ‪444‬‬
‫;‪break‬‬
‫}‬
‫;‪return ins‬‬
‫}‬
‫)(‪private uint calculatePayment‬‬
‫{‬
‫‪return (uint)salaryPerDays() - calculateInsurance() -‬‬
‫;)(‪calculateTax‬‬
‫}‬
‫)(‪public new void displayElement‬‬
‫{‬
‫;)(‪Console.WriteLine‬‬
‫;)(‪base.displayElement‬‬
‫‪Console.WriteLine("Salary:{0}Days:{1}PayMent:{2}",‬‬
‫;))(‪salary, days, calculatePayment‬‬
‫}‬
‫}‬
‫}‬
‫این کالد مشتق کالد ‪ Person‬است‪ .‬عالوه بر اعضدایی کده از کدالد ‪ Person‬بده ارث مدیبدرد‪ ،‬دارای‬
‫اعضای زیر نیز میباشد‪:‬‬
‫فیلد ‪ ،salary‬حقوق ماهانه کارمند را نگهداری میکند‪.‬‬
‫فیلد ‪ ،days‬تعداد روز کارکرد کارمند را نگهداری مینماید‪.‬‬
‫خاصیت ‪ ،Salary‬برای بازیابی و مقداردهی به دیلد ‪ salary‬به کار میرود‪ .‬در این خاصیت متد ‪ set‬از ورود‬
‫حقوق منفی جلو)یری میکند‪.‬‬
‫خاصیت ‪ ،Days‬برای بازیابی و مقداردهی به دیلد ‪ days‬به کار میرود‪ .‬در ایدن‪ ،‬خاصدیت متدد ‪ set‬از ورود‬
‫کارکرد بی از ‪ 11‬روز و منفی جلو)یری میکند‪.‬‬
‫سازنده بدو پارامتر )(‪ ،Employee‬سازنده پی درض کالد را پیادهسازی میکند‪.‬‬
‫سازنده با پارامتر )(‪ ،Employee‬نام (‪ ،)fn‬نام خانواد)ی (‪ )ln‬ندوف بیمده (‪ ،)ins‬حقدوق ماهانده (‪ )sa‬و تعدداد‬
‫روز کارکرد (‪ )da‬را بهعنوان پدارامتر دریاددت کدرده‪ ،‬پارامترهدای ‪ ln ،fn‬و ‪ ins‬را بدرای سدازنده کدالد پایده‬
‫میدرستد ()‪ .)base(fn,ln,ins‬اما‪ ،‬مقدار ‪ sa‬و ‪ da‬به ترتیب در خواص ‪ Salary‬و ‪ Days‬قرار میدهد‪.‬‬
‫متد )(‪ ،salaryPerDay‬حقوق را برحسب کارکرد محاسبه کرده‪ ،‬برمی)رداند‪ .‬این متد ‪ private‬میباشد‪.‬‬
‫متد )(‪ ،calculateTax‬مبلغ مالیات حقوق را محاسبه کرده‪ ،‬برمی)رداند‪ .‬این متد نیز ‪ private‬است‪.‬‬
‫متد )(‪ ،calculateInsurance‬مبلغ بیمه کارمند را محاسبه میکندد و برمدی)رداندد‪ .‬ایدن متدد نیدز ‪private‬‬
‫تعری شده است‪.‬‬
‫متد )(‪ ،calculatePayment‬مبلغ حقوق خالص کارمند را محاسبه‪ ،‬برمی)رداند‪.‬‬
‫متد )(‪ ،displayElement‬این متد اطالعدات کارمندد از قبیدل ندام‪ ،‬ندام خدانواد)ی‪ ،‬ندوف بیمده (تدا اینعدا بدا‬
‫دراخوانی )(‪ ،)base.displayElement‬حقوق ماهانه‪ ،‬تعداد روز کارکرد و حقوق خالص را نمدای مدیدهدد‪.‬‬
‫در پیادهسازی این متد‪ ،‬متد )(‪displayElement‬ای که این کالد از کالد ‪ Person‬به ارث برده اسدت را بدا‬
‫واژه ‪ new‬مخفی خواهد کرد‪.‬‬
‫‪ .7‬به کالد ‪ Program‬بر)ردید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫پیوست‬ 444

namespace p31
{
class Program
{
static void Main(string[] args)
{
Person myWife = new Person("Zara", "Ahmadi", 0);
Employee me = new Employee("Ramzan",
"Abbasnezhad", 1, 1000000, 25);
Employee you = new Employee("Ali", "Rezahi", 2,
500000, 30);
myWife.displayElement();
me.displayElement();
you.displayElement();
Console.ReadLine();
}
}
}
‫ و‬Employee ،Person ‫ را بدده ترتیددب از نددوف‬you ‫ و‬me ،myWife ‫ ابتدددا نمونددههددای‬،‫ایددن دسددتورات‬
‫ بدر روی نموندههدا اطالعدات آنهدا را‬displayElement() ‫ سپ با دراخدوانی متدد‬.‫ ایعاد میکنند‬Employee
.‫نمای میدهند‬
:‫ پروژه را ذخیره و اجرا کنید تا خروجی زیر را ببینید‬.5

‫ مختصزات نقطزه را‬Point ‫) را با استفاده از واسط پیادهسازی میکند (کالس‬Point( ‫ برنامهای که کالس نقطه‬.32
.)‫ آ را نمایش میدهد‬،‫بهصورت دو عدد صحی دریافت کرده‬
‫مراحل طراحی و اجرا‬
.‫ پروژه جدیدی ایعاد کنید‬.1
‫ دسدتورات‬،‫ را به پروژه اضاده کدرده‬IPoint )Interface( ‫ واسط‬،Project / Add New Item ‫ با )زینه‬.7
:‫آن را بهصورت زیر تغییر دهید‬
using System;
namespace p32
{
interface IPoint
{
// Property signatures:
int X
{
get;
set;
}
int Y
{
get;
set;
}
}
}
444 ‫الکترونیکی‬

‫ دارد (ایدن دو خاصدیت‬Y ‫ و‬X ‫کرده که دو خاصدیت بده ندامهدای‬ ‫ را تعری‬IPoint ‫ واسط‬،‫این دستورات‬
.)‫پیادهسازی نشدهاند‬
:‫ دستورات آن را بهصورت زیر تغییر دهید‬،‫ را به پروژه اضاده کرده‬Point ‫ کالد‬.7
using System;
namespace p32
{
class Point : IPoint
{
private int x;
private int y;
public Point(int x, int y)
{
X = x; Y = y;
}
public int X
{
get
{
return x;
}
set
{
x = value;
}
}
public int Y
{
get
{
return y;
}
set
{
y = value;
}
}
public override string ToString()
{
return "["+X.ToString()+", " + Y.ToString() + "]";
}
}
}
Y ‫ و‬X ‫ را پیادهسازی کند (خدواص‬Y ‫ و‬X ‫ بنابراین باید خواص‬،‫ مشتق میشود‬IPoint ‫این کالد از وسط‬
.)‫را پیادهسازی کرده است‬
:‫ بر)ردید و دستورات آن را بهصورت زیر تغییر دهید‬Program ‫ به کالد‬.7
using System;
namespace p32
{
class Program
{
static void Main(string[] args)
{
Point p = new Point(2, 3);
Console.Write("My Point: ");
‫پیوست‬ ‫‪444‬‬

‫;))(‪Console.WriteLine(p.ToString‬‬
‫;)(‪Console.Read‬‬
‫}‬
‫}‬
‫}‬
‫میدهند‪.‬‬ ‫این دستورات‪ ،‬نمونهای به نام ‪ p‬از کالد ‪ Point‬ایعاد کرده‪ ،‬اطالعات آن را نمای‬
‫‪ .5‬پروژه را ذخیره و اجرا کنید تا خروجی زیر را ببینید‪:‬‬

‫‪ .33‬برنامهای که با استفاده از کالس ‪ static‬اعمال زیر را انجام میدهد‪:‬‬


‫دیلدی به نام ‪ number‬از نوف ‪ static‬تعری میکند‪.‬‬
‫متدی به )(‪ createRandom‬تعری کرده که دو عدد را بهعنوان پارامتر دریادت میکند‪ ،‬یک عدد‬
‫تصاددی بین دو عدد تولید مینماید‪.‬‬
‫متدی به نام )(‪ isOdd‬تعری میکند که تعیین میکند دیلد دادهای ‪ number‬درد است یا خیر؟‬
‫متدی به نام )(‪ isEven‬تعری میکند که تعیین میکند دیلد دادهای ‪ number‬زوج است یا خیر ؟‬
‫متدی به نام )(‪ isSquare‬تعری میکند که تعیین میکند دیلد دادهای ‪ number‬مربع کامل است یا خیر ؟‬
‫متدی به نام )(‪ isPerfect‬تعری میکند که تعیین میکند دیلد ‪ number‬عددی کامل (تام) است یا خیر؟‬
‫متدی به نام )(‪ isPrime‬تعری میکند که تعیین میکند دیلد ‪ number‬عددی اول است یا خیر؟‬
‫میکند که داکتوریل دیلد ‪ number‬را برمی)رداند‪.‬‬ ‫متدی به نام )(‪ Fact‬تعری‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایعاد کنید‪.‬‬
‫‪ .7‬کالد ‪ Number‬را به پروژه اضاده کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p33‬‬
‫{‬
‫‪static class Number‬‬
‫{‬
‫;‪public static int number‬‬
‫)‪public static void createRandom(int n1, int n2‬‬
‫{‬
‫;)(‪Random r = new Random‬‬
‫;)‪number = r.Next(n1, n2‬‬
‫}‬
‫)(‪public static bool isOdd‬‬
‫{‬
‫;)‪return (number % 2 == 1‬‬
‫}‬
‫)(‪public static bool isEven‬‬
‫{‬
‫;)‪return (number % 2 == 0‬‬
‫}‬
‫)(‪public static bool isSquare‬‬
‫{‬
‫;‪int i = 1‬‬
‫)‪while ((i * i) <= number‬‬
‫{‬
449 ‫الکترونیکی‬
if (i * i == number) return true;
i++;
}
return false;
}
public static bool isPerfect()
{
if (number == 0 || number == 1) return false;
int i = 1, sum = 0;
while (i <= number / 2)
{
if (number % i == 0) sum += i;
i++;
}
return (sum == number);
}
public static bool isPrime()
{
if (number == 0 || number == 1) return false;
int i = 2;
while (i <= number / 2)
{
if (number % i++ == 0) return false;
}
return true;
}
public static double Fact()
{
int i = 2;
double f = 1;
while (i <= number)
{
f *= i++;
}
return f;
}
}
}
‫ کالد به همدراه تمدام اعضدای دادهای و متددی آن بدا واژه‬،‫همانطور که در این کالد مشاهده می)ردد‬
.‫ استفاده کرد‬static ‫ نمیتوان از دادهها و متدهای غیر‬static ‫ چون در کالدهای‬.‫ تعری شدهاند‬static
:‫ بر)ردید و دستورات آن را بهصورت زیر تغییر دهید‬Program ‫ به کالد‬.7
using System;
namespace p33
{
class Program
{
static void Main(string[] args)
{
Number.createRandom(0, 17);
Console.WriteLine("Random number is {0}\t
isOdd:{1}\t\tisEven:{2}", Number.number,
Number.isOdd(), Number.isEven());
Console.WriteLine("isPrime:{0}\t\t
isPerfect:{1}\tisSquare:{2}\tFact is:{3}",
Number.isPrime(), Number.isPerfect(),
Number.isSquare(), Number.Fact());
Console.ReadLine();
‫پیوست‬ 444

}
}
}
‫ از کدالدهدای‬،‫ چدون‬.‫ تمام متدها با نام کالد دراخوانی شددهاندد‬،‫همانطور که در این دستورات میبینید‬
.‫ نمیتوان نمونهای ایعاد نمود‬static
:‫ پروژه را ذخیره و اجرا کنید تا خروجی را به ش ل زیر مشاهده نمایید‬.7

.‫ و * را برای ماتریسهای دوبعدی تعریف میکند‬- ،+ ‫ برنامهای که عملگرهای‬.14


‫مراحل طراحی و اجرا‬
.‫ پروژه جدیدی ایعاد کنید‬.0
:‫ دستورات آن را بهصورت زیر تغییر دهید‬،‫ را به پروژه اضاده کرده‬Matrix ‫ کالد‬.2
using System;
namespace p34
{
class Matrix
{
public const int rowSize = 3;
public const int columnSize = 3;
private double[,] mat = new double[rowSize, columnSize];
public double this[int row, int column]
{
get { return mat[row, column]; }
set { mat[row, column] = value; }
}
public static Matrix operator +(Matrix mat1, Matrix mat2)
{
Matrix mat3 = new Matrix();
for (int i = 0; i < rowSize; i++)
for (int j = 0; j < columnSize; j++)
mat3[i, j] = mat1[i, j] + mat2[i, j];
return mat3;
}
public static Matrix operator -(Matrix mat1, Matrix mat2)
{
Matrix mat3 = new Matrix();
for (int i = 0; i < rowSize; i++)
for (int j = 0; j < columnSize; j++)
mat3[i, j] = mat1[i, j] - mat2[i, j];
return mat3;
}
public static Matrix operator *(Matrix mat1, Matrix mat2)
{
Matrix mat3 = new Matrix();
for (int i = 0; i < rowSize; i++)
for (int j = 0; j < rowSize; j++)
{
mat3[i, j] = 0;
for (int k = 0; k < rowSize; k++)
mat3[i, j] += mat1[i, k] + mat2[k, j];
}
444 ‫الکترونیکی‬
return mat3;
}
}
}
‫ بهصورت‬double ‫ از نوف‬mat ‫ را پیادهسازی میکنند که دارای دیلدی به نام‬Matrix ‫ کالد‬،‫این دستورات‬
‫آرایه دوبعدی با سه سطر و سه ستون است و یک ایندکسر پیدادهسدازی کدردهاندد کده عنصدر خاصدی از آرایده‬
‫ و * را برای این کالد پیادهسازی‬- ،+ ‫ در پایان عملگرهای‬.‫دوبعدی را بازیابی میکند یا به آن مقدار میدهند‬
.‫مینمایند‬
:‫ بر)ردید و دستورات آن را بهصورت زیر تغییر دهید‬Program ‫ به کالد‬.1
using System;
namespace p34
{
class Program
{
public static Random r = new Random();
public static void InitMatrix(Matrix mat)
{
for (int i = 0; i < Matrix.rowSize; i++)
for (int j = 0; j < Matrix.columnSize; j++)
mat[i, j] = r.NextDouble() * 1000;
}
public static void PrintMatrix(Matrix mat)
{
for (int i = 0; i < Matrix.rowSize; i++)
{
Console.Write("[");
for (int j = 0; j < Matrix.columnSize; j++)
{
Console.Write("{0,6:000.00}", mat[i, j]);
if (j < 2) Console.Write(", ");
}
Console.WriteLine("] ");
}
Console.WriteLine();
}
static void Main(string[] args)
{
Matrix mat1 = new Matrix();
Matrix mat2 = new Matrix();
Matrix mat3 = new Matrix();
InitMatrix(mat1);
InitMatrix(mat2);
Console.WriteLine("Matrix 1:");
PrintMatrix(mat1);
Console.WriteLine("Matrix 2:");
PrintMatrix(mat2);
mat3 = mat1 + mat2;
Console.WriteLine("Matrix 1 + Matrix 2");
PrintMatrix(mat3);
mat3 = mat1 - mat2;
Console.WriteLine("Matrix 1 - Matrix 2");
PrintMatrix(mat3);
mat3 = mat1 * mat2;
Console.WriteLine("Matrix 1 * Matrix 2");
PrintMatrix(mat3);
‫پیوست‬ ‫‪444‬‬

‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫در این کالد دو متد به نامهای )(‪ InitMatrix‬و )(‪ PrintMatrix‬تعری شدهاند‪ .‬متد )(‪ InitMatrix‬نمونده‬
‫‪ mat‬را بهعنوان پارامتر دریادت کرده‪ ،‬اعداد تصاددی بین ‪ 1‬تا ‪ 1111‬تولید نمدوده و در عناصدر نمونده ‪ mat‬قدرار‬
‫میدهد‪ .‬اما‪ ،‬متد )(‪ ،PrintMatrix‬نمونه ‪ mat‬را بهعنوان پارامتر دریادت کرده‪ ،‬اطالعات اعضدای آن را نمدای‬
‫دوم) و ‪( mat3‬حاصدل‬ ‫اول)‪( mat2 ،‬ماتری‬ ‫میدهد‪ .‬در متد )(‪ Main‬ابتدا سه نمونه به نامهای ‪( mat1‬ماتری‬
‫عملگرهای جمع‪ ،‬تفریق و ضرب ‪ mat1‬و‪ ) mat2‬ایعاد کرده‪ ،‬با دراخوانی متد )(‪ InitMatrix‬اعضای نمونده‬
‫‪mat1‬و‪ mat2‬را مقدار میدهد‪.‬‬
‫در ادامه با دراخوانی متد )(‪ ،PrintMatrix‬مقدار اعضای ‪ mat1‬و‪ mat2‬را نمای مدیدهدد‪ .‬در پایدان معمدوف‬
‫‪ mat1 , mat2‬را با عملگر ‪ +‬حساب کرده‪ ،‬در ‪ mat3‬قرار میدهد (دستور زیر)‪:‬‬
‫;‪mat3 = mat1 + mat2‬‬
‫پ از محاسبه معموف دو ماتری ‪ ،‬با دراخوانی متد )‪ PrintMatrix(mat3‬اعضای نمونه ‪ mat3‬را نمای‬
‫میدهد‪ .‬این عملیات را برای عملگرهای – و * نیز انعام میدهد‪.‬‬
‫‪ .4‬پروژه را ذخیره و اجرا کنید تا خروجی زیر را مشاهده نمایید‪:‬‬

‫‪ .15‬برنامه ای که مجمو مساحت و محیط چند شکل متفاوت از قبیل مربع‪ ،‬دایره‪ ،‬مستطیل و مثلث را محاسبه مزی‪-‬‬
‫کند‪ .‬این برنامه کاربردهای مختلفی از قبیل محاسبه مساحت و محیط زمین برای ساختوساز یا فروش‪ ،‬محاسبه مساحت‬
‫و محیط ساختما جهت نقاشی یا لولهکشی دارد‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .0‬پروژه جدیدی ایعاد کنید‪.‬‬
‫‪.2‬کالد ‪ Shapes‬را به پروژه اضاده کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p35‬‬
‫{‬
‫‪abstract class Shapes‬‬
‫{‬
‫;)(‪public abstract double Area‬‬
‫;)(‪public abstract double Perimeter‬‬
‫}‬
‫}‬
‫الکترونیکی ‪444‬‬

‫این کالد از نوف انتزاعی )‪ (abstract‬است که دو متد انتزاعی به نامهای )(‪( Area‬جهت محاسدبه مسداحت‬
‫ش ل)و )(‪( Perimeter‬جهت محاسبه محیط ش ل) دارد‪ .‬این متدها پیادهسازی ندارند‪ ،‬چون انتزاعی هستند‪.‬‬
‫‪.1‬کالد ‪ Square‬را به پروژه اضاده کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p35‬‬
‫{‬
‫‪class Square : Shapes‬‬
‫{‬
‫;‪int side‬‬
‫)‪public Square(int side‬‬
‫{‬
‫;‪this.side = (side > 0) ? side : 0‬‬
‫}‬
‫)(‪public override double Area‬‬
‫{‬
‫;)‪return (side * side‬‬
‫}‬
‫)(‪public override double Perimeter‬‬
‫{‬
‫;)‪return (4 * side‬‬
‫}‬
‫)(‪public override string ToString‬‬
‫{‬
‫‪return "Square:" + side.ToString() + "\tArea:" +‬‬
‫‪Area().ToString() + "\tPerimeter:" +‬‬
‫;)(‪Perimeter().ToString‬‬
‫}‬
‫}‬
‫}‬
‫این کالد مشتق کالد ‪ Shapes‬است و دارای اعضای زیر میباشد‪:‬‬
‫فیلد ‪ ،side‬طول ضلع مربع را نگهداری میکند‪.‬‬
‫سازنده ‪ ،Square‬ضلع مربع )‪ (side‬را بهعندوان پدارامتر دریاددت کدرده‪ ،‬ا)در بدزرگتدر از صدفر باشدد‪ ،‬بدا‬
‫اشاره)ر ‪ this‬در دیلد ‪ side‬قرار میدهد و)رنه مقدار دیلد ‪ side‬را صفر تعیین مینماید‪.‬‬
‫متد )(‪ ،Area‬با واژه ‪ override‬معدداً پیادهسازی شده است تا مساحت مربع را بر)رداند‪.‬‬
‫متد )(‪ ،Perimeter‬با واژه ‪ override‬معدداً پیادهسازی شده است تا محیط مربع را بر)رداند‪.‬‬
‫متد )(‪ ToString‬معدداً پیادهسازی شده است تا ضلع مربع‪ ،‬مساحت و محیط آن را بر)رداند‪.‬‬
‫‪ .6‬کالد ‪ Circle‬را به پروژه اضاده کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p35‬‬
‫{‬
‫‪class Circle : Shapes‬‬
‫{‬
‫;‪int radius‬‬
‫)‪public Circle(int radius‬‬
‫{‬
‫;‪this.radius = (radius > 0) ? radius : 0‬‬
‫}‬
‫)(‪public override double Area‬‬
‫{‬
‫;‪return Math.PI * radius * radius‬‬
‫پیوست‬ 440

}
public override double Perimeter()
{
return 2 * Math.PI * radius;
}
public override string ToString()
{
return "Circle:" + radius.ToString() + "\tArea: " +
Area().ToString() + "\tPerimeter: " +
Perimeter().ToString();
}
}
}
.‫ است که دارای اعضای زیر میباشد‬Shapes ‫این کالد نیز مشتق کالد‬
.‫ شعاف دایره را نگهداری میکند‬،radius ‫فیلد‬
radius ‫ ا)در بدزرگتدر از صدفر باشدد آن را در دیلدد‬،‫ را دریادت کرده‬radius ‫ پارامتر‬،Circle() ‫سازنده‬
.‫ قرار خواهد داد‬radius ‫ و)رنه صفر را در دیلد‬،‫( قرار میدهد‬this.radius)
.‫ معدداً پیادهسازی شده است تا مساحت دایره را محاسبه نماید‬override ‫ با واژه‬Area() ‫متد‬
.‫ معدداً پیادهسازی شده است تا محیط دایره را محاسبه کند‬override ‫ با واژه‬،Perimeter() ‫متد‬
‫ مسداحت و محدیط دایدره را‬،‫ معدداً پیادهسدازی شدده اسدت تدا شدعاف‬override ‫ با واژه‬،ToString() ‫متد‬
.‫بر)رداند‬
:‫ دستورات آن را بهصورت زیر تغییر دهید‬،‫ را به پروژه اضاده کرده‬Rectangle ‫ کالد‬.5
using System;
namespace p35
{
class Rectangle : Shapes
{
int length;
int width;
public Rectangle(int length, int width)
{
this.length = (length > 0) ? length : 0;
this.width = (width > 0) ? width : 0;
}
public override double Area()
{
return length * width;
}
public override double Perimeter()
{
return (length + width) * 2;
}
public override string ToString()
{
return "Rectangle:" + length.ToString() + "," +
width.ToString() + "\tArea:" +
Area().ToString() + "\tPerimeter:" +
Perimeter().ToString();
}
}
}
‫الکترونیکی ‪444‬‬

‫این کالد نیز مشتق کالد ‪ Shapes‬است که دارای اعضای زیر میباشد‪:‬‬
‫فیلدهای ‪ ،length‬طول مستطیل و ‪ ،width‬عرض مستطیل را نگهداری میکنند‪.‬‬
‫سازنده )(‪ ،Rectangle‬دو مقدار طول و عرض را بهعنوان پدارامتر دریاددت کدرده‪ ،‬ا)در بدزرگتدر از صدفر‬
‫باشند‪ ،‬در دیلدهای ‪ width‬و‪ length‬قرار میدهد‪.‬‬
‫متدهای )(‪ Area‬و )(‪ ،Perimeter‬با واژه ‪ override‬پیادهسازی شددهاندد کده بده ترتیدب مسداحت و محدیط‬
‫مستطیل را محاسبه میکنند‪ .‬اما متد )(‪ ،ToString‬طول‪ ،‬عرض‪ ،‬مساحت و محیط مستطیل را برمی)رداند‪.‬‬
‫‪.1‬کالد ‪ Traingle‬را به پروژه اضاده کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p35‬‬
‫{‬
‫‪class Traingle : Shapes‬‬
‫{‬
‫;‪int base1‬‬
‫;‪int height‬‬
‫)‪public Traingle(int base1, int height‬‬
‫{‬
‫;‪this.base1 = (base1 > 0) ? base1 : 0‬‬
‫;‪this.height = (height > 0) ? height : 0‬‬
‫}‬
‫)(‪public override double Area‬‬
‫{‬
‫;‪return base1 * height / 2‬‬
‫}‬
‫)(‪public override double Perimeter‬‬
‫{‬
‫‪return base1 + height + Math.Sqrt(base1 * base1 +‬‬
‫;)‪height * height‬‬
‫}‬
‫)(‪public override string ToString‬‬
‫{‬
‫‪return "Triangle:" + base1.ToString() + ", " +‬‬
‫‪height.ToString() + "\tArea: " +‬‬
‫‪Area().ToString() + "\tPerimeter: " +‬‬
‫;)(‪Perimeter().ToString‬‬
‫}‬
‫}‬
‫}‬
‫این دستورات کالد ‪ Triangle‬را پیادهسازی میکنند که مشتق کالد ‪ Shapes‬است‪ .‬این کدالد دارای‬
‫اعضای زیر میباشد‪:‬‬
‫فیلدهای ‪ ،base1‬قاعده و ‪ ،height‬ارتفاف مثلث را نگهداری میکنند‪.‬‬
‫سازنده )(‪ ،Traingle‬قاعده و ارتفاف مثلث را بهعنوان پارامتر دریادت کرده‪ ،‬ا)ر بزرگتر از صفر باشند‪ ،‬در‬
‫دیلدهای ‪ base1‬و ‪( height‬با واژه ‪ )this‬قرار میدهد‪.‬‬
‫متدهای )(‪ Perimeter‬و )(‪ ،Area‬با واژه ‪ override‬معدداً پیادهسازی شدهاند تا محدیط و مسداحت مثلدث‬
‫را حساب کنند و متد )(‪ ،ToString‬قاعده‪ ،‬ارتفاف‪ ،‬مساحت و محیط مثلث را برمی)رداند‪.‬‬
‫‪ .6‬به کالد ‪ Program‬بروید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p35‬‬
‫پیوست‬ ‫‪444‬‬

‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫‪Shapes[] sh = { new Square(12), new Rectangle(10,‬‬
‫;} )‪5), new Circle(20), new Traingle(10, 8‬‬
‫;‪double totalArea = 0‬‬
‫;‪double totalPerimeter = 0‬‬
‫)‪for (int i = 0; i < sh.GetLength(0); i++‬‬
‫{‬
‫;))(‪Console.WriteLine(sh[i].ToString‬‬
‫;)(‪totalArea += sh[i].Area‬‬
‫;)(‪totalPerimeter += sh[i].Perimeter‬‬
‫}‬
‫}‪Console.WriteLine("Total Area: {0‬‬ ‫‪Total‬‬
‫;)‪Perimeter: {1}", totalArea, totalPerimeter‬‬
‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫کالد ‪ Program‬حاوی متد )(‪ Main‬است‪ .‬این متد‪ ،‬آرایهای به نام ‪ sh‬با چهارعنصر تعری میکند‪ .‬عنصر‬
‫اول‪ ،‬نمونهای از مربع‪ ،‬عنصر دوم‪ ،‬نمونهای از مستطیل‪ ،‬عنصر سوم‪ ،‬نمونهای از دایره و عنصر چهارم‪ ،‬نمونهای از‬
‫مثلث است‪ .‬متغیرهای ‪ ،totalArea‬معموف مساحتهای اش ال و ‪ ،totalPerimeter‬معموف محیطهای اشد ال‬
‫میباشند که تعری شده‪ ،‬صفر در آنها قرار می)یرد‪ .‬در حلقه ت رار‪ ،‬اطالعات اشیا موجود در آرایده را چداپ‬
‫میکند و مساحت هر شیء را با معموف مساحت اشیا )‪ (totalArea‬و محیط هر شیء را با معمدوف محدیط اشدیا‬
‫میدهد‪.‬‬ ‫)‪ (totalPerimeter‬جمع میکند‪ .‬در پایان‪ ،‬معموف مساحت و محیط اشیا را نمای‬
‫‪ .6‬پروژه را ذخیره و اجرا کنید تا ش ل زیر را مشاهده نمایید‪:‬‬

‫‪ .33‬امروزه در دانشگاهها دودسته دانشجو تحصیل میکنند‪ :‬دانشجویا انتفاعی (روزانه) و دانشجویا غیرانتفاعی (مانند‬
‫شبانه)‪ .‬دانشجویا روزانه هیچ مبلغی را پرداخت نمیکنند‪ .‬اما‪ ،‬دانشجویا شبانه سه نو مبلغ پرداخت مزیکننزد کزه‬
‫عبارتاند از‪:‬‬
‫‪ .1‬مبلغ شهریه متغیر برای هر واحد عملی‬ ‫‪ .0‬مبلغ شهریه ثابت ‪ .2‬مبلغ شهریه متغیر برای هر واحد نظری‬
‫برنامهای که ابتدا تعداد دانشجو را از ورودی خوانده‪ ،‬سپس بهاندازه تعداد دانشجو شماره دانشجویی‪ ،‬نام دانشجو‪،‬‬
‫نو دانشجو‪ ،‬تعداد واحدهای نظزری و عملزی دانشزجو را دریافزت کزرده‪ ،‬مبلزغ شزهریه کزل دانشزجویا را نمزایش‬
‫میدهد(اگر نو دانشجو صفر وارد شود‪ ،‬دانشجو روزانه وگرنه شبانه است)‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .0‬پروژه جدیدی ایعاد کنید‪.‬‬
‫‪ .2‬کالد ‪ Student‬را به پروژه اضاده کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p36‬‬
‫{‬
‫‪class Student‬‬
444 ‫الکترونیکی‬
{
private string code;
protected string Code
{
get
{
return code;
}
set
{
code = value;
}
}
private int type;
protected int Type
{
get
{
return type;
}
set
{
type = (value == 1) ? value : 0;
}
}
private string name;
protected string Name
{
get
{
return name;
}
set
{
name = value;
}
}
private int unit1;
protected int Unit1
{
get
{
return unit1;
}
set
{
unit1 = (value > 0 && value <= 24) ? value : 0;
}
}
private int unit2;
protected int Unit2
{
get
{
return unit1;
}
set
{
unit1 = (value > 0 && value <= 24) ? value : 0;
‫پیوست‬ ‫‪444‬‬

‫}‬
‫}‬
‫} { )(‪public Student‬‬
‫)‪public Student(string c, int t, string n, int u1, int u2‬‬
‫{‬
‫;‪Code = c‬‬
‫;‪Type = t‬‬
‫;‪Name = n‬‬
‫;‪Unit1 = u1‬‬
‫;‪Unit2 = u2‬‬
‫}‬
‫)(‪public virtual int Amount‬‬
‫{‬
‫;‪return 0‬‬
‫}‬
‫}‬
‫}‬
‫این دستورات کالد ‪ Student‬را پیادهسازی میکنند‪ .‬این کالد اعضای زیر را دارد‪.‬‬
‫فیلدهای ‪ unit1 ،name ، type ،code‬و ‪ ،unit2‬به ترتیب کد دانشعویانی‪ ،‬نوف دانشدعو‪ ،‬ندام‪ ،‬تعدداد واحدد‬
‫نظری و تعداد واحد عملی دانشعو را نگهداری میکنند‪.‬‬
‫خواص ‪ Unit1 ،Name ، Type ،Code‬و ‪ ،Unit2‬به ترتیب برای بازیابی یدا مقدداردهی بده دیلددهای ‪،code‬‬
‫‪ unit1 ،name ،type‬و‪ unit2‬به کار میروند‪.‬‬
‫سازندههای )(‪ ،Student‬نمونهای از کالد ‪ Student‬ایعاد میکنند‪.‬‬
‫متد )(‪ ،Amount‬مقدار پرداختی دانشعو را محاسبه میکند‪ .‬برای دانشعویان روزانه مقدار پرداختدی صدفر‬
‫میباشد‪ .‬این متد بهصورت ‪ virtual‬تعری شده است تا بتوان آن را در کالد مشتق با واژه ‪ override‬معددداً‬
‫پیادهسازی نمود‪.‬‬
‫کالس ‪ nightStutdent‬را به پروژه اضاده کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p36‬‬
‫{‬
‫‪class nightStudent : Student‬‬
‫{‬
‫;‪public static int Fix = 2000000‬‬
‫;‪public static int Var1 = 100000‬‬
‫;‪public static int Var2 = 150000‬‬
‫)‪public nightStudent(string c,int t,string n,int u1,int u2‬‬
‫)‪: base(c, t, n, u1, u2‬‬
‫{‬
‫}‬
‫)(‪public override int Amount‬‬
‫{‬
‫;)‪return (Fix + Unit1 * Var1 + Unit2 * Var2‬‬
‫}‬
‫}‬
‫}‬
‫این دستورات کالد ‪ nightStudent‬را پیادهسازی میکنند‪ .‬این کالد مشتق ‪ Student‬است که عدالوه‬
‫بر دیلدها و خواص کالد ‪ Student‬خواص زیر را نیز دارد‪:‬‬
‫ثابت ‪ ،Fix‬شهریه ثابت را نگهداری میکند‪.‬‬
449 ‫الکترونیکی‬

.‫ شهریه واحدهای نظری را نگهداری میکند‬،Var1 ‫ثابت‬


.‫ شهریه واحدهای عملی را نگهداری میکند‬،Var2 ‫ثابت‬
‫ معدداً پیادهسازی شده است تا بتواند شهریه یک دانشعوی شبانه (غیرانتفاعی) را محاسبه‬،Amount() ‫متد‬
.‫کرده و بر)رداند‬
:‫ بروید و دستورات آن را بهصورت زیر تغییر دهید‬Program ‫ به کالد‬.1
using System;
namespace p36
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter number of student:");
int n = int.Parse(Console.ReadLine());
Student[] st = new Student[n];
long totalPayment = 0;
for (int i = 0; i < n; i++)
{
Console.WriteLine("Enter information for
student {0}", i + 1);
Console.Write("Enter Code:");
string code = Console.ReadLine();
Console.Write("Enter name:");
string name = Console.ReadLine();
Console.Write("Enter type:");
int type = int.Parse(Console.ReadLine());
Console.Write("Enter unit1:");
int unit1 = int.Parse(Console.ReadLine());
Console.Write("Enter unit2:");
int unit2 = int.Parse(Console.ReadLine());
if (type == 0)
st[i] = new Student(code, type, name,
unit1, unit2);
else
st[i] = new nightStudent(code, type,
name, unit1, unit2);
Console.WriteLine("Payment: {0}",
st[i].Amount());
totalPayment += st[i].Amount();
}
Console.WriteLine("Total Payment: {0}",
totalPayment);
Console.ReadLine();
}
}
}
‫ تعدداد دانشدعو را مدیخواندد در‬،‫ پیغامی را نمای مدیدهدد‬،‫ این متد‬.‫ است‬Main() ‫این کالد حاوی متد‬
‫ ایعاد میکند (تعداد عناصدر آرایده برابدر عدددی کده از ورودی‬Student ‫ از نوف‬st ‫ آرایهای از اشیا به نام‬،‫ادامه‬
.‫ (معموف شهریه دانشعویان) را با مقدار اولیه صفر تعری مینماید‬totalPayment ‫ متغیر‬، ‫ سپ‬.)‫خوانده است‬
‫ مبلغ شدهریه پرداختندیاش‬،‫ در داخل حلقه ت رار اطالعات هر دانشعو را خوانده‬،‫یک حلقه ت رار ایعاد کرده‬
.‫ مقدار شهریه پرداختی را نمای میدهد‬،‫ در پایان‬.‫ جمع مینماید‬totalPayment ‫را محاسبه نموده با‬
‫پیوست‬ ‫‪444‬‬

‫‪ .4‬پروژه را ذخیره و اجرا کنید‪ .‬اطالعات درخواست شده را وارد نمایید تا خروجی را به ش ل زیر ببینید‪:‬‬

‫مثال ‪ .16‬برنامهای که کالس مربع را از نو کالس ‪ static‬پیادهسازی میکند‪ .‬این کالس دارای عضزو دادهای ‪side‬‬
‫(ضلع مربع)‪ ،‬عضو متدی )(‪ Area‬برای محاسبه مساحت مربع‪ ،‬عضو متدی )(‪ ،Perimeter‬برای محاسبه محزیط مربزع‬
‫است(هما طور که در لیست برنامه میبینید‪ ،‬چو کالس از نو ‪ static‬است‪ ،‬همه این اعضا نیا ‪ static‬میباشند)‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .0‬پروژه جدیدی ایعاد کنید‪.‬‬
‫‪ .2‬کالد ‪ Square‬را بهصورت ‪ static‬به پروژه اضاده کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p37‬‬
‫{‬
‫‪public static class Square‬‬
‫{‬
‫;‪public static double side‬‬
‫)(‪public static double Perimeter‬‬
‫{‬
‫;‪return side * 4‬‬
‫}‬
‫)(‪public static double Area‬‬
‫{‬
‫;‪return side * side‬‬
‫}‬
‫}‬
‫}‬
‫به کالد ‪ Program‬بروید و دستورات آن را بهصورت زیر تغییر دهید‪:‬‬ ‫‪.1‬‬
‫;‪using System‬‬
‫‪namespace p37‬‬
‫{‬
‫‪class Program‬‬
‫{‬
‫)‪static void Main(string[] args‬‬
‫{‬
‫;‪Square.side = 36.84‬‬
‫;)"‪Console.WriteLine("Square Characteristics‬‬
‫الکترونیکی ‪444‬‬
‫‪Console.Write("Side:‬‬ ‫;)"‬
‫;)‪Console.WriteLine(Square.side‬‬
‫;)" ‪Console.Write("Perimeter:‬‬
‫;))(‪Console.WriteLine(Square.Perimeter‬‬
‫‪Console.Write("Area:‬‬ ‫;)"‬
‫;))(‪Console.WriteLine(Square.Area‬‬
‫;)(‪Console.ReadLine‬‬
‫}‬
‫}‬
‫}‬
‫‪ .4‬پروژه را ذخیره و اجرا کنید‪ .‬اطالعات درخواست شده را وارد نمایید تا خروجی را به ش ل زیر ببینید‪:‬‬

‫‪ .16‬برنامه ای که مجمو مساحت و محیط چند شکل متفاوت از قبیل مربع‪ ،‬دایره‪ ،‬مستطیل و مثلث را از طریل واسزط‬
‫محاسبه میکند‪ .‬این برنامه کاربردهای مختلفی از قبیل محاسبه مساحت و محیط زمین برای سزاختوسزاز یزا فزروش‪،‬‬
‫محاسبه مساحت و محیط ساختما جهت نقاشی یا لولهکشی دارد‪.‬‬
‫مراحل طراحی و اجرا‬
‫‪ .1‬پروژه جدیدی ایعاد کنید‪.‬‬
‫‪.4‬کالد ‪ Shapes‬را به پروژه اضاده کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p39‬‬
‫{‬
‫‪public interface IShapes‬‬
‫{‬
‫;)(‪double Area‬‬
‫;)(‪double Perimeter‬‬
‫}‬
‫}‬
‫‪.1‬کالد ‪ Square‬را به پروژه اضاده کرده‪ ،‬دستورات آن را بهصورت زیر تغییر دهید‪:‬‬
‫;‪using System‬‬
‫‪namespace p39‬‬
‫{‬
‫‪class Square : IShapes‬‬
‫{‬
‫;‪int side‬‬
‫)‪public Square(int side‬‬
‫{‬
‫;‪this.side = (side > 0) ? side : 0‬‬
‫}‬
‫)(‪public override double Area‬‬
‫{‬
‫;)‪return (side * side‬‬
‫}‬
‫)(‪public override double Perimeter‬‬
‫{‬
‫;)‪return (4 * side‬‬
‫}‬
‫)(‪public override string ToString‬‬
‫{‬
‫پیوست‬ 444

return "Square:" + side.ToString() + "\tArea:" +


Area().ToString() + "\tPerimeter:" +
Perimeter().ToString();
}
}
}

:‫ دستورات آن را بهصورت زیر تغییر دهید‬،‫ را به پروژه اضاده کرده‬Circle ‫ کالد‬.6


using System;
namespace p39
{
class Circle : IShapes
{
int radius;
public Circle(int radius)
{
this.radius = (radius > 0) ? radius : 0;
}
public override double Area()
{
return Math.PI * radius * radius;
}
public override double Perimeter()
{
return 2 * Math.PI * radius;
}
public override string ToString()
{
return "Circle:" + radius.ToString() + "\tArea: " +
Area().ToString() + "\tPerimeter: " +
Perimeter().ToString();
}
}
}
:‫ دستورات آن را بهصورت زیر تغییر دهید‬،‫ را به پروژه اضاده کرده‬Rectangle ‫ کالد‬.5
using System;
namespace p39
{
class Rectangle : IShapes
{
int length;
int width;
public Rectangle(int length, int width)
{
this.length = (length > 0) ? length : 0;
this.width = (width > 0) ? width : 0;
}
public override double Area()
{
return length * width;
}
public override double Perimeter()
{
return (length + width) * 2;
}
public override string ToString()
{
return "Rectangle:" + length.ToString() + "," +
444 ‫الکترونیکی‬
width.ToString() + "\tArea:" +
Area().ToString() + "\tPerimeter:" +
Perimeter().ToString();
}
}
}
:‫ دستورات آن را بهصورت زیر تغییر دهید‬،‫ را به پروژه اضاده کرده‬Traingle ‫ کالد‬.1
using System;
namespace p39
{
class Traingle : IShapes
{
int base1;
int height;
public Traingle(int base1, int height)
{
this.base1 = (base1 > 0) ? base1 : 0;
this.height = (height > 0) ? height : 0;
}
public override double Area()
{
return base1 * height / 2;
}
public override double Perimeter()
{
return base1 + height + Math.Sqrt(base1 * base1 +
height * height);
}
public override string ToString()
{
return "Triangle:" + base1.ToString() + ", " +
height.ToString() + "\tArea: " +
Area().ToString() + "\tPerimeter: " +
Perimeter().ToString();
}
}
}
:‫ بروید و دستورات آن را بهصورت زیر تغییر دهید‬Program ‫ به کالد‬.6
using System;
namespace p39
{
class Program
{
static void Main(string[] args)
{
IShapes[] sh = { new Square(12),
new Rectangle(10, 5),
new Circle(20), new Traingle(10, 8) };
double totalArea = 0;
double totalPerimeter = 0;
for (int i = 0; i < sh.GetLength(0); i++)
{
Console.WriteLine(sh[i].ToString());
totalArea += sh[i].Area();
totalPerimeter += sh[i].Perimeter();
}
Console.WriteLine("Total Area: {0}\t\tTotal
Perimeter: {1}", totalArea, totalPerimeter);
‫پیوست‬ ‫‪440‬‬

‫;)(‪Console.ReadKey‬‬
‫}‬
‫}‬
‫}‬
‫‪ .6‬پروژه را ذخیره و اجرا کنید تا ش ل زیر را مشاهده نمایید‪:‬‬
‫منابع‬

‫‪ .1‬جعفر نژاد قمی‪ ،‬عین اله‪ ،‬عباس نژادورزی‪ ،‬رمضان‪ ،‬برنامه نویسی به زبان ‪( C#‬ویراست سوم)‪ ،‬بابل‬
‫انتشارات علوم رایانه‪.8811 ،‬‬
‫‪ .2‬عباس نژادورزی‪ ،‬رمضان‪ ،‬حل مسائل ‪(C++‬مرجع کامل)‪ ،‬بابل فنآوری نوین‪.8811 ،‬‬
‫‪ .3‬عباس نژادورزی‪ ،‬رمضان‪ ،‬آموزش گام به گام برنامههنویسهی بانهک اطالعهایی بها ‪ ،C#‬بابلل‬
‫فنآوری نوین‪.8811 ،‬‬
‫‪ .4‬عباسنژادورزی‪ ،‬رمضان‪ ،‬رحیم پور کامی‪ ،‬باقر‪ ،‬هاشمیان‪ ،‬ابلراهیم‪ ،‬طراحی سیستمهای شیگهرا بهه‬
‫زبان ‪ ،C#‬بابل فنآوری نوین‪.8818 ،‬‬
‫‪ .5‬عبللاسنللژادورزی‪ ،‬رمضللان‪ ،‬یونعللی‪ ،‬عمللران‪ ،‬عبللاسنللژادورزی‪ ،‬یو‪ ،‬ل ‪ ،‬حههل ‪( C++‬آزمایشههها‬
‫کامپیویرمرجع کامل)‪ ،‬بابل فنآوری نوین‪.8811 ،‬‬
‫‪6. Andrew Troelsen,"Pro C# 2008 and the .NET 3.5 Platform, Fourth‬‬
‫‪Edition", Apress, 2007‬‬
‫‪7. Daniel Solis, "Illustrated C# 2008", Apress, 2008‬‬
‫‪8. JON SKEET, "C# in Depth", Manning, 2008‬‬
‫‪9. Jesse Liberty & Alex Horovitz "Programming .NET 3.5", O’Reilly, 2008‬‬
‫‪10. byJoe Duffy," Professional .NET Framework 2.0",Wrox Press ,2006‬‬
‫‪11. Donis Marshall,"Microsoft Visual C# 2008: The Language", Microsoft‬‬
‫‪Press, 2008‬‬
‫‪12. Richard Blum ," C# Network Programming",Sybex , 2003‬‬
‫‪13. http://barnamenevis.org‬‬
‫‪14. http://www.codeproject.com/‬‬
‫‪15. http://www.srco.ir/‬‬
‫لینک فایل نمونه‬ ‫لینک خرید‬ ‫لینک خرید چاپی‬ ‫نام کتاب‬
‫الکترونیکی‬
http://ketabesabz. http://ktbr.ir/b30588 http://daneshnegar.co ‫مبانی رایانه و برنامهنویسی به زبان‬
com/dl/52319 m/book_380238.html
C++
http://ktbr.ir/b30327 http://daneshnegar.co ‫آشنایی با مبانی امنیت شبکه (امنیت‬
m/book_371137.html
)‫اطالعات‬
http://ketabesabz. http://ktbr.ir/b29943 http://daneshnegar.co ‫اصول طراحی پایگاه دادهها‬
com/dl/52155 m/book_371655.html
http://ketabesabz. http://ktbr.ir/b29984 http://daneshnegar.co ‫آموزش گامبهگام برنامهنویسی پایتون‬
com/dl/52181 m/book_392582.html
http://ktbr.ir/b29982 http://daneshnegar.co ‫ )آزمایشگاه‬C++ ‫حل مسائل‬
m/book_392262.html
(‫کامپیوتر مرجع کامل‬
http://ktbr.ir/b28451 http://daneshnegar.co C# ‫ با‬LINQ ‫آموزش گامبهگام‬
m/book_369388.html
http://ketabesabz. http://ktbr.ir/b29676 http://daneshnegar.co C++‫ساختمان دادهها با‬
com/dl/52156 m/book_379094.html
http://ketabesabz. http://ktbr.ir/b29621 http://daneshnegar.co # ‫طراحی سیستمهای شیگرا با زبان‬
com/dl/52126 m/book_374658.html
C
http://ketabesabz. http://ktbr.ir/b29779 http://daneshnegar.co ‫مدیریت استراتژیک فناوری اطالعات‬
com/dl/52125 m/book_374659.html
http://ketabesabz. http://ktbr.ir/b29674 http://daneshnegar.co ‫گرافیک رایانهای با زبان برنامهنویسی‬
com/dl/51049 m/book_376021.html
C#
http://ketabesabz. http://ktbr.ir/b29644 http://daneshnegar.co ‫درس و کنکور پایگاه داده پیشرفته‬
com/dl/52102 m/book_392578.html
http://ktbr.ir/b29680 http://daneshnegar.co ‫فیزیک الکتریسیته‬
m/book_379161.html
http://ktbr.ir/b29619 http://daneshnegar.co ‫تجارت الکترونیکی‬
m/book_379188.html
http://ktbr.ir/b28504 http://daneshnegar.co OPNET ‫راهنمای کاربردی کاربری‬
m/book_392583.html
‫برای شبکههای شبیهسازی کامپیوتر‬
http://ketabesabz. http://ktbr.ir/b28505 http://daneshnegar.co ‫درس و کنکور سیستم عامل پیشرفته‬
com/dl/52180 m/book_392580.html
http://ktbr.ir/b28528 http://daneshnegar.co ‫شبکههای کامپیوتری با رویکرد‬
m/book_392254.html
‫ آزمایشگاه شبیهسازی شبکه‬،‫کاربردی‬
http://ketabesabz. http://ktbr.ir/b28503 http://daneshnegar.co SQL ‫آزمایشگاه پایگاه داده با‬
com/dl/53447 m/book_377301.html
Server 2012
http://ktbr.ir/b28450 http://daneshnegar.co ‫کاربرد رایانه در مدیریت و حسابداری‬
m/book_375892.html
http://ktbr.ir/b28449 http://daneshnegar.co ‫آموزش گامبهگام برنامهنویسی بانک‬
m/book_368929.html
‫اطالعاتی با ویژوال بیسیکنت‬
http://ktbr.ir/b28452 http://daneshnegar.co ‫آموزش گامبهگام برنامهنویسی به زبان‬
m/book_380238.html
C++
http://ketabesabz. http://ktbr.ir/b28448 http://daneshnegar.co ‫دانلود کتاب آموزش گامبهگام‬
com/dl/51047 m/book_368486.html
C# ‫برنامهنویسی بانک اطالعاتی با‬
http://ktbr.ir/b28398 ‫حل مسائل پاسکال‬
http://ketabesabz. http://ktbr.ir/b28401 http://daneshnegar.co C++ ‫حل مسائل‬
com/dl/51048 m/book_392262.html
http://ketabesabz. http://ktbr.ir/b28399 http://daneshnegar.co C# ‫دانلود کتاب حل مسائل‬
com/dl/51011 m/book_374657.html
http://ktbr.ir/b28397 C ‫دانلود کتاب حل مسائل‬

You might also like