يوم سوالف، في 7 أغسطس القادم

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد
 
LinkBack أدوات الموضوع
عضو فعال
تاريخ التسجيل: Sep 2005-
#1 (permalink)  
معرفة العدد اذا كان فردي او زوجي ؟ كيف ؟


السلام عليكم ،،،

كيف حال الجميع ..؟ أتمنى أن تكونوا بخير ...

لدي فكرة عن طريقو معرفة العدد هل هو فردي أو زوجي لكنها طويلة ...

فكرتها أن أقسم العدد على 2 اذا كان العدد الناتج عدد صحيح فانه زوجي ... واذا كان الناتج عدد عشري فانه عدد فردي ...

طبعاً التأكد يكون عن طريق gettype

لكن السؤال ... هل يوجد دالة واحدة بدون لف ودوران تأتي بالنوع ، هل هي زوجية أم فردي ؟


وشكراً






مرشوش بفليت متواجد حالياً   قديم 14-05-2008, 02:55 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Apr 2006-
#2 (permalink)  

كود PHP:

function check_($val)
 {
 
// اذا كان ناتج القسمة هو صفر فأكيد هو عدد زوجي
  
if( $val == )
    {
    
// العدد زوجي
    
return true;
    }
    else
    {
    return 
false;
    }
 }


// تجربة
if(check_(5))
 {
echo 
"العدد زوجي";
 }
 else
 {
 echo 
"العدد فردي";
 } 






عبد الواحد البشيري غير متواجد حالياً   قديم 14-05-2008, 03:11 PM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: May 2007-
#3 (permalink)  

الفكرة المطروحة سليمة ، إلا أن آلية العمل انحرفت لديك في نهاية الفكرة ..

كود الأستاذ عبدالواحد يفي بالغرض ، وهو تطبيق لفكرتك، أي القسمة على 2 ، فإذا كانت تقبل القسمة على 2 ، وهذا يعني أن [ الباقي ] = صفر .. فالعدد زوجي ، خلاف ذلك ، فالعدد فردي ..

* ملاحظة: % هو المعامل الرياضي للـ "باقي" في لغة PHP

تحياتي، أشرف السمهوري






__________________
[هل] سيتحقق الحلم؟
هذا ما ستخبرنا به الأيام :) ..
أشرف السمهوري غير متواجد حالياً   قديم 15-05-2008, 02:26 PM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#4 (permalink)  

طيب؟ ليش ما نشوف طريقه ثانيه؟ طريقع شوي معقده، "التعقيد في البرمجه معناها صعب الاستيعاب للانسان ولكن يحسن اداء البرنامج بشكل كبير" الا وهي استخدام البتات ..
الحل هو

كود PHP:
function isOdd($number){
    return 
$number&1;
}

echo 
isOdd(4);// false
echo isOdd(5);// true 
الشرح: كما نعلم ان الحاسبات تستخدم الاعداد الثنائيه اي 1 و 0 فقط..
"انا لن اشرح كيفيه تمثيل الاعداد العشريه الى الاعداد الثنائيه لانها مشروحه في كل مكان"

العلامه & في PHP معناها عمليه "او" اي اذا كان البت الاول 1 والاخر 1 يعني 1 اما في الحالات الاخرى 0
مثال:
الرقم 5 = 0101 0000
والرقم 1 = 0001 0000

فذا نفذنا العمليه
0101 0000 = الرقم العشري 5
0001 0000 = الرقم العشري 1
=======
0001 0000 = الرقم العشري 1

فاذا اخذنا المثال 6 و 1
0110 0000 = الرقم العشري 6
0001 0000 = الرقم العشري 1
=======
0000 0000 = الرقم العشري 0

اخوكم خالد






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 16-05-2008, 07:22 AM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: May 2007-
#5 (permalink)  

رائع والله أستاذ خالد ..

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

هذا يعني أن العدد الزوجي دائماً تكون فيه خانة الواحد الثنائية ( Binary ) بقيمة صفر .. والعدد الفردي تكون قيمتها 1 .. هذه هي الفكرة ، أليس كذلك؟

الآن، لمعرفة العدد الزوجي ، هل يمكن استخدام هذه الطريقة ؟
كود PHP:
    return $number+1&1
