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

أرجو المساعدة من ذوي الخبرة

مغلق
بدأه talal*c في 8 يناير 2002 · 13 رد · 732 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لقد قمت على عمل برنامج مؤخراً بالسي و كل شئ كان على ما

يرام حتى ظهرت لي رسالة الخطأ التي لم أعرف معناها .

وهذه هي:

--------------------Configuration: ..... - Win32 Debug--------------------
Linking...
......obj : error LNK2001: unresolved external symbol _sertch
Debug/......exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

......exe - 2 error(s), 0 warning(s)

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

#2

ممكن تكتب .. الكود ...

أو علىا لأقل ... الجزء اللي طلعت منه المشكله ..... علىا لعموم .. أتوقع إن المشكله قد يكون سببها ...

خطاء في لإدخال( & ) بس ماني متأكد

014.gif
#3

هلا أخوي بطران أشكرك على هذا التجاوب السريع.

عدلت في البرنامج و زبطت واحد من الاخطاء بس طلعلي خطاء غير...

على العموم هذا الخطاء الجديد وبعده موجود الكود اللي يقول البرنامج

إن الخطاء موجود فيه...

 
--------------------Configuration: ..... - Win32 Debug--------------------
Compiling...
......c
D:......c(34) : warning C4244: '=' : conversion from 'double ' to 'float ', possible loss of data
D:......c(88) : warning C4013: 'serch' undefined; assuming extern returning int
D:......c(137) : error C2371: 'serch' : redefinition; different basic types
Error executing cl.exe.

......exe - 1 error(s), 2 warning(s)


وهذا أهو الكود الموجدود به الخطاء

void serch(ptr h,int t,ptr *cur)
{
	*cur=NULL;
	printf("nEnter The Ard No: ");
	scanf("%d",&t);

		while((h!=NULL) && (*cur==NULL))
		{
			if(h->r.no_ard==t)
				*cur=h;
			else h=h->next;
		}
}

وهذا الكود الموجود به الانذار الثاني

void del_target(ptr *h, int t)
{
	ptr cur;
		serch(*h,t,&cur);
		if(cur==NULL)  printf("nSory target not found...");
		else
		{
			if(cur==(*h))
				del_first(h);
			else
			{
				if(cur->next==NULL)
					del_last(h);
				else
				{

					cur->prev->next=cur->next;
					cur->next->prev=cur->prev;
					free(cur);
				}
			}
		}
}

طبعاً الـ h abd cur دبل لنك لست من نوع ptr و تعريفها موجود

في هذه الوصلة

http://www.arabteam2000.com/vb/showthread....=&threadid=6669

وشاكرين مقدماً....................;)

#4

السلام عليكم

الخطأ ربما للسبب التالي

تعريف الدالة serch عند التصريح (declaration) بها يختلف عنه عندما كتبت جسم الدالة

مثلا

//declartion
void func(int)
.
.
.
int func(int)
{
....
}

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#5

الدالة ما سويت لها تصريح أصلاً (كاتب الدالة قبل الـ main)

يعني ما فيها أي خطاء.

وشاكرين مقدماً,,,

#6

السلام عليكم

ملحوظة خارج الموضوع

"يفضل" ان تقوم بتصريح جميع الدوال قبل main ثم تكتب مضمون الدوال بعد main وهذه هي الطريقة المثلى التي يتبعها مبرمجي الـ C .

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

لو ترسل الكود كاملا ربما اقوم بمساعدتك .

tmaa@263.net

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#7

أهلا .. بك أخوي طلال...

بعد نظره سريعه على الكود اللي أنت حاطه .. أنا ما اتضح لي .. شيء .. وما استطعت .. اسوي له كومبايل .. ولا أن أعرف المناطق اللي .. الكومبايلر .. مطلع لك فيها .. أخطاء .. لأنك. ما وضعت الكود كامل ....لذا... آمل كما .. قال .أخي ..أنا تضع الكود هنا .. لنحاول .. معك تصحيحه .. وتعم الفائده جميع المطلعين على المنتدى - عموما .. اللينك ليست كذا مشاكلها - لا يضيق صدرك .. محلوله ..

أنا بإنتظار الكود .......

014.gif
#8

هلا أخواني بالنسبه للمشكله الحمد لله وجدت حلها

أطلعني عليها الأستاذ بو ليلى في منتدى الموسوعة.

وأنتم ما قصرتم بعد الله يطول بأعماركم.

وبالنسبه للبرنامج هو برنامج لمكتب عقار مبدئي (ما بعد خلصت منه)

و هذا هو الكود بس حبيت أنبه إن المتغيرات أسماء عربيه مكتوبه بالانجليزي.

و توني ما بعد أضفت شغل الملفات (للحفظ) و لا كلمة السر ...إلخ

يعني توه .ولما بيكمل إن شاء الله بأحطه هنا.

