تمارين خوارزميات و هياكل البيانات - رسم أشكال هندسية - التحدي الثاني التمرين الخامس

التمرين الخامس

أكتب برنامج مهمته رسم الشكل التالي بواسطة الحلقات.
عند تشغيل البرنامج, يجب أن يطلب من المستخدم إدخال عدد أسطر الشكل الذي سيتم رسمه.
إنتبه: يجب أن يدخل المستخدم عدد مفرد و أكبر من صفر, لأن عدد الأسطر لا يمكن أن يكون مزدوجاً أو قيمته تساوي صفر أو أقل من صفر.


					*
					**
					***
					**
					*
				  


الحل بلغة بايثون

الطريقة الأولى لحل التمرين.

n = 0

while n <= 0 or n % 2 == 0:
    n = int(input("Enter the number of lines: "))

for i in range(1, n + 1):

    if i <= n / 2:
        print(' ' * (int(n / 2) - i + 1), end='')
        print('*' * i, end='')

    else:
        print(' ' * (i - int(n / 2) - 1), end='')
        print('*' * (n - i + 1), end='')

    print()
		

الطريقة الثانية لحل التمرين و الحصول على نفس النتيجة.

n = 0

while n <= 0 or n % 2 == 0:
    n = int(input("Enter the number of lines: "))

for i in range(1, n+1):

    if i <= n / 2:
        for k in range(1, int(n / 2) - i + 2):
            print(' ', end='')
        for j in range(1, i + 1):
            print('*', end='')

    else:
        for k in range(1, i - int(n / 2)):
            print(' ', end='')
        for j in range(1, n - i + 2):
            print('*', end='')

    print()
		

الطريقة الثالثة لحل التمرين و الحصول على نفس النتيجة.

n = 0

while n <= 0 or n % 2 == 0:
    n = int(input("Enter the number of lines: "))

i = 1
while i <= n:

    if i <= n / 2:

        k = 1
        while k < int(n / 2) - i + 2:
            print(' ', end='')
            k += 1

        j = 1
        while j <= i:
            print('*', end='')
            j += 1

    else:

        k = 1
        while k < i - int(n / 2):
            print(' ', end='')
            k += 1

        j = 1
        while j <= n - i + 1:
            print('*', end='')
            j += 1

    print()
    i += 1
		

الطريقة الرابعة لحل التمرين و الحصول على نفس النتيجة.

n = 0

while n <= 0 or n % 2 == 0:
    n = int(input("Enter the number of lines: "))

for i in range(1, int(n / 2) + 2):
    print(' ' * (int(n / 2) - i + 1), end='')
    print('*' * i, end='')
    print()

for i in range(1, int(n / 2) + 1):
    print(' ' * i, end='')
    print('*' * (int(n/2) + 1 - i), end='')
    print()
		

الطريقة الخامسة لحل التمرين و الحصول على نفس النتيجة.

n = 0

while n <= 0 or n % 2 == 0:
    n = int(input("Enter the number of lines: "))

for i in range(1, int(n / 2) + 2):

    for k in range(1, int(n / 2) - i + 2):
        print(' ', end='')

    for j in range(1, i + 1):
        print('*', end='')

    print()

for i in range(1, int(n / 2) + 1):

    for k in range(1, i + 1):
        print(' ', end='')

    for j in range(1, int(n / 2) + 2 - i):
        print('*', end='')

    print()
		

الطريقة السادسة لحل التمرين و الحصول على نفس النتيجة.

n = 0

while n <= 0 or n % 2 == 0:
    n = int(input("Enter the number of lines: "))

i = 1
while i <= int(n / 2) + 1:

    k = 1
    while k <= int(n / 2) - i + 1:
        print(' ', end='')
        k += 1

    j = 1
    while j <= i:
        print('*', end='')
        j += 1

    print()
    i += 1

i = 1
while i <= int(n / 2):

    k = 1
    while k <= i:
        print(' ', end='')
        k += 1

    j = 1
    while j <= int(n / 2) + 1 - i:
        print('*', end='')
        j +=1

    print()
    i += 1
		

سنحصل على النتيجة التالية إذا قام المستخدم بإدخال الرقم 5 عند التشغيل.

