الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طلب تصحيح كود يُظهر مربعاً من النجوم

مغلقمُجاب
بدأه amratif في 29 نوفمبر 2013 · 9 رد · 1,420 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمه الله  و السلام علي من إتبع الهدي 
انا مبتدئ في تعلم ال(java)  ارجو إلتماس لي عذر اذا كان هذا السؤال يزعج احد  و بعد

هذا ما كتبته و انا احاول ان افعل ذلك التمرين من كتاب (java how to program late object version 8th edition)

النتيجه التي اريد ان اصل إليها ان يطبع البرنامج مربع من الاستركس او النجوم إذا ادخلت رقم 4 من المفترض ان يطبع 

 * * * *

 *      *

 *      *

 * * * *

اما هذا الكود يطبع شئ مثل هذا 

* *  *

 

*

اريد ان اعرف كيف اطبع مربع بالاستركس(*) دون استخدام ال(for loop) , و دون استخدام (logic operations)

Scanner input = new Scanner(System.in) ;
		
		int squareside ;
		System.out.print("Enter the side: ");
		squareside = input.nextInt();
		
		while ( squareside != -1 )
		{
			int xaxis = 0 ;
			while ( xaxis < squareside )
			{
				
				if( xaxis == 0 ) {
					System.out.print(" *") ;
				}
				else if( xaxis == squareside - 1){
					System.out.print(" *") ;
				}
				else
					System.out.print(" ") ;
			
				xaxis ++ ;
				 
			}
			int yaxis = 0 ;
			
			while( yaxis < squareside )
			{
				if
				( yaxis == 0 )
				{ 
					System.out.print(" *");
				}
				else if( yaxis == squareside - 1)
					
				{
					System.out.print(" *");
				
				}
				else
				
					System.out.print(" ");	
				yaxis ++;
				System.out.println();

			}
				
			System.out.print("Enter the side: ");
			squareside = input.nextInt();
		}

تم تعديل هذه المشاركة بواسطة Snack3r في 29 نوفمبر 2013 في 02:46

#2

و عليكم السلام

 

توجد طريقتان للإجابة على سؤالك, الأولى باستخدام الـ loops و الثانية باستخدام الـ recursion. أيهما تريد ؟ :)

#3
Snack3r كتب:

و عليكم السلام

 

توجد طريقتان للإجابة على سؤالك, الأولى باستخدام الـ loops و الثانية باستخدام الـ recursion. أيهما تريد ؟ :)

السلام عليكم اخي 

انا اريد  ال(loop) و التمرين في هذا الباب في الكتاب لم يصل بعد الي ال (logic operations )  مثل ال(And)و ال (OR) لذالك انا ابغي معرفتا بال (while loop)  شكرا

#4

تفضل :

public class Test {

    public static void main(String... args) {
        int n = 4, count = n;
        while (count > 0) {
            if (count == n || count == 1) {
                for (int i = 0; i < n; i++) {
                    System.out.print("*");
                }
                System.out.println();
            } else {
                System.out.print("*");
                for (int i = 0; i < n - 2; i++) {
                    System.out.print(" ");
                }
                System.out.print("*");
                System.out.println();
            }
            count--;
        }
    }
}
1
#5
Snack3r كتب:

 

تفضل :

public class Test {

    public static void main(String... args) {
        int n = 4, count = n;
        while (count > 0) {
            if (count == n || count == 1) {
                for (int i = 0; i < n; i++) {
                    System.out.print("*");
                }
                System.out.println();
            } else {
                System.out.print("*");
                for (int i = 0; i < n - 2; i++) {
                    System.out.print(" ");
                }
                System.out.print("*");
                System.out.println();
            }
            count--;
        }
    }
}

شكرا علي المساعده  علي اي حال لكن :

ذكرت ان اريد ان اعرفها بتلك الطريقه

  <<اريد ان اعرف كيف اطبع مربع بالاستركس(*) دون استخدام ال(for loop) , و دون استخدام (logic operations) مثل (OR) و(AND)  >>

 

تم تعديل هذه المشاركة بواسطة amratif في 30 نوفمبر 2013 في 01:46

#6
اقتباس

اريد ان اعرف كيف اطبع مربع بالاستركس(*) دون استخدام ال(for loop) , و دون استخدام (logic operations) مثل (OR) و(AND)

 

  1. for يُمكنك ببساطة استبدالها بـ while.
  2. إذا كنت لا تريد استخدام المؤثرات المنطقية فاستخدم الـ recursion (ضع محاولتك و سنصحهها لك)

تم تعديل هذه المشاركة بواسطة Snack3r في 30 نوفمبر 2013 في 02:01

