PDA

View Full Version : مشکل در برنامه دریافت مشخصات دانشجو



alivazirinia
یک شنبه 22 اردیبهشت 1392, 21:28 عصر
سلام من برنامه زیر نوشتم میخوام بهش مرتب سازی به روش حبابی بر اساس معدل و نام و بعد جستجو بر اساس نام - نام خانوادگی - شماره دانشجویی اضافه کنم لطفا راهنمایی کنید با سپاس


#include <iostream>
#include <conio.h>
using namespace std;


class student {
public:
char name[10];
char family[20];
float ave;
char st_num[10];
void getinfo(student st[],int n);
void bubble(float ave);
void student :: sort (student st[],int n);
void printinfo(student st[],int n);
};

void student :: getinfo (student st[],int n)
{
int i;
for (i=0;i<n;i++)
{
cout<<"\n";
cout<<"enter name["<<i+1<<"]: ";
cin>>st[i].name;
cout<<"enter family["<<i+1<<"]: ";
cin>>st[i].family;
cout<<"enter avrage["<<i+1<<"]: ";
cin>>st[i].ave;
cout<<"enter student number["<<i+1<<"]: ";
cin>>st[i].st_num;
cout<<"\n";
}
}
void student :: sort(student st[],int n)
{
int i,j;
student temp;
for(i=2;i>=0;i--)
{
for(j=0;j<i;j++)
if (st[j].ave<st[j+1].ave)
{
temp= st[j];
st[j]=st[j+1];
st[j+1]=temp;
}
}
}
void student :: printinfo(student st[], int n)
{
int i;
cout<<"\n";
cout<<"name family avrage student number\n\n";
for(i=0;i<n;i++)
{
cout<<"\n";

cout<<st[i].name<<"\t";
cout<<st[i].family<<"\t";
cout<<st[i].ave<<"\t";
cout<<st[i].st_num<<"\t";
cout<<endl;
cout<<"\n";
}
}


int main()
{
student st[2],s;
int n;
n=sizeof (st)/sizeof(student);



int menu();
int m;

while (1)
{

m = menu();
switch (m)
{
case 1:s.getinfo(st,n);
break;
case 2:s.printinfo(st,n);
break;
case 3:s.sort(st,n);
break;
case 4:return 0;
default:
cout<<"\n";
cout<< "yek adad az 1 ta 4 vared konid \n";
cout<<"\n";
getch();
}
}
}
int menu()
{
int x;
cout<<"\n";
cout<<"1-vared kardan moshakhasat\n";
cout<<"2-namayesh moshakhasat\n";
cout<<"3-sort \n";
cout<<"4-exit\n\n";
cout<<"yeki az adad x(1.2.3.4) vared konid = ";
cin>>x;
cout<<"\n";
return x;
}

alimahboobi
یک شنبه 22 اردیبهشت 1392, 23:54 عصر
خب مسلما الگوریتم این برنامه به صورت زیره :
procedure bubbleSort(A: list of sortable items) defined as: do swapped:= false for each i in 0 to length(A) - 2 inclusive do: if A[ i ]> A[ i + 1 ] then swap(A[ i ], A[ i + 1 ]) swapped:= true end if end for while swapped end procedure
که شما در مرتب سازی sort استفاده کردید ولی نکته اینجاست که باید بعد از تغییر میانگین و مرتب کردنشون باید اسم اون فرد که معدل اش رو می خواهیم بگیم هم توی مرتب کردن swap بشه