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

كود برنامج حساب عدد أفراد الجيل الواحد

بدأه yahya91 في 26 مارس 2010 · 7 رد · 670 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندما حاولت في كتابة كود يحسب عدد أفراد الكائن البحري المرجان و الذي يوجد نوع من أنواعه يتكاثر كل فرد منه بثلاثة فروع في حال كان رقم الجيل زوجي بنما الجيل الفردي العدد بفرعان (لاحظ الرسمة أدناه )

post-217808-12696086348867_thumb.jpg

والبرنامج يطاب من المستخدم أن يدخل رقم الجيل ليحسب له البرنامج باستخدام التوابع العودية عدد الأفراد الكلي معتمداً على الخوارزمية التالية :

عدد الأفراد الكلي=رقم الجيل*3 +عدد أفراد الجيل السابق .//في حال كان زوجي

عدد الأفراد الكلي=رقم الجيل*2 +عدد أفراد الجيل السابق .//في حال كان فردي

فلو كان رقم الجيل 2 كان الحل كالآتي:

عدد الأفراد الكلي= 2*3+عدد أفراد الجيل أول

عدد الأفراد الكلي= 2*3+1*2+الأصل(الفرع الأصلي)

عدد الأفراد الكلي= 2*3+1*2+1

و هذه محاولتي و لكن ظهر لي فيها خطأين لم أسمع بهما من قبل و هما

LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main

Debug/Cpp7.exe : fatal error LNK1120: 1 unresolved externals

#include<iostream.h>
int balgm(int);
void mian()
{
	int gen,result; 
	cout<<"enter the number of generation"<<endl ; 
	cin>>gen ;
	cout<<"result="<<balgm(gen)<<endl; 
}
int balgm(int a)
{	
		if(a==0)
		return 1;
	else if(a==1)
		return 2;
	else if(a%2==0)
	return a*3+balgm(a-1);
else if(a%3==0)
	return a*2+balgm(a-1);
}

تم تعديل هذه المشاركة بواسطة yahya91 في 26 مارس 2010 في 16:09

#2

أخي الكريم : الخطأ أن الدالة balgm لا يوجد بها Return افتراضي . والسبب استخدام الشرط if و الشرط else if ولكن ماذا لو لم تتوافق معطيات الدالة مع هذه الشروط بماذا ستعود الدالة ؟

لذا يفضل ان تقوم باعداة افتراضية مثلا return 0 في حالة عدم توافق

الخطأ الثاني . ليس خطأ وانما تحذير من الكومبايلر يفيد باستخدامك المتغير resault بدون ان تستخدمه اطلاقا في البرنامج .. يعني حجز موقع على الذاكرة بدون استخدام ( طمع يعني ) خليك انسان طيب ولا تشيل إلا قدر الحاجة .

الكود بعد التعديل .

#include<iostream.h>
int balgm(int);
void mian()
{
		  int gen;
		  cout<<"enter the number of generation"<<endl ;
		  cin>>gen ;
		  cout<<"result="<<balgm(gen)<<endl;
}
int balgm(int a)
{
		 if(a==0)
					 return 1;
		  else if(a==1)
					 return 2;
		  else if(a%2==0)
		  return a*3+balgm(a-1);
		 else if(a%3==0)
		  return a*2+balgm(a-1);
		 else
		 return (0);
}

تحياتي

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

#3

شكراً أخي العماني كلامك صحيح بشأن القيمة المعادة الافتراضية.

و لكن المستخدم أصلاً لن يدخل رقم الجيل سلبي مثلاً أو غير صحيح (Int) لذلك لم أراعي هذه الحالة و لنفرض أن هذا هو الخطأ

فإن رسالتي الخطأ (و ليس التحذير ) مازالتا تظهران لي:

LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main

Debug/Cpp7.exe : fatal error LNK1120: 1 unresolved externals

تم تعديل هذه المشاركة بواسطة yahya91 في 26 مارس 2010 في 16:35

#4

لا اعلم ماهو الكومبايلر المستخدم عندك .. ولكن جرب ان تقوم بعمل الكود في ملف جديد .

انا استخدم turbo وايضا .net وجميعها يعمل فيها بدون اي مشكلة .

تحياتي

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

#5

أنا أستخدم microsoft visual

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

اقتباس
Error LNK2001: unresolved external symbol _main

An unresolved external occurs when some code has a call to a function in another module and the linker can't find that function in any of the modules or libraries that you are currently linking to.

و هذا يعني أن اللينكر(و كما أعلم أنه جزء من الكومبايلر ) لم يجد الدالة المستدعاة .

#6
yahya91 كتب:

أنا أستخدم microsoft visual

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

و هذا يعني أن اللينكر(و كما أعلم أنه جزء من الكومبايلر ) لم يجد الدالة المستدعاة .

جرب ان تضع الدالة بأكملها قبل main بدون استخدام function prototype. لعلها تحل مشكلة الكومبايلر لديك .

تحياتي

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

#7
اقتباس
جرب ان تضع الدالة بأكملها قبل main بدون استخدام function prototype. لعلها تحل مشكلة الكومبايلر لديك .

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

#8

main mian

tvquran_6.gif

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

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

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

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

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