با سلام
من فكر مي كنم در منطلق برنامه يه كم مشكل هست.
1- اولا اگه يه آرايه از كلاسها ايجاد كنيد پس بايد براي مرتب كردن آن هم تابع (sort)شما بايد يه پارامتر ورودي داشته باشه كه آرايه اي از كلاستون رو دريافت كنه نه آرايه اي از عدد. مثل:
#include <iostream>
#include <conio.h>
using namespace std;
#define Max 4
class Student{
public :
int Avg;
};
Student *Array_Of_Stu = new Student[Max];
void Insert();
void Sort(Student *);
int main(void)
{
Insert();
Sort(Array_Of_Stu);
getch();
return 0;
}
void Insert()
{
for(int i = 0 ; i < Max; i++)
{
cout<<"\n---------- Enter Avg Of Student : ";
cin>> Array_Of_Stu[i].Avg;
}
}
void Sort(Student* a)
{
int i, j, x;
for(i = 0; i < Max - 1; i++)
for(j = i + 1; j < Max; j++)
if (a[i].Avg>a[j].Avg)
{
x = a[i].Avg;
a[i].Avg = a[j].Avg;
a[j].Avg = x;
}
cout<<a[Max-1].Avg;
}
2- اگه مي خواين كه تابع sort شما آرايه اي از عددها رو بگيره و مرتب كنه كه بايد تعريف كلاستون رو عوض كنيد.مثل:
#include <iostream>
#include <conio.h>
using namespace std;
#define Max 4
class Student{
public :
int Avg[Max];
};
Student list;
void Insert();
void Sort(int[]);
int main(void)
{
Insert();
Sort(list.Avg);
getch();
return 0;
}
void Insert()
{
for(int i = 0 ; i < Max; i++)
{
cout<<"\n---------- Enter Avg Of Student : ";
cin>> list.Avg[i];
}
}
void Sort(int a[])
{
int i, j, x;
for(i = 0; i < Max - 1; i++)
for(j = i + 1; j < Max; j++)
if (a.Avg[i]>a.Avg[j])
{
x = a[i].Avg;
a.Avg[i] = a.Avg[j];
a.Avg[j] = x;
}
cout<<a.Avg[Max-1];
}
در برنامه هاي بالا اشتباه شما در موارد زير است:
در خطوط 8و 11 و14و 19و 29 و 33 و 38و 40و 41و 42و 44
هرگاه نمونه ي جديدي از كلاس را ايجاد و به تابع ارسال كنيد تمام اطلاعاتي كه در نمونه ي قبلي ذخيره شده است پاك مي شود.