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

التحدي الخامس التمرين الرابع

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

	  Enter an odd number as the number of lines: 9
	  *****
	  *   *
	  *   *
	  *   *
	  *********
	  *   *
	  *   *
	  *   *
	  *****
	


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

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

n = 0

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

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

    if i <= n / 2:
        print('*', end='')

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

        print('*', end='')

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

    else:
        print(' ' * int(n / 2), end='')
        print('*', end='')

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

        print('*', end='')

    print()
		

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

n = 0

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

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

    if i <= n / 2:
        print('*', end='')

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

        print('*', end='')

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

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

        print('*', end='')

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

        print('*', end='')

    print()
		

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

Enter an odd number as the number of lines: 9
*****
*   *
*   *
*   *
*********
    *   *
    *   *
    *   *
    *****
		

ملاحظة

الشكل الذي يظهر لك في النتيجة النهائية مطابق تماماً للشكل المطلوب و لكنه لا يظهر مشابهاً له 100% بسبب الهامش الإفتراضي الذي يقوم الحاسوب بوضعه بين الأسطر.

للتأكد من النتيجة بشكل دقيق, قم بعد عدد النجوم و المسافات الفارغة الموجودة في كل سطر.

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

	  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 an odd number as the number of lines: ");
	  n = input.nextInt();
	  }
	  while (n <= 0 || n % 2 == 0);

	  for (int i = 1; i <= n; i++)
	  {
	  if (i <= n / 2)
	  {
	  System.out.print("*");

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

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

	  System.out.print("*");

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

	  System.out.print("*");
	  }
	  System.out.println();
	  }

	  }

	  }
	

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

	  Enter an odd number as the number of lines: 9
	  *****
	  *   *
	  *   *
	  *   *
	  *********
	  *   *
	  *   *
	  *   *
	  *****
	

ملاحظة

الشكل الذي يظهر لك في النتيجة النهائية مطابق تماماً للشكل المطلوب و لكنه لا يظهر مشابهاً له 100% بسبب الهامش الإفتراضي الذي يقوم الحاسوب بوضعه بين الأسطر.

للتأكد من النتيجة بشكل دقيق, قم بعد عدد النجوم و المسافات الفارغة الموجودة في كل سطر.

الحل بلغة C

	  #include <stdio.h>

	  void main() {

	  int n;

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

	  for (int i = 1; i <= n; i++)
	  {
	  if (i <= n / 2)
	  {                
	  printf("*");

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

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

	  printf("*");

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

	  printf("*");
	  }

	  printf("\n");
	  }

	  }
	

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

	  Enter an odd number as the number of lines: 9
	  *****
	  *   *
	  *   *
	  *   *
	  *********
	  *   *
	  *   *
	  *   *
	  *****
	

ملاحظة

الشكل الذي يظهر لك في النتيجة النهائية مطابق تماماً للشكل المطلوب و لكنه لا يظهر مشابهاً له 100% بسبب الهامش الإفتراضي الذي يقوم الحاسوب بوضعه بين الأسطر.

للتأكد من النتيجة بشكل دقيق, قم بعد عدد النجوم و المسافات الفارغة الموجودة في كل سطر.

الحل بلغة C#

	  using System;

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

	  do
	  {
	  Console.Write("Enter an odd number as 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)
	  {
	  Console.Write("*");

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

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

	  Console.Write("*");

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

	  Console.Write("*");
	  }
	  Console.WriteLine();
	  }

	  Console.ReadKey();
	  }
	  }
	

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

	  Enter an odd number as the number of lines: 9
	  *****
	  *   *
	  *   *
	  *   *
	  *********
	  *   *
	  *   *
	  *   *
	  *****
	

ملاحظة

الشكل الذي يظهر لك في النتيجة النهائية مطابق تماماً للشكل المطلوب و لكنه لا يظهر مشابهاً له 100% بسبب الهامش الإفتراضي الذي يقوم الحاسوب بوضعه بين الأسطر.

للتأكد من النتيجة بشكل دقيق, قم بعد عدد النجوم و المسافات الفارغة الموجودة في كل سطر.

الحل بلغة C++

	  #include <iostream>

	  int main() {

	  int n;

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

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

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

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

	  std::cout << "*";

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

	  std::cout << "*";
	  }

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

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

	  }
	

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

	  Enter an odd number as the number of lines: 9
	  *****
	  *   *
	  *   *
	  *   *
	  *********
	  *   *
	  *   *
	  *   *
	  *****
	

ملاحظة

الشكل الذي يظهر لك في النتيجة النهائية مطابق تماماً للشكل المطلوب و لكنه لا يظهر مشابهاً له 100% بسبب الهامش الإفتراضي الذي يقوم الحاسوب بوضعه بين الأسطر.

للتأكد من النتيجة بشكل دقيق, قم بعد عدد النجوم و المسافات الفارغة الموجودة في كل سطر.

تعليقات