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

لغز رياضي .. برمجي .. في نفس الوقت .. يحتاج الى تفكير ..(إيجاد باقي القسمة بدون استخدام %)

مغلق
بدأه سنان محمد صالح في 2 يناير 2008 · 21 رد · 5,237 مشاهدة · في اختبر قداراتك
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخوان ..

اللغز لم اضعه في قسم الرياضيات والخوارزميات متعمدا لانني اريد الحل ان يكون بلغة السي ++ ..

كلنا نعرف الرمز % في لغة السي والذي يعني mod او باقي القسمه لعددين ..

طيب .. المطلوب في اللغز هو برمجة دالة تقوم بنفس عمل هذا المؤثر ولكن من دون استخدامه ...

للتوضيح اكثر ..

لو كتبنا

10 % 5

فإن الناتج سيكون صفر ..

المطلوب في اللغز هو برمجة دالة على الشكل التالي ..

mod(10,5)

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

اي ان لا تكون الدالة على الشاكله التالي ..

int mod(int x,int y)
{return x%y;}

هذا الحل مرفوض .. لذلك فكروا في طريقة رياضيه منطقية لايجاد باقي القسمه وكتبابتها على شكل كود برمجي بلغة السي ++ كدالة mod لعددين ..

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

اذا اردت ارسل الحل على الخاص ..

تحياتي العطرة للجميع وارجو ان يكون لغزا جميلا ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#2

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

لغز رائع...شكرا لك..

اتمنى من الاعضاء انهم ما يضعون الحل هنا..حتى يتمكن عدد كبير من الحل

#3

السلام عليكم ,,

أهلاً أخ سنان ,,

سؤال جميل جداً, و أتمنى أن يشارك الأعضاء, اطلعت على السؤال و سأحاول حله بإذن الله , طبعاً على الخاص :D

للأسف أنا خارج البيت حالياً و لكن لا مشكلة عندما أعود سأجرب الحل بإذن الله :calc:

تحياتي أخ سنان ,,

#4

نقسم العددين : الاول على الثاني

ناخذ النتيجة دون فاصلة

نضرب الناتج في العدد الثاني

نطرح الناتج من العدد الاول

الحل بدون كود - البرمجة بدون كود :lol: - لكي لا احرق اللغز

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

تم تعديل هذه المشاركة بواسطة B.M.AbdelAziZ في 3 يناير 2008 في 04:01 — السبب: حذف code

d4baa0.gif
#5

ألا يجوز استخدام الاسمبلي ؟ :nose_pick:

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#6
اقتباس
ألا يجوز استخدام الاسمبلي ؟

إذا سمح لي الأخ سنان, يمكن للأسمبلاوية أن يشاركوا :D

و لكن المهم هي الصيغة الرياضية لها, و يمكنك بعدها أن تطبقها بأي لغة :wink:

الأخ B.M.AbdelAziZ أعطاكم الإجابة الصحيحة و لكنه ترك لكم المجال بعد ذلك, ألا يوجد أحد قرأ إجابته و حولها إلى صيغة رياضية :cry:

أنا حليت السؤال, إضافة إلى ذلك هناك طريقة تستخدمها المترجمات لتحسين الأداء إذا كان باقي القسمة على قوى العدد 2 يمكن أن نضعها بعد حل السؤال الحالي -_- :

x % 2^n
#7

السلام عليكم

حيث ان المساله وضعت كلغز ارسلت الاجابه على الخاص حسب قوانين الفريق العربي

tvquran_6.gif

#8

اهلا بكم اخوان ...

واشكركم جزيل الشكر على التشجيع ..

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

سواء كان C++ او جافا اوفيجول بيسك او اسمبلي .. كله مسموح في اللغز ..

اخي العزيز B.M.AbdelAziZ ..

طريقتك هي احدى طرق حل اللغز لانه توجد اكثر من طريقة .. ولكن لماذا وضعت الحل الرياضي الخاص بك هنا ..

عليك ان تقوم بارسال الحل على الخاص لكي لا تسرق منك المعلومات ..

ارجو ان تقوم بتعديل ردك وتحذف الحل لكي لا يطلع عليه البقية ..

تحياتي العطرة للجميع ...

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#9

الكود سيأخذ الشكل التالى

int mod(int num1,int num2)
{
	return num1 - ((num1/num2)*num2);
}

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#10

تم الحل...

بانتظار لغز آخر..مثل هذا لا يأخذ وقت طويل

المرفق فقط يشاهده سنان

mod.cpp

#11
سنان محمد صالح كتب:
اخي العزيز B.M.AbdelAziZ ..

طريقتك هي احدى طرق حل اللغز لانه توجد اكثر من طريقة .. ولكن لماذا وضعت الحل الرياضي الخاص بك هنا ..

عليك ان تقوم بارسال الحل على الخاص لكي لا تسرق منك المعلومات ..

