Professional Documents
Culture Documents
650 Barname C Sharp Ba Hal Dec
650 Barname C Sharp Ba Hal Dec
تألیف:
دکتر رمضان عباس نژاد ورزی
مهندس محمد نادعلی زاده چاری
فنآوری نوین
:عباسنژاد ورزی ،رمضان- 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 فنآوری نوین
منابع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قرار میگیرد.
.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# آشنایی با
: عبارت زیر را محاسبه میکند، بدون استفاده از عملگر ضرب، را خوانده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();
}
}
}
.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
را بههصهورت زیهر.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
برنامه. به تن تبدیل میکند، برنامهای که وزن یک محموله را به اونس گرفته. اونس است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# آشنایی با
مساحت آن را با فرمول،) ذوزنقه را دریافت کرده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
.38برنامه ای که شعاع دایره را خوانده ،محیط ،مساحت و قطر آن را نمایش میدهد (محیط ،مسهاحت و
قطر دایره بهصورت زیر حساب میشوند):
𝝅 * شعاع * = 2محیط دایره
)2شعاع( * 𝝅 = مساحت دایره
شعاع * = 2قطر دایره
.39برنامهای که عددی را به سال خوانده ،تعیین میکند چند ماه ،چند روز و چند ثانیه است.
سال * = 415135روز
/ 41روز = ماه * 33 * 11 * 11روز = ثانیه
هدف متغیر
عدد ورودی به سال Year
عدددددد تبددددد شددددد day
بهروز
;using System عدددد تبددد شددد بدده month
namespace p39 ما
{
عدددد تبددد شددد بدده second
class Program
{ ثانیه
11 و دستورات ورودی و خروجیC# آشنایی با
، تقسهیم، ضهرب، تفریهق، سپس حاصل جمع، قرار میدهد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# آشنایی با
برنامهای کهه تعهداد. بایت حافظه اشغال میکند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#و دستورات ورودی و خروجی
.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# آشنایی با
. ارقام عدد را بافاصله نمایش میدهد، رقمی را خوانده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
}
}
}
هدف متغمر
شمارنده 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 ساختار تصمیم و حلقه تکرار
، چند روز، چند ماه، مشخص میکند چند سال، برنامه ای که سال تولد کاربر و سال فعلی را از ورودی خوانده.5
. چند دقمقه و چند ثانمه عمر کرده است،چند ساعت
هدف متغمر
سال تولد byy
فصل دوم 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 ساختار تصمیم و حلقه تکرار
را محاسبه و چاپ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 ساختار تصمیم و حلقه تکرار
.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 ساختار تصمیم و حلقه تکرار
برنامهای که ایع مسابقه را 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
میگوید چه رنگی را انتخاب، از ورودی خوانده، برنامهای که کاراکتری را که نشاندهنده رنگی میباشد.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();
}
}
}
;)(Console.ReadKey
}
}
}
;)(Console.ReadKey
}
}
}
.28برنامهای که القاب افراد را از ورودی بهصورت یک کاراکتر خوانده ،سپس لقب آن را بهصورت کامل در
خروجی چاپ میکند ( بر اساس جدول زیر):
عالمت ورودی لقب لقب التمع
b، b بانو lady
d، d دوشیزه miss
p، p پروفسور professor
a، a آیا mr
43 ساختار تصمیم و حلقه تکرار
پیغام مربوطه (لقب) را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();
}
}
}
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
برنامهای که تعممع میکند در یک فروشگاه آیا ممزان خرید مشتری از سقف اعتبار حسابش بمشتر شده است یا.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
: مجموع عبارت را نمز نمایش میدهد، عالوه بر نمایش عبارت زیر، را خوانده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
: اعمال زیر را انجام دهد، یک کاراکتر و سپس عدد دیگری را خوانده، برنامهای که یک عدد.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();
}
}
}
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 ساختار تصمیم و حلقه تکرار
.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 ساختار تصمیم و حلقه تکرار
.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
.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را داریم.
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
}
} .شمارد
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
𝟎∑
!𝒙 𝒏=𝒋
= )𝒌 𝑭(𝒙, 𝒏,را نمایش میدهد. برنامهای که n ،xو kرا خوانده ،حاصل عبارت .64
𝒌∑
!𝒊 𝟏=𝒊
هدف متغمر
عدد خواندهشده xرا نگهداری میکند. x
33 ساختار تصمیم و حلقه تکرار
عدد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
اضجالع و، یعنجی. خروجی مثل زیر را نمایش میدهجد، ) را از ورودی خوانده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 ساختار تصمیم و حلقه تکرار
.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 ساختار تصمیم و حلقه تکرار
کارمنجد را خوانجده و سجه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
}
}
}
}
}
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();
}
}
}
.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();
}
}
}
.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 در این برنامه
.(عدد فعلی) است
چه ماه و چهه روزی از، مشخص میکند که چه فصلی، برنامهای که روزی از سال را خوانده: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
پروژه برنامهنویسی :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
پروژه برنامهنویسی :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 ساختار تصمیم و حلقه تکرار
.2برنامهای که فاصلهای را برحسب فوت و اینچ دریافت کرده ،معادل آن را برحسب متر و سانتیمتر بیان میکند.
هر فوت 4/8403متر ،یک متر 044سانتیمتر و هر فوت 01اینچ است .حداقل از سه متد استفاده کنید .یکی برای
ورودی ،یکی برای انجام محاسبات و یکی برای خروجی.
وظایف متدها:
متد :mainاین متد ،متدها write ،readو calculateرا فراخوانی میکند.
متد :readاین متد فاصله را به فوت و اینچ میخواند.
متد :calculateاین متد ،هر یک از فواصل برحسب فوت و اینچ را به متر و سانتیمتر تبدیل میکند.
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
بهصورت عمومی تعریف میشوند و مقدار آنها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#
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
: را خوانده و با استفاده از متدی حاصل سری زیر را محاسبه کرده و نمایش میدهد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
}
.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
متد تفاضل حاصدلضدرب و حاصدل. برنامهای که دو عدد را از ورودی میخواند و به متدی ارسال میکند.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
دقیقه (پارامتر ارجاع)
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
}
}
}
{
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
هدف متغیر متد
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;
}
{
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
. برای این متدها دریافت میکند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ها متداخل مقدار مالیات را بر
اساس حقوق محاسبه میکند و برمیگرداند.
نمایش، آن را محاسبه کرده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#
.24برنامهای که عددی را خوانده ،با استفاده از یک متد حاصلضرب ارقام زوج آنها را برمیگرداند و نمایش
میدهد.
متد :mainمتغیر nرا تعریف کرده ،با پیغام مناسب عددی را از ورودی خوانده ،در آن قرار میدهدد .سدپس بدا
فراخوانی متد )( ،sumEvenDigitحاصل جمع ارقام زوج را برگرداند و پیغام مناسب نمایش را میدهد.
متد )( :sumEvenDigitپارامتر nرا از متد mainدریافت کرده ،بدا روش بازگشدتی حاصدل جمدع ارقدام زوج
( )n%10%2==0را محاسبه کرده و برمیگرداند.
;)(Console.ReadKey
}
}
}
فصل سوم 511
.25برنامهای که nرا خوانده ،با استفاده از یک متد nبار 04تا xرا نمایش میدهد.
متد :mainمتغیر nرا تعریف کرده ،با یک پیغام nرا از ورودی خوانده ،با شمارندهای از 0تا nرا مدیشدمارد و
در هر بار در داخل حلقه )( print_10_Xsرا فراخوانی میکند تا 04تا xرا نمایش دهد.
متد )( :print_ 10_Xsبا شمارندهای 04تا xرا نمایش میدهد.
;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را تعریدف کدرده ،نمدره نهدایی را
محاسبه مینماید و سپس برمیگرداند.
;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
}
}
}
{
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#
.29برنامه ای که قیمت کاال و درصد تخفیف را دریافت کرده ،به متدی ارسال میکند و این متد میزان تخفیف
کاال را برگردانده و در برنامه میزان تخفیف را نمایش میدهد.
متد :mainمتغیرهای costو rateرا تعریف کرده با پیغام مناسب این اطالعات را از ورودی میخواند و سپس با
فراخوانی متد )( ،calculateمیزان تخفیف را حساب کرده ،با پیغام مناسب نمایش میدهد.
متد :calculateپارامترهای costو rateرا بهعنوان پارامتر دریافت کرده ،حاصلضرب این دو پارامتر تقسدیمبدر
044برابر تخفیف است و آن را برمیگرداند.
.31برنامه ای که میزان موجودی حساب بانکی را به همراه درصد بهره ساالنه دریافت کرده ،تعیین میکند سپس از
چند سال موجودی حساب (بدون برداشت هیچ مبلغی از حساب) به مبلغ خاصی میرسد (موجودی انتهای هرسال
توسط متدی محاسبه میگردد).
متد :mainمتغیرهای rate ،newBalance ،balanceو countرا تعریف کرده ،مقادیر موجودی و نرخ سدود را
با یک پیغام مناسب دریافت میکند .سپس موجودی جدید را دریافت میکند (با یک پیغام مناسب) .موجودی جدید
را در متغیری که موجودی پایان سال تعریف میکند ( )salBalanceمیباشد .موجودی پایان سال را با فراخوانی متد
calculateمحاسبه کرده ،تعداد سال ( )countرا یک واحد اضافه میکند و در پایان ،تعداد سال را بدا پیغدام مناسدب
نمایش میدهد.
متد :calculateپارامترهای balanceو rateرا دریافت کرده ،موجودی فعلی بهعالوه حاصدلضدرب balance
ضربدر 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#
.31برنامهای که کاراکتری را از ورودی خوانده ،توسط متدهای تعیین میکند که کاراکتر خواندهشده ،رقم،
حرف بزرگ و حرف کوچک است یا خیر؟
متد :mainکاراکتر chرا تعریف کرده ،با نمایش یک پیغام مناسب کاراکتری را خوانده ،در آن قدرار مدیدهدد.
سپس با فراخوانی متدها )( isUpper() ،isDigitو )( isLowerتعیین میکند که کاراکتر دریافتی یکی از ارقام ،حرف
بزرگ یا حرف کوچک است یا خیر؟
متد )( ،isDigitپارامتر chاز نوع کاراکتر را دریافت کرده ،اگر بین کاراکترهای ’ ‘0تا ’ ‘9باشدد ،true ،وگرنده
falseرا برمیگرداند.
متد )( ،isUpperیک کاراکتر را بهعنوان پارامتر دریافت کرده ،اگر بین ’ ‘Aتا ’ ‘Zباشد true ،را برمیگرداندد،
وگرنه falseرا برمیگرداند.
متد )( ،isLowerیک کاراکتر را بهعنوان پارامتر دریافت کرده ،اگر بین ’ ‘aتا ’ ‘zباشد true ،را برمدیگرداندد،
وگرنه falseرا برمیگرداند.
{
;)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را برمیگرداند.
;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
}
}
}
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#
{
;)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 پارامتر x
شمارنده i
xn پارامتر پایه برای x Pow
{
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# متد در
: جمله عبارت زیر را نمایش میدهد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
.38برنامهای که دو مقدار عددی را خوانده ،سپس توسط متدی به عدد اول یک واحد اضافه نماید و از عدد دوم
یک واحد کسر کرده ،آنها را در برنامه اصلی نمایش میدهد.
در این برنامه دو متد به نامهای incDecو incDec1نوشتهشده است .متد incDecکه پارامترها را بهصورت ارسال
پارامتر به مقدار فراخوانی میکند .در این صورت تغییرات پارامتری مجازی برای پارامتر واقعی ارسال نمیگردد .اما،
متد incDec1دو پارامتر نوع ارجاع را میپذیرد و مقادیر تغییریافته آنها را به برنامه اصلی برمیگرداند.
{
;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
{
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
}
}
}
متد )( ،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 برنامهای که با روش بازگشتی مقدار مشتق.42
𝐝𝐧
(𝒆 )𝒏 =
𝒂𝒙
𝒂(𝒆𝒂𝒙 )𝒏−𝟏 : رابطه بازگشتی مقابل به دست میآید، مشتق بگیریمeax اگر از متد:توضیح
:وظایف متدها
و یک پیغام مناسب حاصدلderivate() را خوانده و با فراخوانی متدn وx ،a با نمایش پیغام مناسب:main متد
𝐝(𝐧)
.را نمایش میدهد (𝒆𝒂𝒙 ) عبارت
𝐝𝐧
𝐚𝐱 𝐧 𝒂𝒙 𝒏−𝟏
، (𝐞 ) = 𝒂(𝒆 ) بهصورت بازگشتی بدا تعریدف، را دریافت کردهx وa ،n پارامترهای،derivate() متد
.حاصل مشتق را محاسبه میکند و برمیگرداند
;)"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قرار دارند ،معادل سینوس ،کسینوس و تانژانت آنها را نمایش میدهد.
;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
}
}
}
}
.45برنامهای که حاصل عبارت f(x) = 5x2-3x+4را برای مقادیر صحیح و اعشاری xبا دو متد هم نام محاسبه
کرده و نمایش میدهد.
متد :mainمتغیرهای x1و x2را به ترتیب از نوع صحیح و اعشاری تعریف میکند و با نمایش پیغامهدای مناسدب
آن ها را از ورودی میخواند و با فراخوانیهای متد همنام ( fیکبار برای عدد صحیح و یکبار بری عددد اعشداری)
مقادیر متد Fرا برای اعداد صحیح x1و x2نمایش میدهد.
فصل سوم 514
متد همنام )( ،Fپارامتر xرا دریافت کرده ،حاصل متد را برمیگرداند .این متدها هم نام که یکمرتبه پدارامتر x
را از نوع اعشاری ( )floatو بار دیگر آن را از نوع صحیح ( )intدریافت میکند.
پارامتری که عدد صحیح 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
.47برنامه ای که کاراکتری را خوانده ،بدون استفاده از عملگر +و ifآن را به حروف کوچک تبدیل میکند و
نمایش میدهد .این برنامه برای تبدیل حروف بزرگ و کوچک از یک متد استفاده میکند.
متد :mainابتدا کاراکتر chرا تعریف کرده ،با نمایش یک پیغام مناسب کداراکتری را از ورودی خواندده در ch
قرار میدهد و با فراخوانی متد )( lowerآن را به حرف کوچک تبدیل مینماید و با استفاده از پیغدام مناسدب آن را
نمایش میدهد.
متد )( ،lowerپارامتر ( chکاراکتری که باید به حروف کوچک تبدیل شود) را دریافت کرده ،اگر کداراکتر بدین
’ ‘Aتا ’ ‘Zباشد ،آن کاراکتر را با 81یا بیتی (|) مینماید تا به حرف کوچک تبدیل شود ،وگرنه خدود کداراکتر chرا
برمیگرداند.
.48برنامهای که یک کاراکتر را خوانده ،با استفاده از عملگر )^( xorاگر حرف کوچک بود ،آن را به حروف
بزرگ تبدیل کرده ،یا اگر حرف بزرگ بود ،آن را به حرف کوچک تبدیل نماید .برای این منظور ،از یک متد
استفاده نماید.
متد :mainابتدا کاراکتر chرا تعریف کرده ،با یک پیغام مناسب کداراکتری را از ورودی خواندده ،در آن قدرار
میدهد .سپس با فراخوانی متد )( reverseآن را به حرف بزرگ ،کوچدک یدا بددون تغییدر برمدیگرداندد و نمدایش
میدهد.
متد )(،reverseکاراکتری را از طریق پارامتر chدریافت کرده ،اگر کاراکتر بین ’ ‘Aتا ’‘Zیدا ’ ‘aتدا ’ ‘zباشدد،
آن کاراکتر را با 81یا انحصاری ( )xorمیکند (یعنی ،اگر بزرگ باشد ،به کوچک تبددیل و اگدر کوچدک باشدد ،بده
بزرگ تبدیل میکند) و برمیگرداند .وگرنه ،آن را بدون تغییر برمیگرداند.
.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
𝒏𝒙
𝟏=𝒌𝒏∑ = )F(x, n .51برنامهای که xو nرا خوانده ،حاصل عبارت مقابل را نمایش میدهد:
!𝒌
متد :mainابتدا xو nرا تعریف کرده ،با پیغام مناسب دو عدد را خواندده ،در xو nقدرار مدیدهدد ،سدپس بدا
فراخوانی متد )( ،sigmaحاصل ∑ را محاسبه کرده ،نمایش میدهد.
متد )( n ،factرا بهعنوان پارامتر دریافت کرده ،فاکتوریل nرا محاسبه میکند و برمیگرداند.
متد )( x ،sigmaو nرا بهعنوان پارامتر دریافت کرده ،حاصل ∑ را محاسبه میکند و برمیگرداند.
511 C# متد در
عدد ورودی n
n فاکتوریل f
پارامتر ورودی 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و غیره برای به دست آوردن نتایج عملگرهای بیانشده به کار میروند.
}
)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
متد بازگشتی که دو عدد x, yرا خوانده ،حاصل عبارت زیر را برمیگرداند: .53
اگر𝒙 یا𝒚 کوچکتر از صفر باشد 𝒚 𝒙 −
{ = )𝒚 𝑭(𝒙,
وگرنه)𝟏 𝑭(𝒙 − 𝟏, 𝒚) + 𝑭(𝒙, 𝒚 −
برنامهای که از این متد بازگشتی استفاده میکند.
متد :mainابتدا xو yرا با نوع صحیح تعریف کرده ،با یدک پیغدام مناسدب دو عددد را مدیخواندد و سدپس بدا
فراخوانی متد Fو یک پیغام مناسب خروجی را نمایش میدهد.
متد در 113 C#
متد :Fپارامترهای xو yرا دریافت کرده ،متد بازگشتی را پیادهسازی میکند.
}
}
}
متد بازگشتی 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را نمدایش
میدهد.
.56موسسهای قصد دارد xدرصد به حقوق کارمندانش اضافه کند .متدی که ضریب افزایش حقوق و حقوق فعلی
کارمند را دریافت کرده ،حقوق جدید را برمیگرداند .برنامهای که برای nکارمند از این متد استفاده میکند.
متد :mainابتدا متغیرهای rate ،salaryو nرا تعریف کرده ،سپس با یک پیغام مناسدب تعدداد کارمنددان و در
ادامه ضریب افزایش حقوق را میخواند و با یک حلقه تکرار nحقوق را میخواند و با فراخوانی متد )(newSalary
حقوق جدید را نمایش میدهد.
متد )( :newSalaryپارامترهای ( salaryحقوق فعلی) و ( 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 میکند که
.گرداند
.58متدی که تأثیر نیروی جاذبه بر اجسام در حال سقوط را محاسبه میکند .برنامهای که زمان را دریافت کرده
(برحسب ثانیه) و این تأثیر را محاسبه مینماید و چاپ میکند .این برنامه باید ارتفاع شیء سقوطکننده در هر ثانیه را
نمایش میدهد .برای این منظور از فرمولهای زیر استفاده مینماید:
زمان = g = 9.80665, tفاصله و = ارتفاع = ½ * g * t2فاصله
متد :mainابتدا tرا تعریف کرده ،سپس با یک پیغام مناسب عددی را از ورودی میخواند و در tقرار میدهدد.
در ادامه با فراخوانی متد )( calculatePullارتفاع را محاسبه کرده ،نمایش میدهد.
متد )( :calculatePullزمان ( )tرا بهعنوان پارامتر گرفته ،با فرمول بیانشده فاصدله (ارتفداع) را محاسدبه کدرده،
برمیگرداند.
ثابتی که تأثیر نیروی جاذبه بر اجسام در حال سقوط ا تعیین میکند. 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بخشپذیر باشند را نمایش میدهد.
میتوانیم طول ضلع سوم را با فرمول زیر، باشد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قاعده و ارتفاع) را دریافت کرده ،مساحت مثلث را برمیگرداند.
;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
.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
}
}
}
𝒎𝑪
= 𝒏
𝒏 اگر 𝟎 = = 𝒎
𝟏𝒏− 𝟏𝒏−
وگرنه )𝟏 { ( 𝒎 ) + (𝒎 −
متد :mainابتدا متغیرهای mو nرا تعریف کرده ،با نمایش پیغدام مناسدب دو عددد را خواندده ،در mو nقدرار
میدهد .سپس با فراخوانی )( ،C_mnمقدار متد را برمیگرداند و نمایش میدهد.
𝐦𝑪 را به روش بازگشتی حسداب مدینمایدد و برمدی- متد )( ،C_mnپارامترهای mو nرا دریافت کرده ،مقدار 𝐧
گرداند.
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() متد
}
.65برنامهای که nو mرا خوانده ،توسط یک متد بازگشتی ) A(m, nرا محاسبه میکند و نمایش میدهد
() A(m, nبهصورت زیر محاسبه میشود.
𝟏𝒏+ اگر𝟎 == 𝒎
برنامهای که nو mرا خوانده ،توسط یک متد بازگشتی ) Q(m, nرا محاسبه میکند و نمایش میدهد: .66
𝟏 وگرنه𝟏 == 𝒏 یا 𝟏 == 𝒎 باشد
اگر 𝑛 < 𝒎 .باشد)𝒏 𝑸 (𝒎,
= )𝒏 𝑸(𝒎,
اگر 𝒏 == 𝒎 باشد)𝟏 𝟏 + 𝑸(𝒎, 𝒎 −
}
}
.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را برمیگرداند.
}
}
Console.Write("Enter x:");
x = double.Parse(Console.ReadLine());
Console.Write(f_second(x));
Console.ReadKey();
}
}
}
حاصدل عبدارت زیدر را محاسدبه مدیکندد و نمدایش، را دریافدت کدردهa وn ،x برنامهای که سه عدد.19
:میدهد
x a n n!
x a n
n!
x1a n1
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را بهعنوان پارامتر دریافت کرده ،مجموع مقسومعلیههدای آن را محاسدبه مدیکندد و برمدی-
گرداند.
پروژه برنامهنویسی .2برنامهای که مقداری را از یک مبنا دریافت کرده ،به مبنای دیگر تبدیل میکند (مبناها
میتوانند بین 1تا 01باشند) .این پروژه مبنای مبدأ ،عددی در آن مبنا (چنانچه کاربر مقدار را خارج از مبنا وارد
کند ،جلوی او را میگیرد) و مبنای مقصد را از کاربر دریافت میکند.
متد :mainمتغیرها را تعریف کرده ،با فراخوانی متدها )( ،readNum() ،readBaseمبنای مبدأ ،عدد مبنای مبدأ
و مبنای مقصد را میخواند.
متد ،printیک کاراکتر را دریافت کرده ،با توجه به مبنا آن کاراکتر را در آن مبنا نمایش میدهد.
متد )( ،DecToMBaseیک عدد ) (xو مبنای mرا دریافت کرده ،عدد xرا از مبنای 04به مبنای mتبدیل می-
کند.
متد )( ،readNumیک کاراکتر را بهعنوان مبنا دریافت کرده و با توجه بده مبندای عدددی در آن مبندا از کداربر
دریافت میکند ،اگر کاربر عدد را نادرست وارد کند ،بهعنوانمثال ،در مبنای ،3اجازه تایپ مقددار بدیش از 1داده
نمیشود) .جلوی ورود عدد را میگیرد.
متد )( ،readBaseیک عدد را خوانده ،اگر عدد بین 1تا 01باشد آن را برمیگرداند ،وگرنه پیغام خطای
صادر کرده و دوباره عدد را میگیرد.
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# متد در
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();
}
}
}
اگر کاربر عدد 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را بهعنوان پارامتر دریافت کرده ،حاصل سری سوم را محاسبه مینماید و برمیگرداند.
{
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عمل میکند .با این تفاوت که بهجای محاسبه مساحت مثلث مساحت دایره
را حساب میکند.
پارامتری که قیمت هر متر زمین مثلثی شکل را از متد mainدریافت میکند. price Triangle
پارامتری که قیمت هر متر زمین مربعی شکل را از متد mainدریافت میکند. price Square
پارامتری که قیمت هر متر زمین دایره شکل را از متد mainدریافت میکند. price Circle
مقدار متد )( 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 فصل چهارم
.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عناصر موجود در آرایه را چاپ میکند.
}
}
)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++;
}
}
به همراه شماره سطر در، بزرگتری عنصر هر سطر را پیداکرده، را خوانده4×4 برنامهای که عناصر آرایهای.14
.خروجی چاپ میکند
. ستون پنجم آرایه برای نگهداری بزرگتری عنصر هر سطر در نظر گرفتهشده است:توضیح
آرایهها و رشتهها 642
.)strcpy برنامهای که رشتهای را در رشته دیگر کسی میکند (بدون استفاده از متد.11
:وظایف متدها
رشته اول و سس. رشته دوم را در رشته اول کسی میکندstrcpy با فراخوانی، دو رشته را خوانده:main متد
.دوم را با پیغام مناسب چاپ میکند
. یکرشته را در رشته دیگر کسی میکند:strcpy متد
.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 فصل چهارم
.)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
.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 فصل چهارم
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
.17هر عدد زوج بزرگتر از 6برابر با مجموع دو عدد اول کوچکتر از خودش است .برنامهای که چنید عیدد
زوج بزرگتر از 6را میخواند .مجموع دو عدد اولی که برابر بیا اعیداد خوانیدهشیده باشید را پییداکرده چیاپ
مینماید (برنامه تا زمانی که کاربر بخواهد ادامه مییابد).
وظایف متدها:
متد :primاعداد اول کوچکتر از عدد خواندهشده ،را در آرایه قرار میدهد.
متد :find_two_numbersدو عدد اولی را پیدا میکند که مجموع آنها برابر با عدد خواندهشده باشد.
هدف متغیر متد
عدد خواندهشده در هر مرحله n main
از کاربر میپرسد که آیا ادامه دهد یا خیر done
آرایه عدد اول p
شماره اولین و دومین اندیس عدد اول i, j
تعداد عدد اول tedad
شمارنده i prim
622 فصل چهارم
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
. رشته دوم و سوم را به انتهای رشته اول متصل میکند، برنامهای که سه رشته را خوانده.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
;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قرار میدهد .ابتدا میانگی مقادیر را محاسبه
میکند (با یک متد) .سس ،با استفاده از فرمول زیر انحراف معیار را محاسبه کرده ،چاپ مینماید (برای محاسبه
𝑵∑√
)𝒂𝒊=𝟏(𝑺𝒊−
𝟐
;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 فصل چهارم
.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
.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باشد).
;)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اطالعا
آرایه دوبعدی که بعد اول آن کد کاال و بعد دوم آن تعداد کاال است. 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قرار میدهد.
pرا محاسبه .34برنامهای که چندجملهای زیر را در یک آرایه نمایش میدهد (سس x ،را میخواند) و عبار
کرده ،چاپ مینماید ( nحداکثر 144باشد)p = anxn + an – 1xn-1 + …+a1x1 + a0 .
وظایف متدها:
متد :mainمتغیرهای برنامه را تعریف کرده x ،و nرا میخواند و با فراخوانی متد readضیرایب چندجملیهای
را خوانده ،در aقرار میدهد .سس ،مقدار sumرا محاسبه کرده ،چیاپ میینمایید و در پاییان ،چندجملیهای را بیا
فراخوانی متد printنمایش میدهد.
متد :readمکان و ضرایب چندجملهای را خوانده ،در آرایه aقرار میدهد .برای خاتمه ،بهجای مقدار مکان
باید عدد -1وارد شود.
622 فصل چهارم
;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
}
}
}
بافاصله از یکدیگر جدا میشوند (حداکثر 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
{
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
}
}
}
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
;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
متد :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 فصل چهارم
برنامهای که عناصر یک آرایه دوبعدی را 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
;))(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قرار داده ،برمیگرداند.
;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 فصل چهارم
یک عدد دیگر خوانده ،تعداد تکرار ای عدد .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را با یک حلقه تکرار نمایش میدهد.
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را دریافت کرده ،عناصر آرایه را در خروجی
نمایش میدهد.
.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
}
;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
.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
}
;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
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
}
}
}
.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
صعودی مرتب باشند ،“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
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
}
.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
;)"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رمز شود.
.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
.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
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
;)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
}
}
}
.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
میکند چه عددی بییش از همیه تکیرار تعیی .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
}
)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کاراکتر تشکیلدهنده جای خالی را حذف مینماید.
{
;}' ' 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آرایه را برابر صفر قرار میدهد .در پایان ،چنانچه مقدار آرایهای صفر نباشد ،اندی معادل آن را نمایش
میدهد.
}
}
.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
}
}
}
.67متد بازگشتی که ترکیبا یک مجموعه را برمیگرداند و نمایش میدهد .ای متد دارای سه پارامتر اسیت کیه
عبار اند از :شروع آرایه (مجموعه) ،تعداد عناصر مجموعه و ترکیبا مجموعه .سس ،برنامهای کیه تعیداد ترکیبیا
مجموعه را نمایش میدهد .بهعنوانمثال ،مجموعه } {A, B, Cرا در نظر بگیرید .برای ای مجموعه حالتهای زیر را
}… {AAA, AAB, AAC, ABA, ABB, ABC, ACB, ACC, داریم:
متد )( ،mainابتدا آرایه ( aکاراکترهایی که باید جایگشت از آن کاراکترها تولید شوند) را تعریف میکند و بیه
آن مقدار اولیه میدهد .سس با فراخوانی متد )( ،permutationجایگشتها را ایجاد کرده ،نمایش میدهد.
متد )( ، permutationشروع جایگشت ،تعداد عناصر مجموعه و مقدار مجموعه را دریافت کرده ،جایگشیتهیای
موردنظر را بهصور بازگشتی ایجاد میکند و نمایش میدهد.
}
;)]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 فصل چهارم
;)(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 فصل چهارم
.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
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
.70برنامهای که رشتهای را خوانده ،با استفاده از اشارهگر و بازگشتی ،طول رشته را حساب کرده ،نمایش میدهد.
متد )( ،mainابتدا رشته sرا تعریف کرده و آن را میخواند و با فراخوانی متد )( ،pointerLenطول رشیته sرا
نمایش میدهد.
متد )( ،pointerLenاشارهگر sرا بهعنوان پارامتر دریافت میکند و طول آن را بهصور بازگشتی برمیگرداند.
322 فصل چهارم
پروژه برنامهنویسی : 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
شمارندهای که برای پیدا کردن صندلی خالی در بخش غیر سیگارها به کار 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
{
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 فصل چهارم
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 فصل چهارم
سه در سه را خوانده ،اعمال زیر را انجام میدهد: پروژه برنامهنویسی : 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
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 فصل چهارم
فرض کنید بخواهیم وضعیت مدالهای بی المللی یک کشیور را در رشیته ورزشیی.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
{
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پروژه را ذخیره و اجرا کنید تا خروجی زیر را مشاهده نمایید:
.3برنامهای که نام کاربر و کلمه عبور را دریافت میکند .اگر نام کاربر fanavarienovinو کلمه عبور 654321
باشد ،ییغام ،Correctوگرنه ییغام Not Correctرا نمای میدهد.
توضیح :این برنامه از کالسی به نام Userاستفاده میکند که دو فیلد staticبه نامهای userNameو
Passwordدارد و متدی به نام )( isCorrectدارد تا تعیین کند ،نام کاربر و کلمه عبور صحیح واردشده
است یا خیر.
مراحل طراحی و اجرا
.1پروژه جدیدی ایجاد کنید.
.2کالسی Userرا به برنامه اضافه کرده ،دستورات آن را بهصورت زیر تغییر دهید:
;using System
namespace p3
{
class User
{
483فصل پنجم
.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پروژه را ذخیره و اجرا کنید تا نمونه خروجی زیر را مشاهده نمایید:
}
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فصل پنجم
.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پروژه را ذخیره و اجرا کنید تا خروجی زیر را ببینید:
.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
کواکترین فاکتور مشترک بین اعداد 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 برنامهنویسی شیءگرا :کالسها ،وراثت و چندریختی
namespace p15
{
class Program
{
static void Main(string[] args)
{
میدهد(در این برنامه تعداد مربعها و اضالع برنامهای که مجموع مساحتها و محیطهای چند مربع را نمای.61
.)آنها بهصورت تصادفی تولید میگردند
مراحل طراحی و اجرا
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فصل پنجم
.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;
}
}
میدهد .این .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 وراثت و چندریختی، کالسها:برنامهنویسی شیءگرا
{
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برنامهای که شعاع بزرگ ) طولی) و شعاع کوچک (عرضی) بیضی را دریافت کرده ،مساحت بیضی را با فرمول
زیر محاسبه میکند:
}
}
کالس ،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پروژه را ذخیره و اجرا کنید و خروجی را به شکل زیر ببینید:
;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 برنامهنویسی شیءگرا :کالسها ،وراثت و چندریختی
.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 وراثت و چندریختی، کالسها:برنامهنویسی شیءگرا
;))(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
}
}
}
این دستورات ،ابتدا حلقه تکرار بینهایت ) 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 فایلها
.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);
}
اطالعات فایل اول را برعکس (از آخرین خط، برنامه ای که نام دو فایل متنی را از ورودی خوانده.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
کلمات در فایل با. تعداد کلمات آن را شمارش میکند، برنامهای که نام فایل متنی را خوانده.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
در هنگام کپی. برنامه ای که نام دو فایل را خوانده و فایل اولی را در فایل دومی کپی میکند.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 وررنه در بایت،میدهد
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 فایلها
.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) + " ");
}
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.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را خوانده 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)
.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 فایلها
در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
برنامهای که نام سه فایل را از کاربر میخواند و خطوط فایلهای اول و دوم را یک دو میان در.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
سپس دو عدد را میخواند و اطالعات فایل اول را در فایل دوم، برنامهای که نام دو فایل را خوانده.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
، تعداد فضای سفید، تعداد حروف بزرگ، تعداد حروف کوچک، برنامه ای که نام فایلی را خوانده.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فصل ششم
برنامهای که نام فایلی را خوانده ،حرف اول ،وسط و آخر هر سطر را نمایش میدهد. .46
;using System
;using System.IO
namespace p46
{
class Program
{
)static void Main(string[] args
{
;)" Console.Write("Enter name of file:
444 فایلها
. کاراکتر ابتدای فایلها را نمایش میدهد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
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();
}
}
}
، سپس بزه خزط بعزد مزیرود، چهار بار بوق کامپیوتر را به صدا در میآورد، را نمایش داده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
. (یک) قرار میدهد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;
(عدد جدید پد از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
مساحت، قاعده بارگ و ارتفا یک ذوزنقه خوانده، برنامهای که سه عدد را به عنوا قاعده کوچک.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();
}
}
}
;)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 mx 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
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();
}
}
}
{
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();
}
}
}
مشزابه، برنامه ای که همه حروف الفبای انگلیسی را به ترتیب چاپ میکند بهطوریکه هر حرف بارگ.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 24 38
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
: جمله سری زیر را چاپ میکند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
x!n!x n ! i1 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
nn
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
(عدد یک بعد از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(" ");
}
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 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
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 الکترونیکی
:(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 الکترونیکی
:(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("*");
}
}
}
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());
(شدمارنده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());
خروجی نظیر زیر را،( را از ورودی خوانده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(" ");
}
.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;
.) را شمارش میکند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);
(حدروف الفبدای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
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());
(اعزداد. تولید کرد را نمایش میدهد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
{
.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
' را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
' را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++)
{
' را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++)
{
' را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++)
{
' راW' کزاراکتر، '*' با استفاده از حلقه تکرار تودرتزو و کزاراکتر، برنامه ای که تعداد سطر را خوانده.225
.نمایش میدهد
using System;
namespace p225
{
class Program
{
static void Main(string[] args)
{
پیوست 490
' را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++)
{
}
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++)
{
.' را نمایش میدهد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++)
{
فصل
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 الکترونیکی
}
}
}
}
444 الکترونیکی
Cosx 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();
}
}
}
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();
}
}
}
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 الکترونیکی
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
nn 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! 1n 1 n 2! 2n 2 0!nn 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 n2 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 1n 2n 3 n 2n 3n 4
nn 1n 2
n n n n 1n n 2
using System;
namespace p98
{
class Program
{
static double seri(int n)
{
double sum = 0;
for (int i = 1; i <= n; i++)
{
پیوست 444
: نمایش میدهد، را خوانده و توسط متدهای حاصل سری زیر را محاسبه کردهn وx برنامهای که.66
nx1 nn 1x 2 n! x n
1
1! 2! n!
: را خوانده و با استفاده از متدی حاصل سری زیر را محاسبه کرده و نمایش میدهدn برنامهای که.011
1
1
1
11
1
nجمله 1
11
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;
}
باشزد را نمزایش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;
}
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() متد
.میکند و برمیگرداند
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”
.27برنامهای که تعدادی نام را دریافت کرده ،سپس یک نام جدید را میخواند و تعیین میکند که آیا این نام در
لیست نامهای دریافتی وجود دارد یا خیر؟
متد )( ،mainابتدا متغیرهای 01( listنام ورودی را نگهداری میکند) name ،و cرا تعریف کرده ،با استفاده از
یک حلقه 01 ،نام را خوانده ،در عناصر listقرار میدهد .سپس یک نام جدید را میخواند ،در nameقرار میدهد.
در ادامه ،با حلقهای با شمارنده iهر یک از نامهای لیست را پیمایش میکند و با حلقه داخلی jتعداد کاراکترهای
متناظر هر نام در لیست کاراکترهای متناظر nameرا میشمارد .اگر مقدار این کاراکترها (یعنی )cبرابر با طول
nameباشد ،حلقه خاتمه میدهد .در پایا حلقه ،اگر cبرابر طول nameباشد ،عبارت “نام لیست را پیداشده” را
نمایش میدهد ،وگرنه پیغام “نام در لیست پیدا نشد” را خواهد داد.
;using System
namespace p83
{
class Program
{
)static void Main(string[] args
{
;string s
;)" Console.Write("Enter a string:
;)(s= Console.ReadLine
.( ایجززاد مززیکنززد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++;
}
}
. نمایش مزیدهزد، کاراکتری از رشته که بیشترین کد اسکی را دارد، برنامه ای که رشتهای را خوانده.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];
}
}
Console.WriteLine();
}
}
else
{
Console.WriteLine("The given matrix is not
Symmetric matrix.");
}
Console.ReadKey();
}
}
}
(ترانهاده ماتریB ،) (ماتری ورودیA ،) (تعداد سطرها و ستونهای ماتریSIZE در این برنامه
(شدددمارندهای بدددرای پیمدددای سدددتونهدددا) وcol ،) (شدددمارندهای بدددرای پیمدددای سدددطرهاrow ،)A
.)؟) را داریم0( ) یا نه1( (آیا متقارن استisSymmetric
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;
بزرای. تبدیل میکند و نمزایش مزیدهزد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 الکترونیکی
را خوانززد و مقززدار مززاکایمم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();
}
}
}
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
}
}
}
را میخواند و ماکایمم عبارت زیر را نمزایشz وy ،x سپس سه عدد، برنامهای که آرایهای را خوانده.002
:.میدهد
maxx ai y a j z ak
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
دو عنصری را مییابد که حاصل جمع آ ها نادیکترین عزدد بزه، برنامه ای که یک آرایه را خوانده.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();
}
}
}
.باشزد arr j arri را پیدا میکند بهطوریکزه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;
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--;
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;
}
}
}
سپس یزک عزدد را خوانزده و آرایزه. مقداردهی اولیه میکند، برنامهای که آرایهای را تعریف کرده.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 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;
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پروژه را ذخیره و اجرا کنید تا خروجی زیر را ببینید:
.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
{
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پروژه را ذخیره و اجرا کنید تا خروجی زیر را ببینید:
}
}
}
از کدالدهدای، چدون. تمام متدها با نام کالد دراخوانی شددهاندد،همانطور که در این دستورات میبینید
. نمیتوان نمونهای ایعاد نمودstatic
: پروژه را ذخیره و اجرا کنید تا خروجی را به ش ل زیر مشاهده نمایید.7
;)(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 الکترونیکی
.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
;)(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 دانلود کتاب حل مسائل