You are on page 1of 14

‫الفرل الدابع‪ :‬تمارين ومدائل لممناقذة والحل‬ ‫مقرر البرمجة (‪)1‬‬

‫البرمجة ( ‪) 1‬‬
‫الفصل السابع‪ :‬تمارين ومسائل للمناقشة‬
‫والحل‬

‫‪-0-‬‬
‫الفرل الدابع‪ :‬تمارين ومدائل لممناقذة والحل‬ ‫مقرر البرمجة (‪)1‬‬

‫رقم الرفحة‬ ‫العنهان‬


‫‪2‬‬ ‫تمارين ومدائل للمناقذة والحل‬
‫‪2‬‬ ‫التمرين األول‬
‫‪5‬‬ ‫التمرين الثاني‬
‫‪6‬‬ ‫التمرين الثالث‬
‫‪7‬‬ ‫التمرين الرابع‬
‫‪8‬‬ ‫التمرين الخامس‬
‫‪01‬‬ ‫التمرين الدادس‬
‫‪01‬‬ ‫التمرين الدابع‬
‫‪02‬‬ ‫التمرين الثامن‬

‫‪-1-‬‬
‫الفرل الدابع‪ :‬تمارين ومدائل لممناقذة والحل‬ ‫مقرر البرمجة (‪)1‬‬

‫ملخص‪:‬‬
‫ييدف ىذا القدم إلى تقديم مجمهعة من التمارين والمدائل حهل مجمهعة من الخهارزميات األساسية التيي‬
‫ينبغي فيميا وحميا وتطبيقيا بمغة ‪.C#‬‬

‫أهداف تعليمية‪:‬‬
‫فييي ىييذا الفرييل مييع مجمهعيية ميين التمييارين التطبيقييية التييي ترمييز عمييى مييا تعممييو ي ل‬ ‫يتعامييل الطال ي‬
‫الفرهل الدابقة من المادة‪.‬‬

