مشکل در قسمت مرتب سازی برنامه

farhad64

New Member
سلام دوستان این برنامه قسمت مرتب سازیش درست عمل نمیکنه وقتی داده ها 4تا یا کمتر باشه درست مرتب میکنه اما وقتی بیشتر بشن عمل sort رو اشتباه انجام میده.:-?
اگه کسی میدونه اشکال کجاس لطفا یه توضیحی بده.
ممنون!!:rose:
کد:
#include <iostream.h>
#include <conio.h>
void main()
{
struct rec
 {
 int st_no;
 char l_n[15];
 char f_n[15];
 float grade;
 }
 st_rec[25],t;
 float ave,sum,max;
 int m,i,j,k;
 sum=0;
 k=0;
 max=0;
 cout<<"please enter some of student"<<endl;
 cin >> m;
 for(i=0;i<m;++i)
 {
 cout<<"enter name ,family & grade of student"<<endl;
 cout<<i<<" ";
 cin >>st_rec[i].f_n >>st_rec[i].l_n >> st_rec[i].grade;
 sum=sum+st_rec[i].grade;
 if (st_rec[i].grade > max)
 max=st_rec[i].grade;
 if (st_rec[i].grade < st_rec[k].grade)
 k=i;
 }
 ave=sum/m;
 cout<<"average of class: "<<ave<<endl;
 cout<<"maximum of grade: "<<max<<endl;
 cout<<"minimum of grade: "<<st_rec[k].grade<<endl;
 for (i=1;i<m;++i)
  for (j=0;j<m-j;++j)
   if (st_rec[j].grade > st_rec[j+1].grade)
    {
     t=st_rec[j];
     st_rec[j]=st_rec[j+1];
     st_rec[j+1]=t;
     }
      for (i=0;i<m;++i)
      {
       cout<<i<<" ";
       cout<<st_rec[i].f_n<<" ";
       cout<<st_rec[i].l_n<<" ";
       cout<<st_rec[i].grade<<" "<<endl;
       }
       getch();
       }
 

the_king

مدیرکل انجمن
سلام دوستان این برنامه قسمت مرتب سازیش درست عمل نمیکنه وقتی داده ها 4تا یا کمتر باشه درست مرتب میکنه اما وقتی بیشتر بشن عمل sort رو اشتباه انجام میده.:-?
اگه کسی میدونه اشکال کجاس لطفا یه توضیحی بده.
ممنون!!:rose:

اشکال ساده از اونه که توضیح خاصی بخواد، شرط حلقه دوم مرتب سازی رو اشتباه نوشتید.
بجای شرط اشتباه j<m-j که ربطی به متغیر i نداره، بایستی از j<m-i استفاده می کردید.

کد:
 for (i=1;i<m;++i)
  for (j=0;j<m-j;++j)

کد:
 for (i=1;i<m;++i)
  for (j=0;j<m-i;++j)
 

جدیدترین ارسال ها

بالا