أم أنك لا تنصح بها ولديك بديل لها ؟

جزاك الله خيراً ، أحب هذه المعلومات الجديدة ..

تحياتي، أشرف السمهوري






__________________
[هل] سيتحقق الحلم؟
هذا ما ستخبرنا به الأيام :) ..

التعديل الأخير تم بواسطة : أشرف السمهوري بتاريخ 16-05-2008 الساعة 08:05 AM.
أشرف السمهوري غير متواجد حالياً   قديم 16-05-2008, 08:04 AM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#6 (permalink)  

اما عن الاعداد الزوجيه لا انصح باستخدام طريقتك لانك في مثالك تفعل عمليه "او" على الرقم الغلط الا وهي الواحد
كود PHP:
 return $number+1&1
فالحل النظيف نسبيا هو .. اما
كود PHP:
return ($number+1)&1
او

كود PHP:
return ++$number&1
ولكن حلولي هذي ليست المثلى .. لانها لا تتعامل مع الارقام السالبه والرقم 0 اي ضبط الداله لكي تتعامل مع تلك الحالات






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 16-05-2008, 09:05 AM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: May 2007-
#7 (permalink)  

هذا ما اعتقدته قبل التجربة في المرة الأولى ..

بعد التجربة وجدت أن نتيجة هذه السطور جميعاً هي واحدة:
كود PHP:
return $number+1&1;
return (
$number+1)&1;
return (
abs($number)+1)&1
أعتقد أن المعاملات الرياضية يتم تنفيذها قبل المعاملات المنطقية ، لذلك ، فإن + تنفذ قبل & حسب التجربة ..

والأعداد السالبة لا تتأثر بالإشارة السالبة ، حتى وإن تأثرت ، فإن :
كود:
5+1 = 6
-5+1 = -4
المهم هو أنه عند إضافية 1 أو طرح واحد ستتغير القيمة من فردية إلى زوجية أو العكس ، لا يهم إن كانت القيمة المطلقة الجديدة أكبر أو أصغر من الأصلية ،

أتمنى أن تكون قد فهمتني هنا ..

وشكراً لردك السريع أستاذي خالد ..

تحياتي، أشرف السمهوري






__________________
[هل] سيتحقق الحلم؟
هذا ما ستخبرنا به الأيام :) ..
أشرف السمهوري غير متواجد حالياً   قديم 16-05-2008, 09:17 AM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Sep 2005-
#8 (permalink)  

عبد الواحد البشيري : شكراً لك أخي الغالي على المساعدة ... طريقة جميلة ... وعملية !


أشرف السمهوري : حياك الله أخوي ، كيف حالك ان شاء الله بخير ؟
اقتباس:
المشاركة الأصلية كتبت بواسطة أشرف السمهوري مشاهدة المشاركة
الفكرة المطروحة سليمة ، إلا أن آلية العمل انحرفت لديك في نهاية الفكرة ..
جميل ... لكن هل لي أن أعرف أين الخطأ في الموضوع ؟ بانتظارك ...


hilaby : طريقة جميلة تدل على خبرتك بهذه اللغة ... أتمنى لك التوفيق






مرشوش بفليت متواجد حالياً   قديم 18-05-2008, 09:51 PM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: Jun 2007-
#9 (permalink)  

هناك طريقة مختصرة أيضا لم يتطرق لها أحد

كود PHP:
$result=($val%2)?true:false






مهندس نت غير متواجد حالياً   قديم 19-05-2008, 12:16 AM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#10 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة مهندس نت مشاهدة المشاركة
هناك طريقة مختصرة أيضا لم يتطرق لها أحد

كود PHP:
$result=($val%2)?true:false
هل هذا الكود هو نفس هذا الكود :