1
#7

Scanner input = new Scanner(System.in);

int squreside ;

System.out.print("Enter the size :");

squreside = input.nextInt();

while(squreside != -1 ){

int x_axis = 0;

while (x_axis++ < squreside) {

System.out.print("* ");

}

System.out.println();

x_axis=0 ;

while (x_axis++ < squreside - 2) {

System.out.print("*");

int y_axis = 0;

while (y_axis++ < squreside - 2) {

System.out.print(" ");

}

System.out.println(" *");

}

x_axis= 0;

while (x_axis++ < squreside) {

System.out.print("* ");

}

System.out.print("\nEnter the size :");

squreside = input.nextInt();

}

#8 أفضل إجابة

هذه هو نفسه الكود الموجود في أول مشاركة لك بالأعلى, يعني ما فيه جديد :)

 

لكن لماذا تصر على عدم استخدام الـ logic operations ؟

الكود السابق بدون مؤثرات منطقية و بدون for سيكون هكذا :

public class Test {

    public static void main(String... args) {
        int n = 7, count = n;
        boolean state;
        while (count > 0) {
            state = false;
            if (count == 1) {
                for (int i = 0; i < n; i++) {
                    System.out.print("*");
                }
                System.out.println();
                state = true;
            }

            if (count == n) {
                int tmp = n;
                while (tmp-- != 0) {
                    System.out.print("*");
                }
                System.out.println();
                state = true;
            }

            if (!state) {
                System.out.print("*");
                int tmp = n - 2;
                while (tmp-- != 0) {
                    System.out.print(" ");
                }
                System.out.print("*");
                System.out.println();
            }
            count--;
        }
    }
}

هل لاحظت الفرق ؟ :)

يعني بدلا من التركيز على أمور غير أساسية, حاول أن تُركز على أمور أكثر فائدة. الهدف الرئيسي من تمارين إظهار النجوم في الكتب التعليمية هو التعود على استخدام الحلقات (خصوصاً for لأن while و do while ليستا مناسبتين في هذه الحالة)

بالنسبة للمؤثرات المنطقية فحاول أن تعتاد على استخدامها لأنها ستفيدك كثيرا عندما تكتب أكودا برمجية في المستقبل.

 

 

بالتوفيق.

1
#9
Snack3r كتب:

هذه هو نفسه الكود الموجود في أول مشاركة لك بالأعلى, يعني ما فيه جديد :)

 

لكن لماذا تصر على عدم استخدام الـ logic operations ؟

الكود السابق بدون مؤثرات منطقية و بدون for سيكون هكذا :

public class Test {

    public static void main(String... args) {
        int n = 7, count = n;
        boolean state;
        while (count > 0) {
            state = false;
            if (count == 1) {
                for (int i = 0; i < n; i++) {
                    System.out.print("*");
                }
                System.out.println();
                state = true;
            }

            if (count == n) {
                int tmp = n;
                while (tmp-- != 0) {
                    System.out.print("*");
                }
                System.out.println();
                state = true;
            }

            if (!state) {
                System.out.print("*");
                int tmp = n - 2;
                while (tmp-- != 0) {
                    System.out.print(" ");
                }
                System.out.print("*");
                System.out.println();
            }
            count--;
        }
    }
}

هل لاحظت الفرق ؟ :)

يعني بدلا من التركيز على أمور غير أساسية, حاول أن تُركز على أمور أكثر فائدة. الهدف الرئيسي من تمارين إظهار النجوم في الكتب التعليمية هو التعود على استخدام الحلقات (خصوصاً for لأن while و do while ليستا مناسبتين في هذه الحالة)

بالنسبة للمؤثرات المنطقية فحاول أن تعتاد على استخدامها لأنها ستفيدك كثيرا عندما تكتب أكودا برمجية في المستقبل.

 

 

بالتوفيق.

الأن في هذا الباب اخي لم يصل بعد الي ال(logic operations)  في ذلك الكتاب 

انا نحس بشويه ضعف لا اعلم ربما لان انا في البدايه

شكرا اخي 

:)

#10

المؤثرات المنطقية بسيطة و يمكنك استخدامها قبل أن تصل إليها في الكتاب :)

  1. a && b تكون نتيجتها true عندما تكون العبارة المنطقية a صحيحة و b كذلك, فيما عدا ذلك تكون النتيجة false.
  2. a || b تكون نتيجتها false عندما تكون a خاطئة و b خاطئة, فيما عدا ذلك تكون النتيجة true.

تم تعديل هذه المشاركة بواسطة Snack3r في 30 نوفمبر 2013 في 02:52

1

هذا الموضوع مغلق.

مواضيع مشابهة