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

أين الخطأ فى هذا الكود؟

مغلق
بدأه abduljawaad saad في 8 يناير 2007 · 8 رد · 929 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
 <?PHP
  $i = 1;
 $y=5;
 do
 {
 	$y=$y*$i;
		$i++;
 }
  while ($i < $y);
   print $y;
?>

الغرض من الكود الحصول على مضروب الرقم 5

عند تنفيذ هذا الكود أحصل على رسالة الخطأ هذه 00 أود ان اعرف أين الخطأ

Fatal error: Maximum execution time of 30 seconds exceeded in c:\apache\htdocs\training\test\t2.php on line 14

mytrial_a.gif

نحن بحاجة لتدوين تجاربنا , نحن بحاجة إلى اكتشاف قيمة التجربة, هذه تجربتى مثيرة ومفيدة ...,

هنا
#2

رياضيا الدالة خطأ ...

اما رسالة الخطأ اللي بتظهر فهي ناتجه عن عدم تحقق شرط while لانه دائما المتغير i اصغر من المتغير y .. فيتم تنفيذ اللووب الى عدد لا نهائي و لا ينتج اي مخرجات ...

#3

إذا كنت تعني بالمضروب العاملي الرياضي نفسه (!n), فإليك الحل...

$y=1;
for ($i=0; $i<$n; $i++)
{
	  $y=$y*$i;
}
 print $y;	//	   y=n!

بسم الله الرحمن الرحيم

و قل ربي زدني علماً

صدق الله العظيم

#4

اعنى بمضروف 5

الحصول على ناتج العملية 5×4×3×2×1

mytrial_a.gif

نحن بحاجة لتدوين تجاربنا , نحن بحاجة إلى اكتشاف قيمة التجربة, هذه تجربتى مثيرة ومفيدة ...,

هنا
#5

للأسف لم احصل على الرد الصحيح

وأود أن أكرر انى اريد استخدام التكرار do....... while للحصول على مضروب أى رقم

مثلا : مضروب الرقم 5 يعنى حاصل ضرب 5×4×3×2×1

يعنى الناتج = 120

تم تعديل هذه المشاركة بواسطة abduljawaad saad في 9 يناير 2007 في 16:13

mytrial_a.gif

نحن بحاجة لتدوين تجاربنا , نحن بحاجة إلى اكتشاف قيمة التجربة, هذه تجربتى مثيرة ومفيدة ...,

هنا
#6

حقيقة الكود الذي طرحته أخي العزيز فيه عدة أخطاء أولها ان Y سيحتفظ بآخر قيمة اسندت اليه في حين ان تريد ضرب جميع القيم ثانيها انك في ال Condition حددت ان الكود ينفذ طالما ان I أصغر قطعا من Y و بهذا سيتوقف النفيذ في العدد 4 المهم جرب هذا الكود و أخبرني بالنتيجة و عفوا لو كان اي خطأ في ال syntax كوني لست ضليع في البيشو

<?PHP
  $i = 1;
$y=5;
$Res=1;
do
{
	$Res=$i*$Res;
		$i++;
}
  while ($i <= $y);
   print $Res;
?>
#7

آسف عن الخطأ الوارد في مشاركتي السابقة, حيث أنني بدأت المتحول i في الحلقة بالقيمة صفر...

التصحيح:

$n=1;
for ($i=1; $i<=$y; $i++)
{
	  $n=$n*$i;	 //that n=1*2*3*....*y
}
print $n;	//	   n=y!

تم تعديل هذه المشاركة بواسطة phpspider في 9 يناير 2007 في 21:53

بسم الله الرحمن الرحيم

و قل ربي زدني علماً

صدق الله العظيم

#8

رياضيا وقواعديا يجب ان يكون الكود بهذه الطريقة , بحيث ان المضروب بدائرة تناقص وليس تزايد ,,

<?php
$y=5;
for ($i=($y-1);$i>1;$i--)
{
$y=$y*($i);
ECHO $y." * ";
}
?>
#9

حل أخر :

function factorial($num)
{
	if ($num>1) {
	   return $num * factorial($num-1);
	}

return $num;
}

print factorial(5);

Web Citizen

ShrefInLife.gif

__________

General blog : Shref In Life

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

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