كود PHP:
if($val%2){
return 
true;
}else{
return 
false







__________________
سبحان الله وبحمده سبحان الله العظيم
الفايق متواجد حالياً   قديم 19-05-2008, 06:14 AM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: May 2007-
#11 (permalink)  

الحمدلله أنا بخير ، طمني عنك انت ..

اقتباس:
طبعاً التأكد يكون عن طريق gettype
هنا المشكلة ، لا داعي لذلك ، حيث أن الباقي إن لم يكن صفراً فالعدد فردي .. فقط هكذا ..

اقتباس:
$result=($val%2)?true:false;
لم تكن الفكرة مدى اختصار الكود ، الفكرة هي ماهية الكود فحسب ..

تحياتي، أشرف السمهوري






__________________
[هل] سيتحقق الحلم؟
هذا ما ستخبرنا به الأيام :) ..
أشرف السمهوري غير متواجد حالياً   قديم 19-05-2008, 01:23 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#12 (permalink)  

طيب ما في احد يتكلم ويرد علي !






__________________
سبحان الله وبحمده سبحان الله العظيم
الفايق متواجد حالياً   قديم 20-05-2008, 12:34 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Apr 2006-
#13 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة الفايق مشاهدة المشاركة
طيب ما في احد يتكلم ويرد علي !
اهﻻ بك اخي الفايق

بالنسبة للكود الذي اختصره اﻷخ قبلك و انت فمت بشرحه برمجيا جميل حيث اذا كان الرقم فردي يعطي true و الزوجي يعطي false






عبد الواحد البشيري غير متواجد حالياً   قديم 20-05-2008, 02:53 AM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Sep 2006-
#14 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة عبد الواحد البشيري مشاهدة المشاركة
اهﻻ بك اخي الفايق

بالنسبة للكود الذي اختصره اﻷخ قبلك و انت فمت بشرحه برمجيا جميل حيث اذا كان الرقم فردي يعطي true و الزوجي يعطي false
هلا فيك عبدالواحد
معنى كلامك انه الكود هو نفسه ، إن شاء الله هو كذلك






__________________
سبحان الله وبحمده سبحان الله العظيم
الفايق متواجد حالياً   قديم 20-05-2008, 03:17 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Apr 2006-
#15 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة hilaby مشاهدة المشاركة
طيب؟ ليش ما نشوف طريقه ثانيه؟ طريقع شوي معقده، "التعقيد في البرمجه معناها صعب الاستيعاب للانسان ولكن يحسن اداء البرنامج بشكل كبير" الا وهي استخدام البتات ..
الحل هو

كود PHP:
function isOdd($number){
    return 
$number&1;
}

echo 
isOdd(4);// false
echo isOdd(5);// true 
الشرح: كما نعلم ان الحاسبات تستخدم الاعداد الثنائيه اي 1 و 0 فقط..
"انا لن اشرح كيفيه تمثيل الاعداد العشريه الى الاعداد الثنائيه لانها مشروحه في كل مكان"

العلامه & في PHP معناها عمليه "او" اي اذا كان البت الاول 1 والاخر 1 يعني 1 اما في الحالات الاخرى 0
مثال:
الرقم 5 = 0101 0000
والرقم 1 = 0001 0000

فذا نفذنا العمليه
0101 0000 = الرقم العشري 5
0001 0000 = الرقم العشري 1
=======
0001 0000 = الرقم العشري 1

فاذا اخذنا المثال 6 و 1
0110 0000 = الرقم العشري 6
0001 0000 = الرقم العشري 1
=======
0000 0000 = الرقم العشري 0

اخوكم خالد
معليش اصبر معي قليﻻ

مثﻻ هذا السطر
كود PHP:
echo 6&1
اذا كان الرقم 6 اول ارقامه 0 "كما شرحت" اطبعه او اطبع الرقم 1

حقيقة ﻻ يزال عندي غموض ﻻستخدام الرمز & في هذ اﻷمر ﻻنني جربته على ارقام مختلفة والنتيجة لم افهمها ...

ممكن توضيح اكثر اخي خالد او اﻷخ اشرف






عبد الواحد البشيري غير متواجد حالياً   قديم 20-05-2008, 03:37 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Oct 2003-
#16 (permalink)  

افكار جميله جدا ولكن لدي سؤال

هل الاعداد السالبه فى نظام التمثيل الثنائي تعرف بالعلامة (-) ام بطريقه اخري ممكن تأثر علي عمل الكود مع الاعداد السالبه؟






