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

كود بي اتش بي يحتاج الى لوب بسيط

بدأه الحماسي في 23 يونيو 2011 · 5 رد · 422 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

انا لسا مبتد بال بي اتش بي

واعرف ان هالشكل يحتاج له لوب اقل من سطرين لكن ماني قادر اجيبه

مادري فيكم احد يعرف يسوويه

###########

##########*

#########**

########***

#######****

######*****

#####******

####*******

###********

##*********

#**********

#2

منذ فترة كان هناك تحدي وضعه الأخ mental-driller هنا في المنتدى، لكن كان أكثر تعقيدًا من هذا..

سؤالك أخي يحتاج لتوضيح كبير! هل تريد مثلاً دالة تدخل لها رقم و ترسم رسمة مثل التي وضعتها يكون الرقم المدخل هو طولها و عرضها؟ هذا بسيط إن شاء الله.. هل تريد أن يتم كتابة علامة واحدة مثلاً في كل مرة من تنفيذ الـloop، هذا أيضًا نوع من التحدي.. أم يكفي فقط أي loop يرسم هذا الشكل؟ الأمر بسيطة إن شاء الله في الحالتين، فقط قل أيهما تريد.

#3

السلام عليكم، إذا كنت تريد يا أخي، أي loop قصير، فقد اخترت لك الأبسط، و هو و الله أعلم الأقصر أيضاً، هو loop واحد داخله تكرار str_repeat و التي تعتبر دالة لكنها للتكرار أيضًا في النهاية..

الكود:

<?php
function draw_triangle($width=11){$lines=$width; $stars_left=0;
while($lines){echo str_repeat('#',$width-$stars_left); echo str_repeat('*',$stars_left); echo "<br />"; $stars_left++; $lines--;}
}
draw_triangle(11);
?>

يمكنك كتابة رقم آخر مكان 11 في

اقتباس
draw_triangle(11);

و ستجد الرسمة تغير طولها و عرضها لما يتناسب مع الرقم المدخل..

أتمنى أني أفتدك، إذا كنت تريد الطريقة الأخرى، الأكثر تعقيدًا قليلاً، و الأطول كودًا قليلاً أيضاً،، اكتب هنا في رد على هذا الموضوع..

#4

ابداع بصراحه

انا قاعد احاول بطريقه الفور وماقدرت

لكن بصراحه مافهمت الكود هذا على الرغم انه تنفذ صح

#5

السلام عليكم..

الموضوع كله، يحتاج فقط لتفكير هادئ و بسيط، و النظر للرسمة لتحديد أهم النقاط فيها.. فبملاحظة الرسمة نجد أن أول سطر كله من العلامة #، ثم في السطر التالي له تنقص واحدة و تكتب مكانها * واحدة، ثم ننقص # أخرى، و نكتب مكانها #،، و هكذا..

إذن يجب أن يكون لدينا loop بعدد الأسطر (11 سطر)، كل سطر فيه علامات بنفس عدد الأسطر (11 علامة في كل سطر)،، إذن نحدد متغير $line و نضع له القيمة 11، و كذلك المتغير $width و نضع له القيمة 11 أيضًا..

و نعمل loop يتكرر طالما $lines أكبر من الصفر.. و بعد إنهاء كل تكرار واحد ننقص $lines واحد.

داخل كل تكرار يجب كتابة 11 علامة يمثلون السطر الحالي في التكرار، لدينا متغير $stars_left قيمته قبل loop صفر، لأننا لن نحتاج لأي * في أول سطر، بعد إنهاء كل تكرار نزيد عدد $stars_left واحد..

الآن جاء وقت كتابة 11 علامة، لدينا في PHP دالة رائعة اسمها str_repeat تختص بتكرار نص معين عدد من المرات، لنجعلها تكتب # بالفرق بين 11 و $stars_left أي

$width-$stars_left

ففي أول سطر تكون $stars_left تساوي صفر، فيكتب 11 #، و في السطر الثاني يكتب 10 #، ثم 9 # فقط و هكذا..

الآن يجب أن نكتب النجوم في كل سطر، فنضع str_repeat مرة أخرى لكتابة * و عدد مرات التكرار هو قيمة $stars_left يعني أول تكرار صفر، ثم 1، ثم 2، و هكذا..

و في نهاية كل تكرار نكتب <br /> لبدأ سطر جديد!!

أتمنى أن الأمر أصبح أبسط الآن..

#6

هذا تطبيقي هههه

الشرح داخل الكود

<?php
	header("Content-type: text/plain");
	// السطر الأول
	$line = "###########";
	// حساب عدد الأسطر الإجمالية التي سيتم طباعتها
	$totallines = strlen($line) + 1;
	// البداية في اللوب
	for($i=0;$i<$totallines;$i++){
    	// طباعة السطر
    	print($line."\n");
    	// تهيئة السطر اللي بعده
    	$line = preg_replace("/\#/","*",$line,1);
	}
?>

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