Enter the number of lines: 5
  *
 **
***
 **
  *
		

الحل بلغة جافا

الطريقة الأولى لحل التمرين.

					import java.util.Scanner;

					public class Main {

					public static void main(String[] args) {

					Scanner input = new Scanner(System.in);
					int n;

					do {
					System.out.print("Enter the number of lines: ");
					n = input.nextInt();
					}
					while( n<=0 || n%2==0 );

					for (int i=1; i<=n; i++)
					{
					if(i<=n/2)
					{
					for (int k=1; k<(n/2)-i+2; k++)
					{
                    System.out.print(" ");
					}
					for (int j=1; j<=i; j++)
					{
                    System.out.print("*");
					}
					}
					else
					{
					for (int k=1; k<i-(n/2); k++)
					{
                    System.out.print(" ");
					}
					for (int j=1; j<n-i+2; j++)
					{
                    System.out.print("*");
					}
					}
					System.out.println();
					}

					}

					}
				  

الطريقة الثانية لحل التمرين و الحصول على نفس النتيجة.

					import java.util.Scanner;

					public class Main {

					public static void main(String[] args) {

					Scanner input = new Scanner(System.in);
					int n;

					do {
					System.out.print("Enter the number of lines: ");
					n = input.nextInt();
					}
					while( n<=0 || n%2==0 );

					for (int i=1; i<(n/2)+2; i++)
					{
					for (int k=1; k<(n/2)-i+2; k++) {
					System.out.print(" ");
					}
					for (int j=1; j<=i; j++) {
					System.out.print("*");
					}
					System.out.println();
					}

					for (int i=1; i<=n/2; i++)
					{
					for (int k=1; k<=i; k++)
					{
					System.out.print(" ");
					}
					for (int j=1; j<(n/2)+2-i; j++)
					{
					System.out.print("*");
					}
					System.out.println();
					}

					}

					}
				  

سنحصل على النتيجة التالية إذا قام المستخدم بإدخال الرقم 5 عند التشغيل.

					Enter the number of lines: 5
					*
					**
					***
					**
					*
				  

الحل بلغة C

الطريقة الأولى لحل التمرين.

					  #include<stdio.h>

					  void main() {

					  int n;

					  do {
					  printf("Enter the number of lines: ");
					  scanf("%d", &n);
					  }
					  while( n<=0 || n%2==0 );

					  for( int i=1; i<=n; i++ )
					  {
					  if( i<=n/2 )
					  {
					  for (int k=1; k<(n/2)-i+2; k++)
					  {
					  printf(" ");
					  }
					  for (int j=1; j<=i; j++)
					  {
					  printf("*");
					  }
					  }
					  else
					  {
					  for (int k=1; k<i-(n/2); k++)
					  {
					  printf(" ");
					  }
					  for (int j=1; j<n-i+2; j++)
					  {
					  printf("*");
					  }
					  }
					  printf("\n");
					  }

					  }
					

الطريقة الثانية لحل التمرين و الحصول على نفس النتيجة.

					  #include<stdio.h>

					  void main() {

					  int n;

					  do {
					  printf("Enter the number of lines: ");
					  scanf("%d", &n);
					  }
					  while( n<=0 || n%2==0 );

					  for (int i=1; i<(n/2)+2; i++)
					  {
					  for (int k=1; k<(n/2)-i+2; k++)
					  {
					  printf(" ");
					  }
					  for (int j=1; j<=i; j++)
					  {
					  printf("*");
					  }
					  printf("\n");
					  }

					  for (int i=1; i<=n/2; i++)
					  {
					  for (int k=1; k<=i; k++)
					  {
					  printf(" ");
					  }
					  for (int j=1; j<(n/2)+2-i; j++)
					  {
					  printf("*");
					  }
					  printf("\n");    
					  }

					  }
					

سنحصل على النتيجة التالية إذا قام المستخدم بإدخال الرقم 5 عند التشغيل.

					  Enter the number of lines: 5
					  *
					  **
					  ***
					  **
					  *
					

الحل بلغة C#

