吐血求教??急
这是我的一个成绩排序的程序,我用define决定studnet数组的大小,写入文件,然后读出,排序
再写入文件,并显示。
但是老师要求用new动态分配内存,并用外排序,我不知怎么做,请指教?
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
#include<iomanip.h>
#include<string.h>
#define M 100
struct studnet{
int no;
char name[10];
int degree;
};
void main()
{
int i=0;
int j=0;
int m=0;
int t=0;
studnet stud[M];
while(1)
{
cout << "请输入学号: ";
cin >> stud[t].no;
if ( stud[t].no == 0 )break;
cout << "请输入姓名: ";
cin >> stud[t].name;
cout << "请输入成绩: ";
cin >> stud[t].degree;
t++;
}
fstream infile,outfile;
outfile.open("110.dat",ios::trunc|ios::out);
if(!outfile)
{
cout<<"can not open the file,l am sorry"<<endl;
abort();
}
//写入文件
for(i=0;i<t;i++)
{
outfile.write((char*)&stud[i],sizeof(stud[i]));
}
outfile.close();
//显示文件
infile.open("110.dat",ios::in|ios::binary);
for(i=0;i<t;i++)
{
infile.read((char*)&stud[i],sizeof(stud[i]));
cout<<stud[i].no<<setw(10)<<stud[i].name <<setw(10)<<stud[i].degree<<endl;
}
infile.close();
//按照学分的从低到高排序
cout<<"是否需要排序?需要输入1,输入其它数不排序"<<endl;
cout<<"情选择!"<<endl;
cin>>m;
if(m==1)
{
cout<<"按学分排序后:"<<endl;
for(i=0;i<t;i++)
for(j=t-1;j>i;j--)
{
if(stud[j].degree<stud[j-1].degree)
{
int d;
int n;
char na[10];
n=stud[j].no;
stud[j].no=stud[j-1].no;
stud[j-1].no=n;
d=stud[j].degree;
stud[j].degree=stud[j-1].degree;
stud[j-1].degree=d;
strcpy(na,stud[j].name);
strcpy(stud[j].name,stud[j-1].name);
strcpy(stud[j-1].name,na);
}
}
//重新写入文件
infile.open("110.dat",ios::trunc|ios::out);
cout<<"the new list is:"<<endl;
for(i=0;i<t;i++)
{
outfile.write((char*)&stud[i],sizeof(stud[i]));
}
infile.close();
//显示文件
outfile.open("110.dat",ios::trunc|ios::out);
for(i=0;i<t;i++)
{
outfile.read((char*)&stud[i],sizeof(stud[i]));
cout<<stud[i].no<<setw(10)<<stud[i].name <<setw(10)<<stud[i].degree<<endl;
}
outfile.open("110.dat",ios::trunc|ios::in);
}
}
问题点数:0、回复次数:5Top
1 楼pzytony(507)回复于 2003-06-01 22:51:19 得分 0
struct student a = new(student);
delete(a);
Top
2 楼rosky(郁闷++)回复于 2003-06-02 22:04:19 得分 0
noone can answer ????Top
3 楼BinaryWorld(为实现中华软件产业自强而读书!)回复于 2003-06-02 23:23:22 得分 0
#include <new.h>
type *varname=new varname;
delete varname or delete [] varname;
外排序?是不是选择排序,如下:
int nArray[100];
...输入代码
for(int i=0;i<100;i++)
{
for(int j=i;j<100;j++)
{
if(nArray[i]>nArray[j])
{
int nTemp=nArray[i];
nArray[i]=nArray[j];
nArray[j]=nTemp;
}
}
}Top
4 楼treamboy(亲月)回复于 2003-06-03 10:13:35 得分 0
#define M 100
......
int main() {
..............
studnet stud[M];//不要固定申請100個可以用指針來作,每次添加一個學生動態new個不就可以了,最後插入連表.用連表來作不管甚麼排序都easy
//struct *student = new student();
}Top
5 楼purerain(rain)回复于 2003-06-03 19:28:07 得分 0
gzTop