وأرجو أن تعم الفائده.

 
#include
#include
#include
//-----------------------------------------------------------------------------------
typedef struct
{
	int area;
	int no_ard;
	int soom,had;
	/* int sh[3]; */
	char malek[25];
	float sae;
}ard;
//-----------------------------------------------------------------------------------
typedef struct node
{
	ard r;
	struct node *next;
	struct node *prev;
}NT,*ptr;
//-----------------------------------------------------------------------------------
void serch(ptr h,int t,ptr *cur)
{
	*cur = NULL;
	printf("nEnter The Ard No: ");
	scanf("%d",&t);
	if(h==NULL)
		printf("nSorry no ard ther...");
	else 
	{
		if(h->next==NULL)
		{
			if(h->r.no_ard==t)
				(*cur)=h;
		}

		else
		{
			while((h!=NULL) && ((*cur)==NULL))
			{
				if(h->r.no_ard==t)
					(*cur)=h;
				else h=h->next;
			}
		}
	}
}
//-----------------------------------------------------------------------------------
void read_rec(ard *r)
{   
	printf("nEnter The Number Of ARD: ");
	scanf("%d",&r->no_ard);
	printf("nEnter The Area: ");
	scanf("%d",&r->area);
	printf("nEnter The Soom: ");
	scanf("%d",&r->soom);
	printf("nEnter The Ha'ad: ");
	scanf("%d",&r->had);
	printf("nEnter The Maleek: ");
	gets(r->malek);gets(r->malek);
	(r->sae) = (float)(r->soom) * (0.025);
	printf("nThe Sa'ae Will Be: %.2f",r->sae);
	getch();
}
//-----------------------------------------------------------------------------------
void del_first(ptr *h)
{
	ptr p;

		if(*h==NULL)printf("nSory no list...");
		else
		{
			if((*h)->next==NULL)
			{

				free(*h);
			}
			else
			{
				p=*h;

				(*h)=(*h)->next;
				(*h)->prev=NULL;
				free(p);
			}
		}
}
//-------------------------->>> delete last <<<---------------------------------
void del_last(ptr *h)
{
	ptr p;

		if((*h)==NULL) printf("nSory no list...");
		else
		{
			if((*h)->next==NULL)
			{

				free(*h);
			}
			else
			{
				p=*h;
				while(p->next!=NULL)
					p=p->next;

				p->prev->next=NULL;
				free(p);
			}
		}
}
//-------------------------->>> delete target <<<---------------------------------
void del_target(ptr *h, int t)
{
	char a='n';
	ptr cur;
	cur=NULL;
		serch(*h,t,&cur);
		if(cur==NULL)  printf("nSory Ard Not Found...");
		else
		{
			printf("nAre You Sure That You Want To Delete Ard Number: %d",cur->r.no_ard);
			a=getchar();a=getchar();
			if(a=='Y'|| a=='y')
			{
				printf("nThe Ard Number %d Has Been Deleted...",cur->r.no_ard);
				if(cur==(*h))
					del_first(h);

				else
				{
					if(cur->next==NULL)
						del_last(h);

					else
					{

						cur->prev->next=cur->next;
						cur->next->prev=cur->prev;
						free(cur);

					}
				}
			}
		}getch();
}
//-----------------------------------------------------------------------------------
void ins_last(ptr *h,ard e)
{

	ptr p,q;

	p=malloc(sizeof(NT));
	p->r=e;
	p->next=NULL;
		if((*h)==NULL)
		{
			(*h)=p;
			(*h)->prev=NULL;
		}
		else
		{
			q=*h;
			while(q->next!=NULL)
				q=q->next;
			q->next=p;
			p->prev=q;
		}

		getch();
}
//---------------------------------------------------------------------------
void new_D(ptr *h)
{
	*h=NULL;
}
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
dis_ard(ptr cur)
{
	system("cls");
	printf("n*The No Of Ard Is: %d",cur->r.no_ard);
	printf("nn*The Area Is: %d",cur->r.area);
	printf("nn*The Soom Is: %d",cur->r.soom);
	printf("nn*The Ha'ad Is: %d",cur->r.had);
	printf("nn*The Male; Is: %s",cur->r.malek);
	printf("nn*The Sa'ae Is: %.2f",cur->r.sae);
	getch();
}
//----------------------------------------------------------------------------
dis_all(ptr h)
{
	while(h!=NULL)
	{
		dis_ard(h);
		h=h->next;
	}
}
//----------------------------------------------------------------------------
int menu(void)
{
    int c;

  do{
	  system("cls");
  printf("nntt+------------------------------------------------------+");	
  printf("ntt|**********************  ARADY  ***********************|");
  printf("ntt|******************************************************|");
  printf("ntt|******************************************************|");
  printf("ntt|***********   1) ADD ARRD.                 ***********|");
  printf("ntt|***********   2) DELETE ARRD.              ***********|");
  printf("ntt|***********   3) SERCH FOR AN ARRD.        ***********|");
  printf("ntt|***********   4) DISPLAY ALL.              ***********|");
  printf("ntt|***********   5) EXIT.                     ***********|");
  printf("ntt|******************************************************|");
  printf("ntt|******************************************************|");
  printf("ntt|******************************************************|");
  printf("ntt+------------------------------------------------------+n");

  printf("nn **PLLEASE ENTER YOUR CHOIS: ");
  scanf("%d",&c);
  }while(c<1 && c>4);
  return c; 
}
//----------------------------------------------------------------------------
main()
{
	int c,t;
	ptr h,cur;
	ard r;
	t=0;


	new_D(&h);
	c=menu();
	while(c!=5)
	{
		    switch©
			{
				case 1:	
						read_rec(&r); 
						ins_last(&h,r);
						break;

				case 2: del_target(&h,t);
					    break;

				case 3: serch(h,t,&cur);
						if(cur!=NULL)
						dis_ard(cur);
					    break;

				case 4: dis_all(h);
					    break;

				case 5: break;

				default: printf("n**RONG CHOIS...");
			}
			c=menu();
	}
}
#9