الطريقة الأولى لحل التمرين.

						using System;

						class Program
						{
						static void Main(string[] args)
						{
						int n;

						do
						{
						Console.Write("Enter the number of lines: ");
						n = int.Parse(Console.ReadLine());
						}
						while (n <= 0 || n % 2 == 0);

						for (int i = 1; i <= n; i++)
						{
						if (i <= n / 2)
						{
						for (int k = 1; k < (n / 2) - i + 2; k++)
						{
						Console.Write(" ");
						}
						for (int j = 1; j <= i; j++)
						{
						Console.Write("*");
						}
						}
						else
						{
						for (int k = 1; k < i - (n / 2); k++)
						{
						Console.Write(" ");
						}
						for (int j = 1; j < n - i + 2; j++)
						{
						Console.Write("*");
						}
						}

						Console.WriteLine();
						}

						Console.ReadKey();
						}
						}
					  

الطريقة الثانية لحل التمرين و الحصول على نفس النتيجة.

						using System;

						class Program
						{
						static void Main(string[] args)
						{
						int n;

						do
						{
						Console.Write("Enter the number of lines: ");
						n = int.Parse(Console.ReadLine());
						}
						while (n <= 0 || n % 2 == 0);

						for (int i = 1; i < (n / 2) + 2; i++)
						{
						for (int k = 1; k < (n / 2) - i + 2; k++)
						{
						Console.Write(" ");
						}
						for (int j = 1; j <= i; j++)
						{
						Console.Write("*");
						}
						Console.WriteLine();
						}

						for (int i = 1; i <= n / 2; i++)
						{
						for (int k = 1; k <= i; k++)
						{
						Console.Write(" ");
						}
						for (int j = 1; j < (n / 2) + 2 - i; j++)
						{
						Console.Write("*");
						}
						Console.WriteLine();
						}

						Console.ReadKey();
						}
						}
					  

سنحصل على النتيجة التالية إذا قام المستخدم بإدخال الرقم 5 عند التشغيل.

						Enter the number of lines: 5
						*
						**
						***
						**
						*
					  

الحل بلغة C++

الطريقة الأولى لحل التمرين.

						  #include <iostream>

						  int main() {

						  int n;

						  do
						  {
						  std::cout << "Enter the number of lines: ";
						  std::cin >> n;
						  }
						  while (n <= 0 || n % 2 == 0);

						  for (int i = 1; i <= n; i++)
						  {
						  if (i <= n / 2)
						  {
						  for (int k = 1; k < (n / 2) - i + 2; k++)
						  {
						  std::cout << " ";
						  }
						  for (int j = 1; j <= i; j++)
						  {
						  std::cout << "*";
						  }
						  }
						  else
						  {
						  for (int k = 1; k < i - (n / 2); k++)
						  {
						  std::cout << " ";
						  }
						  for (int j = 1; j < n - i + 2; j++)
						  {
						  std::cout << "*";
						  }
						  }

						  std::cout << "\n";
						  }

						  char end; std::cin >> end;
						  return 0;

						  }
						

الطريقة الثانية لحل التمرين و الحصول على نفس النتيجة.

						  #include <iostream>

						  int main() {

						  int n;

						  do
						  {
						  std::cout << "Enter the number of lines: ";
						  std::cin >> n;
						  } while (n <= 0 || n % 2 == 0);

						  for (int i = 1; i < (n / 2) + 2; i++)
						  {
						  for (int k = 1; k < (n / 2) - i + 2; k++)
						  {
						  std::cout << " ";
						  }
						  for (int j = 1; j <= i; j++)
						  {
						  std::cout << "*";
						  }
						  std::cout << "\n";
						  }

						  for (int i = 1; i <= n / 2; i++)
						  {
						  for (int k = 1; k <= i; k++)
						  {
						  std::cout << " ";
						  }
						  for (int j = 1; j < (n / 2) + 2 - i; j++)
						  {
						  std::cout << "*";
						  }
						  std::cout << "\n";
						  }

						  char end; std::cin >> end;
						  return 0;

						  }
						

سنحصل على النتيجة التالية إذا قام المستخدم بإدخال الرقم 5 عند التشغيل.

						  Enter the number of lines: 5
						  *
						  **
						  ***
						  **
						  *