‫‪-2-‬‬
‫ تمارين ومدائل لممناقذة والحل‬:‫الفرل الدابع‬ )1( ‫مقرر البرمجة‬

‫تمارين ومدائل للمناقذة والحل‬


:‫التمرين األول‬
‫ برنامجاً لحداب القاسيم المذيترا األع يم لعيددين ييحيحين ييدياويان الريفر ( هارزميية‬C# ‫بمغة‬ ‫اكت‬
.)‫إقميدس‬
.)‫ مدتخدماً بنية التابع (الطريقة‬C# ‫بمغة الخهارزميات قبل المباشرة بكتابة البرنامج بمغة‬ ‫اكت‬
.)‫ استخدام هارزمية إسناد (قيمة باقي القدمة األكبر عمى األيغر) إلى (العدد األكبر‬:1 ‫الحل‬

using System;
namespace Excersise
{
class ApplicationEuclide
{
static void Main(string[] args)
{
Console.Write("First Number : ");
int p = Int32.Parse(Console.ReadLine());

Console.Write("Second Number : ");


int q = Int32.Parse(System.Console.ReadLine());

if (p * q != 0)
Console.WriteLine("mgcd of " + p + " and " + q + " = " + mgcd(p, q));
else
Console.WriteLine("One of the numbers is null !");
}

static int mgcd(int a, int b)


{
int r;

while ((a != 0) && (b != 0))


{
if (a > b)
a = a % b;
else

-3-
‫ تمارين ومدائل لممناقذة والحل‬:‫الفرل الدابع‬ )1( ‫مقرر البرمجة‬

b = b % a;
};
r = (a != 0) ? a : b;
return r;
}
}
}

)‫ استخدام هارزمية إسناد (قيمة حايل طرح األيغر من األكبر) إلى (العدد األكبر‬:2 ‫الحل‬

using System;
namespace Exercice1
{
class ApplicationEgyptien
{
static void Main (string[ ] args)
{
Console.Write("First Number : ");
int p = Int32.Parse( Console.ReadLine( ) ) ;
Console.Write("Second Number : ");
int q = Int32.Parse( Console.ReadLine( ) ) ;

if ( p*q != 0 )
System.Console.WriteLine("mgcd of "+p+" and "+q+" is "+mgcd(p,q));
else
Console.WriteLine("One of the numbers is null !");
}

static int mgcd (int p, int q)


{
while ( p != q)
{
if (p > q) p -= q;
else q -= p;
}
return p;
}
}

-4-
‫ تمارين ومدائل لممناقذة والحل‬:‫الفرل الدابع‬ )1( ‫مقرر البرمجة‬

:‫التمرين الثاني‬
‫ اقت ييرح‬.‫ ع ييدد ول ييي م يين مجمهع يية األع ييداد الر ييحيحة المه ب يية‬n ‫ برنامجي ياً ر ي ييار ول‬C# ‫بمغ يية‬ ‫اكتي ي‬
.C# ‫ واكتبيا بمغة الخهارزميات قبل المباشرة بكتابة البرنامج بمغة‬،‫الخهارزمية المناسبة لتنفيذ العمل‬
:‫الحل‬

using System;
namespace Exercice2
{
class ApplicationPrem
{
static void Main(string[ ] args)
{
int divis, nbr, n, count = 0 ;
bool is_prem;

Console.Write("How much numbers to Display ? ");


n = Int32.Parse( Console.ReadLine( ) ) ;

Console.WriteLine( 2 );
nbr = 3;
while (count < n-1)
{
divis = 2 ;
is_prem = true;
do
{
if (nbr % divis == 0) is_prem=false;
else divis = divis+1 ;
}
while ((divis <= nbr/2) && (is_prem == true));
if (is_prem)
{
count++;

-5-
‫الفرل الدابع‪ :‬تمارين ومدائل لممناقذة والحل‬ ‫مقرر البرمجة (‪)1‬‬

‫;) ‪Console.WriteLine( nbr‬‬


‫}‬
‫; ‪nbr++‬‬
‫}‬
‫}‬
‫}‬
‫}‬

‫التمرين الثالث‪:‬‬
‫بمغيية ‪ C#‬برنامج ياً لمتحق ي ميين ن سمدييمة محييارف تمتمييظ يييفة التنييا ر ‪ ،PALINDROME‬ي‬ ‫اكت ي‬
‫نيا تبقى نفديا سهاء قرناىا من اليمين إلى اليدار و من اليدار إلى اليمين‪.‬‬
‫مثال‪acca ،abcddcba :‬‬
‫اقترح الخهارزمية المناسبة لتنفيذ العمل‪ ،‬واكتبيا بمغة الخهارزميات قبل المباشرة بكتابة البرنامج بمغة ‪.C#‬‬
‫الحل‪:‬‬

‫;‪using System‬‬
‫‪namespace Excersise‬‬
‫{‬
‫‪class palindrome‬‬
‫{‬
‫)‪static String inverse(string s‬‬
‫{‬
‫; ;"" = ‪string r‬‬
‫;‪int L = s.Length‬‬
‫)‪for (int i = 0; i <= L - 1; i++‬‬
‫;]‪r = r + s[L - 1 - i‬‬
‫;‪return r‬‬
‫}‬

‫{ )‪public static void Main(String[] args‬‬


‫; ‪string s‬‬

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

‫‪-6-‬‬
‫ تمارين ومدائل لممناقذة والحل‬:‫الفرل الدابع‬ )1( ‫مقرر البرمجة‬

s = Console.ReadLine();

string invs = inverse(s);

Console.WriteLine("Your string : "+s);


Console.WriteLine("Invers string : "+invs);

if (s==invs)
Console.WriteLine("palindrome !");
else
Console.WriteLine("Not palindrome !");
}
}
}

:‫التمرين الرابع‬
:‫ مثال‬.‫ مل عدد يكهن مداوياً لحايل مع مكعبات األرقام التي تؤلفو‬،Armstrong ‫ندعه عدد‬
.153  13  53  33  1  125  27
‫ اقتي ييرح‬.‫ لتحديي ييدىا‬C# ‫برني ييامج بمغي يية‬ ‫ اكت ي ي‬،‫ ومميي ييا مي يين مرتبي يية المني ييات‬Armstrong ‫ىني يياا عي ييدة عي ييداد‬
.C# ‫ واكتبيا بمغة الخهارزميات قبل المباشرة بكتابة البرنامج بمغة‬،‫الخهارزمية المناسبة لتنفيذ العمل‬
:‫الحل‬

using System;
namespace Armestrong
{
class ApplicationArmstrong
{
static void Main(string[] args)
{
int i, j, k, n, sumcube;
Console.WriteLine("Number of Armstrong:");

-7-
‫الفرل الدابع‪ :‬تمارين ومدائل لممناقذة والحل‬ ‫مقرر البرمجة (‪)1‬‬

‫)‪for (i = 1; i <= 9; i++‬‬


‫)‪for (j = 0; j <= 9; j++‬‬
‫)‪for (k = 0; k <= 9; k++‬‬
‫{‬
‫;‪n = 100 * i + 10 * j + k‬‬
‫;‪sumcube = i*i*i + j*j*j + k*k*k‬‬

‫)‪if (sumcube == n‬‬


‫;)‪Console.WriteLine(n‬‬
‫}‬
‫}‬
‫}‬
‫}‬

‫التمرين الخامس‪:‬‬
‫بمغيية ‪ C#‬برنامجياً يقييهم بعممييية بحييث طييي تدمدييمي عيين عنريير ‪ x‬ضييمن ييدول ‪ T‬مؤلييم ميين ‪n‬‬ ‫اكتي‬
‫عنرر ويعطي ترتيبو في حال و هده‪ .‬اقترح الخهارزمية المناسبة لتنفيذ العمل‪ ،‬واكتبيا بمغية الخهارزمييات‬
‫قبل المباشرة بكتابة البرنامج بمغة ‪.C#‬‬
‫تطبيقيا مبرنامج‪.‬‬ ‫الحل‪ :‬سنقترح ىنا الخهارزمية فقط بمغة الخهارزميات ونترا لمطال‬

‫;‪i 1‬‬

‫‪while (i < n) and (T[i] <> x) do‬‬


‫;‪i i+1‬‬
‫‪end_while‬‬

‫‪if T[i] = x then‬‬


‫;‪ordi‬‬
‫;)‪write(“the element exists, order:”,ord‬‬
‫‪else‬‬
‫)”‪write(“element not found‬‬
‫‪end_if‬‬

‫‪-8-‬‬
‫ تمارين ومدائل لممناقذة والحل‬:‫الفرل الدابع‬ )1( ‫مقرر البرمجة‬

:‫الحل‬

using System;
namespace ExampleArray
{
class ArrayFind
{
public static void Main(String[] arg)
{
int x; string Sx;
int[] T = { 12, 10, 25, 16, 40, 45, 51, 60, 75, 90, 140, 120 };
int i, ord, N;

N = T.Length;

// Display Table
for ( i = 0; i <= N - 1; i++)
Console.WriteLine("[" + i + "]\t" + T[i]);
// Read x
Console.Write(" choose number of the table: ");
Sx = Console.ReadLine(); x = Int32.Parse(Sx);

// Find x
i = 1;
while ((i < N) && x != T[i])
i = i + 1;

if (i < N)
{
ord = i;
Console.WriteLine("the element exists, order:" + ord);
}
else
Console.WriteLine("element not found");
}
}
}

-9-
‫الفرل الدابع‪ :‬تمارين ومدائل لممناقذة والحل‬ ‫مقرر البرمجة (‪)1‬‬

‫التمرين الدادس‪:‬‬
‫ترتيبياً ترياعدياً ويحتيهي عميى ‪ N‬عنرير‪ ،‬ولييكن ‪ x‬عنرير مين ىيذا الجيدول‪.‬‬ ‫ليكن ليدينا يدول ‪ T‬مرتي‬
‫اشرح ىدف وعمل الخهارزمية التالية‪ ،‬وطبقيا مبرنامج بمغة ‪.C#‬‬

‫;‪Bottom, Middle, Top, Order : Integer‬‬

‫;‪Bottom1‬‬
‫;‪TopN‬‬
‫; ‪Order-1‬‬

‫‪repeat‬‬
‫;‪Middle(Bottom + Top) div 2‬‬
‫‪if x = T[Middle] then‬‬
‫;‪OrderMiddle‬‬
‫‪else‬‬
‫‪if T[Middle] < x then‬‬
‫;‪BottomMiddle + 1‬‬
‫‪else‬‬
‫;‪TopMiddle-1‬‬
‫‪end_if‬‬
‫‪end_if‬‬
‫) ]‪while ( x ≠ T[Middle‬‬

‫‪- 10 -‬‬
‫ تمارين ومدائل لممناقذة والحل‬:‫الفرل الدابع‬ )1( ‫مقرر البرمجة‬

:‫الحل‬

using System;
namespace ExampleArray
{

class ArrayFind
{

public static void Main(String[] arg)


{

int x; string Sx;


int[] T = {12, 18, 25, 30, 40, 45, 51, 60, 75, 90, 100, 120 };
int bottom, middle, top, ordre, N;

N=T.Length;

// Display Table
for (int i = 0; i <= N-1; i++)
Console.WriteLine("["+i+"]\t"+T[i]);

// Read x
Console.Write(" choose number of the table: ");
Sx = Console.ReadLine(); x = Int32.Parse(Sx);

// Find x
ordre = -1; bottom = 1; top = N-1;
do
{
middle = (bottom + top) / 2;
if (x == T[middle])
ordre = middle;
else
if (x > T[middle])
bottom = middle + 1;
else

- 11 -
‫ تمارين ومدائل لممناقذة والحل‬:‫الفرل الدابع‬ )1( ‫مقرر البرمجة‬

top = middle - 1;
}
while (x != T[middle]);

Console.WriteLine("\n ordre (index) of " + x + " = "+ordre);


}
}
}

:‫التمرين الدابع‬
‫هارزمييية‬ ‫التريياعدي و التنييازلي حد ي‬ ‫ رقييم ويرتبيييا بالترتي ي‬n ‫ يقيير ييدويً ميين‬C# ‫برنييامج بمغيية‬ ‫اكت ي‬
.Bubble Sort ‫بالتعهيم‬ ‫الترتيي‬
:C# ‫فيميا وتحهيميا إلى برنامج بمغة‬ ‫الخهارزمية التي يج‬

Algorithm Bubble_Sort;

local: i , j , n, temp: Integer;


Input-Output : Tab : Table of n Integers;

Begin

for i=1 to n Do

for j= 2 to i Do

if Tab[ j-1 ] > Tab[ j ] then


temp=Tab[ j-1 ] ;
Tab[ j-1 ]= Tab[ j ] ;
Tab[ j ] = temp ;
End_if

End_for

End_for

- 12 -
‫الفرل الدابع‪ :‬تمارين ومدائل لممناقذة والحل‬ ‫مقرر البرمجة (‪)1‬‬

‫‪End_Bubble_Sort‬‬

‫التمرين الثامن‪:‬‬
‫هارزمييية‬ ‫التريياعدي و التنييازلي حد ي‬ ‫برنييامج بمغيية ‪ C#‬يقيير ييدويً ميين ‪ n‬رقييم ويرتبيييا بالترتي ي‬ ‫اكت ي‬
‫بالحذر ‪.Sort by Insertion‬‬ ‫الترتيي‬
‫فيميا وتحهيميا إلى برنامج بمغة ‪:C#‬‬ ‫الخهارزمية التي يج‬

‫;‪Algorithm Sort_by_Insertion‬‬

‫;)‪local: i , j , n, v: Integer (positive‬‬


‫;‪Input-Output : Tab : Table of n Integers‬‬

‫‪Begin‬‬

‫‪for i=2 to n do‬‬

‫; ] ‪v = Tab[ i‬‬
‫; ‪j= i‬‬

‫)‪while (Tab[ j-1 ]> v‬‬


‫;] ‪Tab[ j ] = Tab[ j-1‬‬
‫;‪j = j-1‬‬
‫; ‪End_While‬‬

‫; ‪Tab[ j ] = v‬‬

‫‪End_for‬‬

‫‪End_Sort_by_Insertion‬‬

‫‪- 13 -‬‬

You might also like