سلام

بعد عمل compile للكود باستخدام vc6 وجدت 1error ,4warnning

errors

error C2440: '=' : cannot convert from 'void *' to 'struct node *'

Conversion from 'void*' to pointer to non-'void' requires an explicit cast

void ins_last(ptr *h,ard e)
{

	ptr p,q;	
	p=malloc(sizeof(NT));
       // يغير كالاتي
      p=(ptr)malloc(sizeof(NT));
...
}

warnning

(1) warning C4244: '=' : conversion from 'double' to 'float', possible loss of data

void read_rec(ard *r)
{
...
(r->sae) = (float)(r->soom) * (0.025);
//يغير كالاتي
(r->sae) = ((float)(r->soom) * (0.025));
...
}

(2,3,4)

الدوال dis_ard , dis_all , main حيث انها لا تقوم بارجاع اي قيمة اضف الى تعريفها void

هذا من الناحية القواعدية فقط , عند التنفيذ هناك بعض الاخطاء والامور التي يجب الانتباه لها ( عند الادخال مثلا ).

شد حيلك اخ طلال ...

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#10

أشكرك يا أخ temaaa

ولكن أنا عن

ما جربنه على visual c++ copiler كان شغل ميه الميه

و بإنذار واحد فقط.

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

#11

السلام عليكم

ارجو انك ما تكون فهمتني غلط اخي العزيز .:)

(ان كان الاخوة في المنتدى لا يتقبلون الا اراء المشرفين فقط , فأعد بعدم ابداء أي رأي بعد ذلك . لا اقصدك اخي طلال بهذا الكلام:) ).

كان قصدي مما كتبت انه اذا صادف احد الاخوان مثل تلك المشاكل ان يقوم بتعديلها بالصورة التي ذكرتها ان لم اكن مخطئا :D .

فبالنسبة للخطأ الذي صادفته كان بسبب اني قمت بـ compile الكود على شكل ++C كود . اما بالنسبة لـلــ c فلن يخبرك الـ compiler بوجود خطأ .

ولكن يفضل كتابة القيمة المرجعة من الدالة malloc كما ذكرت في التعديل - هذا في رائي الخاص , وفي ما قرأت من كتب او اكواد هو بتلك الصورة :) -.

بالنسبة للانذار Function should return a value فان اي compiler تستخدمه سوف يشير الى هذا الانذار ,

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

وهذا هو نوع من انواع الـ bugs التي قد نغفل عنها .

في بعض البرامج ان يتعدى الرقم المدخل الحد المسموح قد يؤدي الى اخطاء فادحة في البرنامج .

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

( في البرامج الضخمة مثل هذه الاشياء الانتباه لها ضروري جدا , كذلك عندما تعطي برنامجك للدكتور المشرف عليك يفضل ان تنتبه لها - و لو ان اغلب الدكاتره المشرفين لا ينظر حتى للكود المكتوب :( )

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#12

أخوي

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

(ان كان الاخوة في المنتدى لا يتقبلون الا اراء المشرفين فقط , فأعد بعدم ابداء أي رأي بعد ذلك . لا اقصدك اخي طلال بهذا الكلام ).  

أنت الظاهر إنك فهمتني غلط :D

انا كنت مسافر وكنت في أنتر نت كافية وكنت مستعجل

عشان كذا ما وضحت وجهت نظري زين

أنا أقصد كيف حصل خطاء عندك و عندي لا ؟

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

ومن قال لك ما أبي رأيك ؟

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

تبدي رأيك وما عليك من أحد.

وبالنسبه للبرنامج هو في الطور الابتدائي جدا جدا كان قصدي الفكره

بس.وبالنسبه للشرط التأكدي أنا من أكثر الناس المهتمين به

وأحرص على أن يكون متوفر.

وأتمنى من كل قلبي أنك ما تكون زعلت علي ok ;)

بس الحق علي لأني ما وضحت وجهت نظري زين.

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

#13

السلام عليكم

هلا اخي طلال

انا ما زعلان و لا شئ من هذا القبيل . وقد اشرت في كلامي :---

" لا اقصدك اخي طلال بهذا الكلام ", فعلا ما كنت اقصدك لانك ما قلت اي شئ يزعل .

:) :) :)

وفق الله الجميع

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#14

فعلاً أتمنى ذلك...

وما حصل إلى الخير,,,

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

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