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

دالة الترتيب ترتب خطأ

بدأه mhraja في 4 يناير 2015 · 1 رد · 1,065 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
int t,h=o no[50];
a=fopen(fopen("c:\\monam.txt","rb");
rewind(a);
if(a==0)
{
printf("error");
getch();
exit(1);
}
fscanf(a,"%d%s%d%d%d",&st.nu,&st.name,&st.arbic,&st.english,&st.c);
while(!feof(a)
{
st.nu==no[h];
h++
fscanf(a,"%d%s%d%d%d",&st.nu,&st.name,&st.arbic,&st.english,&st.c);
}
fclose(a);
for(int i=0;i<h;i++)
for(int j=0;j<h;j++)
if(no[j]>no[j+1])
int temp=no[j];
no[j]=no[j+1];
no[j+1]=temp;
}
for(int r=0;r<h;r++)
{
printf("\n%d",no[r]);
}
printf("\n \t to pack press 0");
scanf("%d",&t);
if(t==0)
getch();
goto w;
}

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 18 مارس 2016 في 14:34 — السبب: إضافة وسم الشيفرة البرمجية

#2

أهلا بك أخي الكريم،

أرجو منك الاعتناء بتنسيق الشيفرة البرمجية

مشكلة البرنامج الذي أرفقته حضرتك في الأسطر التالية:

for(int i=0;i<h;i++)
for(int j=0;j<h;j++)
if(no[j]>no[j+1])
int temp=no[j];
no[j]=no[j+1];
no[j+1]=temp;

والصواب

for(int i=0;i<h;i++)
	for(int j=0;j<h;j++)
		if(no[j]>no[j+1])
		{
			int temp=no[j];
			no[j]=no[j+1];
			no[j+1]=temp;
		}

فعليك أن تضع كامل الشيفرة التي ترغب بتنفيذها عند تحقق الشرك داخل block يحددها قوسا البداية والنهاية {} وإلا فسيتم اعتبار السطر الأول فقط تابعًا للشرط وأما الباقي فلا، بل وسيتم اعتبار السطرين الآخرين في المقطع الذي اقتبسته لك بأنهما خارج حلقتي for أيضًا، ومن ثم سيجد المترجم بأن المتغير temp غير معرف في برنامجك.

على كلّ أنصحك باستخدام الأقواس دومًا، حتى لو كان لديك سطر واحد بعد if أو for 

 

بالتوفيق

1

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