__________________
المستحيل كلمة من افواة المجانين
FLy متواجد حالياً   قديم 20-05-2008, 06:00 PM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: May 2007-
#17 (permalink)  

اقتباس:
طيب ما في احد يتكلم ويرد علي !
نعم نفسه ، لكن استبدل return بـ $result = ، حتى يكون نفسه تماماً ..

اقتباس:
معليش اصبر معي قليﻻ

مثﻻ هذا السطر

كود PHP:
كود PHP:
echo 6&1
اذا كان الرقم 6 اول ارقامه 0 "كما شرحت" اطبعه او اطبع الرقم 1

حقيقة ﻻ يزال عندي غموض ﻻستخدام الرمز & في هذ اﻷمر ﻻنني جربته على ارقام مختلفة والنتيجة لم افهمها ...

ممكن توضيح اكثر اخي خالد او اﻷخ اشرف
الآن قم بتحويل 6 إلى الثنائي = 110
البت الأول من اليمين هو 0 ، دائماً في العدد الزوجي سيكون هذا 0 ..
عند تحقيق جملة & المنطقية ، سيتأكد إذا كان العدد 1 يحمل نفس هذه القيمة ..
110
001
البت الاول في 6 هو 0 ، والبت الاول في 1 هو 1
إذاً الشرط لم يتحقق ، يجب أن يكونا متطابقين ..

هل وصلت الفكرة؟

اقتباس:
المشاركة الأصلية كتبت بواسطة FLy مشاهدة المشاركة
افكار جميله جدا ولكن لدي سؤال

هل الاعداد السالبه فى نظام التمثيل الثنائي تعرف بالعلامة (-) ام بطريقه اخري ممكن تأثر علي عمل الكود مع الاعداد السالبه؟
يتم تمثيل الأعداد السالبة بطريقتين ،

الأولى: نفس التمثيل العادي ، مع تخصيص الخانة الأولى من اليسار ( حيث أن القيمة تتكون من 8 بت ) ، حيث إن كانت الخانة 1 فالقيمة سالبة، وإن كانت 0 فالقيمة موجبة ..

الثانية: عن طريق قلب العدد وزيادة 1 ..

مثال: 5 = 101
للتحويل لقيمة سالبة، نقلب جميع الخانات : 010 ، ثم نضيف واحد : 011 ..
:. -5 = 011

مثال آخر: 12 = 00001100 ( 8 بت )
نقلب: 11110011 ، ثم نضيف 1 : 11110100

أتمنى أن تكون قد وصلت الفكرة، هذا والله أعلم ..

تحياتي، أشرف السمهوري






__________________
[هل] سيتحقق الحلم؟
هذا ما ستخبرنا به الأيام :) ..

التعديل الأخير تم بواسطة : أشرف السمهوري بتاريخ 21-05-2008 الساعة 12:42 AM.
أشرف السمهوري غير متواجد حالياً   قديم 21-05-2008, 12:40 AM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#18 (permalink)  

أشرف السمهوري، شكراً لردك المفصل.






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 21-05-2008, 09:06 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Apr 2006-
#19 (permalink)  

مفهوم اخي اشرف اشكرك






عبد الواحد البشيري غير متواجد حالياً   قديم 21-05-2008, 12:01 PM
رد مع اقتباس
رد


أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
كيف نعرف اذا كان البريد موجود او مزيف؟ EsKi PHP 6 16-06-2005 01:55 PM
كيف استطيع معرفة اسم القطع في الجهاز . اذا لم يتعرف عليها نظام التشغيل ؟ ابو مشعل أخبار الإنترنت والتقنية ومناقشتها 3 27-03-2002 03:45 AM
وردة حب الى كل أم ...... عسليه قسم التصميم والرسومات والمونتاج 28 27-03-2002 12:12 AM
الحياة بينك وبين الام cbh1978 سوالف عامة 4 13-02-2002 04:05 PM
كيف بالامكان معرفة..ما اذا كان المعالج الموضوع بالجهاز أصلي؟ _-*الفيصل*-_ أخبار الإنترنت والتقنية ومناقشتها 6 04-10-2001 01:11 AM


الساعة الآن: 11:40 AM بتوقيت المملكة العربية السعودية