لم اقل انها الطريقة الوحيدة فهناك الكثير منها وهو سبب كتابتها، ثم لم اضع Code والمطلوب كان code فحتى ما وصفته يمكن كتابته ب3 طرق بالكود على الاقل

اما فيما يخص ارسال الحل على الخاص فما فهمته انه كان موجه للاخ خالد فقط

ومن غير المعقول ان يرسل كل شخص حله عبر الخاص وتتحول المشاركات من المنتدى الى الخاص! اليس كذلك

-

اول الامر فكرت في استعمال Assembly مثلما قال الاخ GamingMasteR فكرت في استخدام SHR

d4baa0.gif
#12

السلام عليكم ,,

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

حتى أنا اعتقدت ذلك و لكني رأيت الأخوة قد أشاروا إلى أنهم أرسلوا للأخ سنان الإجابات :lol:

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 3 يناير 2008 في 14:31

#13

اسهل الطرق بالاسمبلي :

m proc	n1:DWORD,n2:DWORD
	xor edx,edx
	mov edi,n1
	mov eax,n2
	div edi
	xchg eax,edx
	Ret
m EndP

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#14

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

أعتقد أن هذا الحل حل جيد و بسيط :

int MOD(int x,int y)
{
	while(true)
	{
		x=x-y;
		if(x<0)
		{
			x=x+y;
			return x;
		}
		else
		{
			if(x=0)
				return x;
		}

	}
}

في البداية يسخرون منك . . . ثم يهملونك . . . ثم يحاربونك . . . ثم تنتصر

#15

بالواقع كان اساس اللغز ان يوضع الحل هنا فقط الاخ خالد كنت اريده ان يرسل الحل الي ..

ولكن عندما دخلت وجدت لدي رسائل خاصه بها الحلول من عدة اعضاء ..

ولكن لا مشكله من اي شئ ان وضعت الحلول هنا او برسائل خاصه ماكنت اريده من وراء ذلك هو استفادة اكبر قدر من الاعضاء من هذا اللغز

الحلول كلها صحيحه وهناك اكثر من طريقة للحل ..

وان شاءالله اكتب الحل يوم غد او بعد غد ليرى الاعضاء الذين لم يتمكنوا من التوصل الى الحل الطريقة الخاصه بالحل ..

تحياتي العطرة . .. .

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#16

شكرا لجميع من شارك والى من لم يشارك في حل اللغز ..

الان ساضع لكم طرقيتين للحل ..

الاولى هي التي حل بها الجميع .. وهي كما تكلم عنها الاخ B.M.AbdelAziZ ..

اقتباس
نقسم العددين : الاول على الثاني

ناخذ النتيجة دون فاصلة

نضرب الناتج في العدد الثاني

نطرح الناتج من العدد الاول

والكود التالي هو الخاص بالطريقة ...

int mod(int num1,int num2)
{
	return num1 - ((num1/num2)*num2);
}

اما الطريقة الثانيه .. فلم اجد من بينكم من اكتشفها الا الاخ arabi1013...

وهي كالتالي ..

كلنا نعرف ان القسمة هي بمفهومها طرح والضرب هو جمع .. والطرح والجمع هذا يتكرر بقدر العدد الثاني ..

مود القسمه او باقي القسمه يمكن ايجاده من الطرح ايضا ..

والطريقة تقول ناخذ العدد الاول ونطرح من العدد الثاني ونستمر بعملية الطرح الى ان يصبح الناتج اقل من العدد الثاني .. وعندما يتحقق هذا الشرط فالناتج سيصبح هو الباقي ..

مثال على ذلك لو اخذنا العددين 10 % 5 ...

10 - 5 = 5 ..... 5 - 5 =

0

الصفر هنا اقل من العدد الثاني فبذلك هو باقي القسمه ..

مثال اخر ..

14 % 3 ...

14 - 3 = 11 .. 11 -3 = 8 .. 8-3=5 .... 5-3 = 2

نجد هنا ان العدد الناتج من الطرح المتكرر اصبح اقل من العدد الثاني اي ان 2 اقل من 3 وبذلك 2 هو باقي القسمة او المود الناتج ..

والكود التالي يوضح العملية ..

int mod(int x, int y)
	 {
		   for(int i = x;i>=0;i-=y)

if(i<y)
return i;

}

ارجو ان يكون لغزا مفيدا للجميع ..

تحياتي العطرة ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#17
#include<stdio.h>
int a,b;
int mod(int x,int y);
void main()
{
scanf("%d%d",&a,&b);
printf("%d",mod(a,B));

}
int mod(int x,int y)
{
while (x>=y) { x-=y;}
return x;
}

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 8 يناير 2008 في 20:53

حكم ظالم 70 عاما خير من تسيب يوم واحد

#18

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

