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

التمرين الرابع

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

					Enter the number of lines: 10
					**********
					*        *
					*        *
					*        *
					*        *
					*        *
					*        *
					*        *
					*        *
					**********
				  


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

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

n = 0
while n <= 0:
    n = int(input("Enter square side length: "))

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

    if i == 1 or i == n:
        print('*' * n)

	else:
        print("*", end='')
        print(' ' * (n - 2), end='')
        print("*")
		

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

n = 0
while n <= 0:
    n = int(input("Enter square side length: "))

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

    if i == 1 or i == n:
        for j in range(1, n+1):
            print('*', end='')
        print()
        
    else:
        print("*", end='')
        for k in range(1, n-1):
            print(' ', end='')
        print("*")
		

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

n = 0
while n <= 0:
    n = int(input("Enter square side length: "))

i = 1
while i <= n:

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

    else:
        print("*", end='')
        k = 1
        while k < n - 1:
            print(' ', end='')
            k += 1
        print("*")

    i += 1
		

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

Enter the number of lines: 10
**********
*        *
*        *
*        *
*        *
*        *
*        *
*        *
*        *
**********
		

ملاحظة

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

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

					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 square side length: ");
					n = input.nextInt();
					}
					while (n <= 0);

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

					}

					}
				  

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

					Enter the number of lines: 10
					**********
					*        *
					*        *
					*        *
					*        *
					*        *
					*        *
					*        *
					*        *
					**********
				  

الحل بلغة C

					#include<stdio.h>

					void main() {

					int n;

					do {
					printf("Enter square side length: ");
					scanf("%d", &n);
					}
					while( n<=0 );

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

					}
				  

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

					Enter the number of lines: 10
					**********
					*        *
					*        *
					*        *
					*        *
					*        *
					*        *
					*        *
					*        *
					**********
				  

الحل بلغة C#

					using System;

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

					do
					{
					Console.Write("Enter square side length: ");
					n = int.Parse(Console.ReadLine());
					}
					while (n <= 0);

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

					Console.ReadKey();
					}
					}
				  

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

					Enter the number of lines: 10
					**********
					*        *
					*        *
					*        *
					*        *
					*        *
					*        *
					*        *
					*        *
					**********
				  

الحل بلغة C++

					#include <iostream>

					int main() {

					int n;

					do {
					std::cout << "Enter square side length: ";
					std::cin >> n;
					}
					while (n <= 0);

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

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

					}
				  

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

					Enter the number of lines: 10
					**********
					*        *
					*        *
					*        *
					*        *
					*        *
					*        *
					*        *
					*        *
					**********