سوال در مورد sorting در زبان C
سلام من یه پروژه ی کتابخونه دارم که باید توی یه قسمتش این قابلیتو اضافه کنم که اسامی اعضا و کتاب ها رو از راه های مختلف مرتب کنه و نمایش بده...مثلا اعضا رو هم بتونه بر اساس شماره عضویت مرتب کنه و هم نام خانوادگی و کتاب ها رو هم بر اساس نام نویسنده و هم نام خود کتاب...صفحه 139 کتاب جعفرنژاد یه مثال واسه مرتب کردن نام خانوادگی داره ولی توی اون مثال برای اسم ها آرایه 2 بعدی تعریف کرده ولی من 1 بعدی تعریف کردم...میشه کمکم کنید این قسمتو بنویسم؟
برای اطلاعاتون برنامم به زبان c هست
نقل قول: سوال در مورد sorting در زبان C
شما مشخص کن با چه روشی می خواهی این لیست را مرتب کنی
ولی ساده ترین کار استفاده از یک آرایه تمپ هست که اول کل اطلاعات را به اون منتقل کنی تا مرتب شد دوباره روی اولی بنویسی که یک بعدیه
نقل قول: سوال در مورد sorting در زبان C
اون قسمت مرتب کردن رو نوشتم الان برنامه اجرا میشه ولی خیلی جاهاش اشکال داره...من دارم یکی یکی دارم گزینه های منو رو بررسی میکنم...رسیدم به گزینه ی سوم ولی نمیدونم چرا وقتی به این گزینه میرم دیگه نمیتونه خارج بشه...منظورم اینه که برمیگرده به منو ولی دیگه از تو منو خارج نمیشه...یه نگاه بش بندازید لطفا...
پدرم درومد پای این پروژه....http://forum.p30world.com/images/New...20%2840%29.gif
http://rapidshare.com/files/345437430/LIBRARY.CPP.html
نقل قول: سوال در مورد sorting در زبان C
int menu(void){
char s[10];
int c;
printf("1)Add a new book:\n");
printf("2)Add a new member:\n");
printf("3)Edit memeber's informatin:\n");
printf("4)Edit information of books:\n");
printf("5)remove a book:\n");
printf("6)Remove a member:\n");
printf("7)Display lis of books:\n");
printf("8)Display member's list:\n");
printf("9)Search for members:\n");
printf("10)Search for books:\n");
printf("11)Load memeber file:\n");
printf("12)Load book file:\n");
printf("13)Borrow book:\n");
printf("14)Display list of borrowed books:\n");
printf("15)Add an assistant:\n");
printf("16)exit\n");
printf: printf("Please enter your choose between 1-16:\n");
gets(s);
c=atoi(s);
if(c<1||c>16)
goto printf;
else{
clrscr();
return(c); }
}
void editm(void){
int n,i,j,t,k;
first: printf("Enter member's ID:\n");
scanf("%d",&n);
for(j=0;j<MAX;j++){
if(n==mem_info[j].memno)
goto last;
if(mem_info[j].memno!=n){
edit:printf("wrong ID!\n1.another member\n2.back");
scanf("%d",&t);
if(t==2){
clrscr();
menu();}
if(t==1)
goto first;
else
printf("wrong number");
goto edit; }
}
last: printf("enter new member name:\n");
scanf("%s",mem_info[j].name);
printf("enter new family name:\n");
scanf("%s",mem_info[j].family);
printf("enter new address:\n");
scanf("%s",mem_info[j].address);
printf("enter telephone number:\n");
scanf("%d",&mem_info[j].phno);
printf("enter new ID:");
scanf("%d",&mem_info[j].memno);
printf("press any key...");
getch();
clrscr();
goto edit; }
700خطه من اینجارو که مشکل داشت گذاشتم
نقل قول: سوال در مورد sorting در زبان C
سلام،
ببخشید این کدی که گذاشتین مربوط به sort میشد !؟:متفکر:
خیلی خسته نباشین که 700 خط کد نوشتین... من کدتون رو نگاه کردم، دستورات printf بسیار زیاد بودن! هیچ جوره نمیتونین این چاپ کردن ها رو کم کنین !؟
ویرایش : کد مربوط به sort کردنتون رو دیدیم. یه struct مجموعه ای از فیلدهاست نه فقط یه فیلد اسم. منظورم اینه که شما فقط نباید فیلد name دوتا متغیر رو با هم عوض کنین و باید کل محتویات 2 تا struct رو با هم عوض کنین. یه سوال دیگه هم برام پیش اومد این بود که آیا تعداد کتابها رو داریم یا نه !؟
نقل قول: سوال در مورد sorting در زبان C
نقل قول:
نوشته شده توسط
qwerty11
سلام،
ببخشید این کدی که گذاشتین مربوط به sort میشد !؟:متفکر:
خیلی خسته نباشین که 700 خط کد نوشتین... من کدتون رو نگاه کردم، حداقل نصف خطها دستورات printf بود! هیچ جوره نمیتونین این چاپ کردن ها رو کم کنین !؟
نخیر کامل مطلبو بخونید اینایی که گذاشتم مربوط به sort نیست....مربوط به ویرایش اطلاعاته وقتی وارد این تابع میشم دیگه بیرون نمیاد...فعلا مشکل اینه
اون دستور printf ها هم نمیشه کم کرد...بالاخره باید استاد یا کاربر بفهمه چی کار کنه یا نه؟!
آدم با این حرفا خستگی به تنش میمونه که...10 روزه پای این پروژه ام آخرش یکی درمیاد اینطوری میگه...:گریه:
نقل قول: سوال در مورد sorting در زبان C
نقل قول:
اون دستور printf ها هم نمیشه کم کرد...بالاخره باید استاد یا کاربر بفهمه چی کار کنه یا نه؟!
آدم با این حرفا خستگی به تنش میمونه که...10 روزه پای این پروژه ام آخرش یکی درمیاد اینطوری میگه...
من چه حرف بدی زدم !؟ الآن مثلاً گفتم printf زیاد داری خستگی تو تنت بیشتر شده !؟ printf هم جزء دستورات برنامه نویسیه!!! من فقط به خاطر خودتون گفتم که کدتون یکم کمتر بشه ! بگذریم...
خط آخر چرا goto edit گذاشتین دوباره !؟ فکر کنم به جای اون باید return میزاشتین
نقل قول: سوال در مورد sorting در زبان C
فکر کنم مشکلت حل بشه اگر یک نقطه end: آخر تابع در نظر بگیری و وقتی برک شد بری اونجا تا از تابع خارج بشه
نقل قول: سوال در مورد sorting در زبان C
نقل قول:
نوشته شده توسط
qwerty11
سلام،
ویرایش : کد مربوط به sort کردنتون رو دیدیم. یه struct مجموعه ای از فیلدهاست نه فقط یه فیلد اسم. منظورم اینه که شما فقط نباید فیلد name دوتا متغیر رو با هم عوض کنین و باید کل محتویات 2 تا struct رو با هم عوض کنین. یه سوال دیگه هم برام پیش اومد این بود که آیا تعداد کتابها رو داریم یا نه !؟
یه سوال کد مربوط به sort منو از کجا دیدید؟ اون فایلی که تو رپید شیر آپلود کردم که باز نمیشه بقیه ی کدهایی هم که گذاشتم به sort مربوط نیست:لبخند:؟؟؟؟حالا به هر صورت میشه بیشتر توضیح بدید؟ یکمی نفهمیدم:لبخند::متفکر:
برای تعداد کتابها هم یه ماکزیمم در نظر گرفتم که 100 تا هست...تعداد دقیق رو نداریم فقط میدونیم حداکثر 100 تا میتونه بگیره
نقل قول: سوال در مورد sorting در زبان C
من دیروز اون فایلی رو که تو رپیدشیر آپ کردین دیدم! الآنم یکم تست کردم، بازم میشه دانلودش کرد.
شما باید حتماً یه متغیر عمومی برای تعداد کتابها و تعداد کاربرها در نظر بگیرین تا از بوجود آمدن مشکلات احتمالی جلوگیری کنین. اما تو این مسئله ی خاص اگر از لیست پیوندی استفاده میکردین بهتر بود. درباره ی سورت کردن یه آرایه از struct ها مثلاً بر اساس فیلد ID:
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(strct[i].ID>strct[j].ID){
strct temp=strct[i];
strct[i]=strct[j];
strct[j]=temp;
}
}
}
نقل قول: سوال در مورد sorting در زبان C
نقل قول:
نوشته شده توسط
qwerty11
من دیروز اون فایلی رو که تو رپیدشیر آپ کردین دیدم! الآنم یکم تست کردم، بازم میشه دانلودش کرد.
شما باید حتماً یه متغیر عمومی برای تعداد کتابها و تعداد کاربرها در نظر بگیرین تا از بوجود آمدن مشکلات احتمالی جلوگیری کنین. اما تو این مسئله ی خاص اگر از لیست پیوندی استفاده میکردین بهتر بود. درباره ی سورت کردن یه آرایه از struct ها مثلاً بر اساس فیلد ID:
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(strct[i].ID>strct[j].ID){
strct temp=strct[i];
strct[i]=strct[j];
strct[j]=temp;
}
}
}
structure رو باید با strcpy کپی کنم دیگه آره؟فکر نمیکنم همینطوری با این دستور(for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(strct[i].ID>strct[j].ID){
strct temp=strct[i];
strct[i]=strct[j];
strct[j]=temp;
}
}
}) انجام بشه؟
نقل قول: سوال در مورد sorting در زبان C
نه. همینجوری که من نوشتم درست انجام میشه. از یه ورژن c به بعد میشه دو تا struct رو مساوی هم قرار داد. یعنی دقیقاً با عمل = .
strcpy برای کپی کردن یه رشته تو یه رشته دیگه هستش و در مورد struct کاربردی نداره.