راح ادخل في الموضوع مباشرة الاحظ الاخوان هنا مايردون الا على الناس اللي متقدمة في السي ++ لدرجة اني بديت افقد الحماس للدخول والاستفادة انا قلت من البداية اني توني في بداية السي++ والمنطق يقول ان المتقدم ياخذ بيد المبتدئ مو يطنش اسئلته ممكن تكون اسئلتي غبية بالنسبة لكم لكن مثل ما انا قلت في البداية انا توني مبتدئ يعني المفروض انكم تساعدوني او انشئوا منتدى خاص في المبتدئين علشان تفتكون من وجود الاعضاء المبتدئين اقول هذا الكلام والله من القهر :cry: اللي فيني استاذنا في الجامعة يقول ابحثوا ولا تنتظرون اني اجيب لكم سؤال من الاشياء اللي شرحتها لكم لان اللغة هذي بحر ويوم قلت انحلت ودخلت هالمنتدى لقيت ان اغلبية الاعضاء يردون فقط على بعضهم هل انتم مامريتوا في مرحلة المبتدئين؟ ام انتم من وقت اللي طلعتوا على هالدنيا فاهمين في هاللغة :resentful: ؟فيه اشياء كثيرة ماانشرحت لي موعيب اننا مانعرف لكن الخطاء اننا نخجل من السؤال انا ماسئلت عن شي خارج اللغة :angry: :angry: ومع هذا مافيه احد يرد على اسئلتي

ممكن تقولون اننا موفاضين لكن حسب اللي اعرفه انكم تتواجدون تقريبا بشكل يومي وهالاسئلة اللي انا طارحها في المنتدى ماتاخذ منكم وقت علشان تردون عليها

:cry: :cry: :cry: شكرا لكم

يارب التأهل ياكريم

#19
اقتباس
بسم الله الرحمن الرحيم

راح ادخل في الموضوع مباشرة الاحظ الاخوان هنا مايردون الا على الناس اللي متقدمة في السي ++ لدرجة اني بديت افقد الحماس للدخول والاستفادة انا قلت من البداية اني توني في بداية السي++ والمنطق يقول ان المتقدم ياخذ بيد المبتدئ مو يطنش اسئلته ممكن تكون اسئلتي غبية بالنسبة لكم لكن مثل ما انا قلت في البداية انا توني مبتدئ يعني المفروض انكم تساعدوني او انشئوا منتدى خاص في المبتدئين علشان تفتكون من وجود الاعضاء المبتدئين اقول هذا الكلام والله من القهر اللي فيني استاذنا في الجامعة يقول ابحثوا ولا تنتظرون اني اجيب لكم سؤال من الاشياء اللي شرحتها لكم لان اللغة هذي بحر ويوم قلت انحلت ودخلت هالمنتدى لقيت ان اغلبية الاعضاء يردون فقط على بعضهم هل انتم مامريتوا في مرحلة المبتدئين؟ ام انتم من وقت اللي طلعتوا على هالدنيا فاهمين في هاللغة ؟فيه اشياء كثيرة ماانشرحت لي موعيب اننا مانعرف لكن الخطاء اننا نخجل من السؤال انا ماسئلت عن شي خارج اللغة ومع هذا مافيه احد يرد على اسئلتي

ممكن تقولون اننا موفاضين لكن حسب اللي اعرفه انكم تتواجدون تقريبا بشكل يومي وهالاسئلة اللي انا طارحها في المنتدى ماتاخذ منكم وقت علشان تردون عليها

اهلا وسهلا بك اخي ...

متى سالت ولم نجب عليك ..؟؟

اسال اي سؤال وستجدني انا او اي عضو اخر في الخدمة ..

هذا كلام غير مقبول لان كل عضو سال سؤال جاوبنا عليه .. ضع سؤالك في موضوع وستجد الاجابه عليه ان شاءلله ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#20

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

شكرا اخوي سنان على الرد اللي على الاقل يريح الصدر لكن عن جد انا نزلت سؤالين لكن مو كموضوع لالني اشوف اكثر موضوع الاعضاء يتناقشون فيه وامرر سؤالي انا كذا متعود في المنتديات اللي مشارك فيها لكن يمكن الخطا مني :rolleyes: لاني ماعرفت طريقتكم

:lol: اكررر شكري لكم وانا صدقني ماقلت هالكلام الا لاني عن جد حبيت المنتدى لانه فعلا ثري بالمعلومات الرائعة :clapping:

يارب التأهل ياكريم

#21

السلام عليكم

لما قرأت اللغز عجبني وقلت لازم احله

يمكن انا دخلت متأخر، لكن قمت بحله بدون قراءة الحلول التي ذكرت

MOD.CPP

#22
اقتباس
لم افهم ..؟؟؟

ماذا تقصد ؟

:mellow:

يعني :

أنا قلت نفس الحل . . .

على فكرة عادي ... ما في مشكلة

سلام

في البداية يسخرون منك . . . ثم يهملونك . . . ثم يحاربونك . . . ثم تنتصر

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

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