怎么在程序运行时将对象输入?在线急等。。。。。。。
//这个程序用栈,能进行查找,修改,排序(通过id这个对象成员)
#include <iostream.h>
const int size=20;
template<class T>
class stack{
T stck[size];
int tos;
public:
void init()
{tos=0;}
void push(T &ob);
T pop();
int search(T &ob);
T overwrite(int i, T &ob);
void sort();
};
template<class T>
void stack<T>::push(T &ob)
{
if(tos==size)
{
cout<<"stack is full\n";
return ;
}
stck[tos]=ob;
tos++;
}
template<class T>
T stack<T>::pop()
{
if(tos==0)
{cout<<"stack is empty\n";
return 0;
}
tos--;
return stck[tos];
}
template<class T>
int stack<T>::search(T &ob)
{
int i;
if(tos==0)
{
cout<<"stack is empty\n";
return -1;
}
for( i=0; i<tos; i++)
if(stck[i]==ob)
break;
if(i==tos)
{
cout<<"element is not\n";
return -1;
}
return i;
}
template<class T>
T stack<T>::overwrite(int i,T &ob)
{
T temp;
temp=stck[i];
stck[i]=ob;
return temp;
}
template<class T>
void stack<T>::sort()
{
T temp;
for(int i=0; i<tos ; i++)
{
int max=i;
for(int j=i+1; j<tos; j++)
{
if(stck[max]<stck[j])
max=j;
}
if(max==i) continue;
temp=stck[max];
stck[max]=stck[i];
stck[i]=temp;
}
}
#include<iostream.h>
#include<string.h>
class student{
int id;
char* name;
int sex;
public:
student(int a=-1,char* b=&"noname",int c=0):id(a),sex(c)
{
name=new char[strlen(b)+1];
strcpy(name,b);
}
~student()
{delete name;}
student(const student &b)
{ name=new char[strlen(b.name)+1];
strcpy(name,b.name);
id=b.id;
sex=b.sex;
}
void print();
int operator ==(student b);
int operator <(student b);
student& operator=(const student &a);
};
void student::print()
{
if(sex==0)
cout<<" "<<id<<" "<<name<<" "<<"famale\n";
else
cout<<" "<<id<<" "<<name<<" "<<"male\n";
}
int student::operator ==( student b)
{
if(id==b.id)
return 1;
return 0;
}
int student::operator <(student b)
{
if(id<b.id)
return 1;
return 0;
}
student& student::operator =(const student &a)
{
if(this == &a) return *this;
delete name;
name=new char[strlen(a.name)+1];
strcpy(name,a.name);
id=a.id;
sex=a.sex;
return *this;
}
void main()
{
int i,j,k;
int a;
char* b;
int c;
stack<student> sta;
sta.init();
{
cout<<"press 1: push stack element\npress 2: pop stack element\npress 3: sort stack element\npress 4: search stack element\npress 5: overwrite stack element\n";
cin>>i;
student ob;
switch(i)
{
case 1:cout<<"\nplease intput stack element:";
cin>>a>>b>>c;
ob=student(a,b,c); //就是这个句子
sta.push(ob);
cout<<"\npush compelet";
break;
case 2:cout<<"\npop element:";
sta.pop().print();
cout<<"\npop compelet";
break;
case 3:cout<<"\nsort element..............";
sta.sort();
cout<<"\nsort compelet";
break;
case 4:cout<<"\nsearch element";
cout<<"\nplease intput stack element id:";
cin>>a;
ob=student(a); //就是这个句子
j=sta.search(ob);
cout<<"\nyour search stack element number:"<<j;
cout<<"\nsearch compelet";
break;
case 5:cout<<"\noverwrite element";
cout<<"\nplease input stack element number:";
cin>>k;
cout<<"\nplease input new element:";
cin>>a>>b>>c;
ob=student(a,b,c); //就是这个句子
sta.overwrite(k,ob);
cout<<"\noverwrite compelet";
break;
}
cout<<" are you continue?";
}while(1);
}