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

خوارزمية صعبة جمع عددين ثم مضاعفة العملية

مغلق
بدأه superboy في 8 أغسطس 2006 · 19 رد · 3,443 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و و جدت مسألة و

لم أستطع شرحها فاضطررت لوضعها

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

أراد الفلاح في أحد الأيام أن يحسب أرباحه فلاحظ عن طريق المصادفة أن أرباحه ليست أرقاماً عشوائية، وإنما تخضع للقاعدة التالية:

الأرباح في يوم معين تساوي مجموع الأرباح في اليومين السابقين، أي أنه إذا ربح في أحد الأيام 20 وفي اليوم التالي له 30 ، فإنه سيربح في اليوم الثالث (50) وفي اليوم الرابع (80) وهكذا.

أي أننا نستطيع أن نكتب الأرباح كتابع رياضي كالتالي:

ربح(يوم) = ربح(يوم-1) + ربح(يوم-2)

إذا علمت أن الفلاح ربح في اليوم الأول 20 وفي اليوم الثاني 30 ، المطلوب منك حساب أرباح الفلاح في يوم معين.

يجب على البرنامج قراءة عدد وحيد من الدخل هو رقم اليوم المطلوب. مثلاً:

4

أي يجب حساب الأرباح في اليوم الرابع.

بحساب الأرباح في اليوم الرابع بالطريقة السابقة نجد أنها تساوي 80 ، فيكون الخرج بالشكل:

80

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

مع العلم أن رقم اليوم الذي سيطلب منك حساب الربح فيه لن يتجاوز 1000000

للرفع

#2

اعتقد نفس فكرة فيبوناتشي

var  day1 ,day2 ,dayn,i,n:integer
begin
readln(n,day1,day2);
i:=2;
while  i<=n do
	   begin
	   dayn:=day1+day2;
	   day1:=day2;
	   day2:=dayn;
	   inc(i)	 ;
	   end;
writeln(dayn);
end.

جرب الكود السابق

تم تعديل هذه المشاركة بواسطة romanof في 9 أغسطس 2006 في 00:15

الحمد لله الذي هدانا لهذا وماكنا لنهتدي لولا ان هدانا الله

#3

شكله سؤال واجب

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#4

شكرا لك سأجرب الكود الحقيقة هو سؤال ورد في أولمبياد سورية للرياضيات للفئة الثالثة و أن لسا فئة ثانية

سنة القادمة رح صير فئة ثالثة

و عم حضر

شكرا فهمت معنى شكرا جزيلا لك لأنك و ضعته بلغة ثاني مشابهة ل c++

لأني شغلت مخي القليل لحولتو

#5

حولتو و الكود اشتغل و هو

#include "stdafx.h"
#include "iostream.h"

int main()
{
	double dayn,day1,day2,num,y;
	day1=20;
	day2=30;
	cin>>num;
	if (num== 1)
	{
		dayn=day1;
	}
	else if(num==2)
	{
		dayn=day2;
	}
	else
	{
		num=num-3;
		for(y=0;y<=num;++y)
		{
			dayn=day1+day2;
			day1=day2;
			day2=dayn;
		}
	}

	cout<<dayn<<"\n";

	return 0;
}

هو بc++

#6
long fib (int day)
{
if (day == 0) 
return 20;
else
if (day == 1)
return 30;
else
return fib(day-1) + fib(day-2);
}

تم تعديل هذه المشاركة بواسطة The Tornado في 10 أغسطس 2006 في 14:10

MAAAAAAAAAAAAAAAAAAAAAAAC

#7

شكرا للكود لكن ما معنى

fib

اعتقد من كلمة فيبوناتشي

#8

شكرا جزيلا لك خورزمية ولا أروع تدل على الذكاء و الكود كاملا

#include "stdafx.h"
#include "iostream.h"
long fib (int day);
int main()
{
	int y;
	cin>>y;
	cout<<fib(y-1);
	return 0;
}

long fib (int day)
{
if (day == 0) 
return 20;
else
if (day == 1)
return 30;
else
return fib(day-1) + fib(day-2);
}

;) ;) ;) ;) ;) ;) :P

#9

هو بصراحة فيبوناتشى هو أول مثال درسناه لبيان عدم جدوى ال recursion فى حله لتكرار الحسابات كثيرا كمقدمة لل Dynamic Programming. :)

#10

ما معنى هذا لم أفهم شيئ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

#11

فيبوناتشي :)

ما يحتاج

#12

لا أفهم!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

#13

متسلسلة فيبوناتشي :)

ابحث عنها بالنت راح تحصل الكود بسيط :)

متسلسلة فيبوناتشي نفس الكلام : 1,2,3,5,8,13....

هذي هي فيبوناتشي بس ما يحتاج فهم

#14

شكرا لك

#15

لماذا كل هذا يكفي فقط

Private Sub Command1_Click()
j = 20
k = 30
For i = 3 To Val(Text1)
r = k
k = j + k
j = r
Next i
Text2 = k
End Sub

______________________________________________

" حَافِظُوا عَلَى الصَّلَوَاتِ وَالصَّلاةِ الْوُسْطَى وَقُومُوا لِلَّهِ قَانِتِينَ "

______________________________________________

تحرير بواسطة 'بنهاشم منصوري'

#16

شكرا لك على الدر لكن ياحتجته في سي++

#17
#include<stdio.h>
void main()
{
int n,i,j,k,r;
j = 20;
k = 30;
printf("entrer le nombre de jours   :");scanf("%d",&n);
if (n==1){k=j;}
for(i=3;i<=n;i++)
{
r = k;
k = j + k;
j = r;
}
printf("%d\n",k);
}

______________________________________________

" حَافِظُوا عَلَى الصَّلَوَاتِ وَالصَّلاةِ الْوُسْطَى وَقُومُوا لِلَّهِ قَانِتِينَ "

______________________________________________

تحرير بواسطة 'بنهاشم منصوري'

#18

شكرا لك هل هذا الكود من عندك أم من منتدى فرنسي ؟؟؟

#19

ههههههههههههههههههههههههههههههههههه

من عندي و عملته في اقل من 15 دقيقة

______________________________________________

" حَافِظُوا عَلَى الصَّلَوَاتِ وَالصَّلاةِ الْوُسْطَى وَقُومُوا لِلَّهِ قَانِتِينَ "

______________________________________________

تحرير بواسطة 'بنهاشم منصوري'

#20

تستطيع استعمال الدالة التراجعية

function a(n:longint):longint;
begin
if n>2 then a:=a(n-1)+a(n-2) else  a:=1;
end;

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

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

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

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

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

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