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

حساب القيمة المطلقة والقيمة الكبرى من دون استخدام المقارنة

بدأه حمد في 7 يونيو 2008 · 15 رد · 4,715 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

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

1- حساب القيمة المطلقة لعدد ما

abs(x)=x;
abs(-x)=x;

دون استخدام عملية مقارنة

function abs(x)
{
 if x > 0 then return x
 else return -x;
}

2- حساب العدد الأكبر من عددين دون استخدام عملية المقارنة

function max(x,y)
{
 if x>y then retun x
 else return y;
}

وشكرا مقدما لمن ساهم

#2

ماهو X ؟ Integer ؟ Float ؟ او ماذا

d4baa0.gif
#3

وش يفرق؟ أهم شي X رقم

إذا تفرق وعندك حل عطنا الحل الأسهل

#4

طبعا هناك فرق بين الاعداد العادية والاعداء بالفاصلةFloat حيث فكرت بالتعامل معها باستخدام Assembly

على كل هذا محاولتي

function Dabs(x:real):real;
Begin
  Result := sqrt(x*x);
End;

الجر التربيعي لمربع العدد = القيمة المطلقة لنفس العدد :D

d4baa0.gif
#5

بارك الله فيك

#6
function Dabs(x:real):real;
Begin
  Result := sqrt(x*x);
End;

بسم الله ما شاء الله أخى B.M. كنت هرد نفس الرد لقيتك رديت

-x*-x=xتربيع
-2*-2=4

:rose:

تم تعديل هذه المشاركة بواسطة Swift في 7 يونيو 2008 في 22:19

Comming Soon

#7

ما شاء الله عليكم

فكرتك حلوة يا B.M.AbdelAziZ ولمزيد من التعقيد هل يمكن حسابها بدون استخدام الـ functions الجاهزة.

من فكرتك كيف يمكن حساب القيمة الكبرى والصغرى من عددين

#8
حمد كتب:
هل يمكن حسابها بدون استخدام الـ functions الجاهزة.

ممكن

المثال السابق كان المتغير Real هذا المرة استعمل Integer

function Dabs(x:Integer):Integer;
Begin
  Result := (x + Not x ) * x;
End;
d4baa0.gif
#9

بالنسبة لحساب العدد الأكبر من عددين دون استخدام عملية المقارنة

بعد تفكير وتجربة وخطأ وجدت حل،

ليس احسن حل

لكنه يفي بالغرض

function Dmax(x,y:Integer):Integer;
var i : integer;
Begin
  for i:= x to y do Result := y;
  for i:= y to x do Result := x;
End;
d4baa0.gif
#10
B.M.AbdelAziZ كتب:
ممكن

المثال السابق كان المتغير Real هذا المرة استعمل Integer

function Dabs(x:Integer):Integer;
Begin
  Result := (x + Not x ) * x;
End;

جربت الكود في دلفي إذا X أكبر من الصفر النتيجة -X والعكس صحيح

جربت الكود في السي النتيجة دائما تربيع X

#11
حمد كتب:
جربت الكود في السي النتيجة دائما تربيع X

ما هي بعد التحويل ! عندك خطأ في التحويل من دلفي الى C

d4baa0.gif
#12

B.M.AbdelAziZ كتب:
بالنسبة لحساب العدد الأكبر من عددين دون استخدام عملية المقارنة

بعد تفكير وتجربة وخطأ وجدت حل،

ليس احسن حل

لكنه يفي بالغرض


var i : integer;
Begin
for i:= x to y do Result := y;
for i:= y to x do Result := x;
End;
function Dmax(x,y:Integer):Integer;

وهذا هو حلك بال C++ مع تعديل بسيط :


using namespace std;

int main ()
{
int x,y,result,i;
cin>>x;
cin>>y;
result= x;
for (i=x; i<=y; i++ )
{
result = y;

}


cout<<"\n The Maximum number is "<<result<<endl;

return 0;
}
#include<iostream>

اللهم طهر أرض فلسطين من العملاء والخونة

#13
حمد كتب:
ما شاء الله عليكم

فكرتك حلوة يا B.M.AbdelAziZ ولمزيد من التعقيد هل يمكن حسابها بدون استخدام الـ functions الجاهزة.

من فكرتك كيف يمكن حساب القيمة الكبرى والصغرى من عددين

تفضل:

#include<iostream>
using namespace std;
int main ()
{
int x;
cin>>x;
if (x < 0) x = -x;

 cout<<"\n The Absolute value of x is "<<x<<endl;

	return 0;
}

اللهم طهر أرض فلسطين من العملاء والخونة

#14

يمكن حساب القيمة الاكبر بدون مقارنات عن طريق الاسمبلي .

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#15
علاء السلال كتب:
تفضل:

#include<iostream>
using namespace std;
int main ()
{
int x;
cin>>x;
if (x < 0) x = -x;

 cout<<"\n The Absolute value of x is "<<x<<endl;

	return 0;
}

انت تستخدم if

الاخ قال دون مقارنة

d4baa0.gif
#16

اعتقدته يقصد دون مقارنة القيمتين ببغض ..

اللهم طهر أرض فلسطين من العملاء والخونة

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…