注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

告别迷茫

梦想与现实的差距,就是我们生活的意义。因为我们有差距,我们才会一直积累,在努力。

 
 
 

日志

 
 

第十周  

2014-04-23 23:47:55|  分类: C++作业  李 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

#include<iostream>
using namespace std;
class Fract;
ostream& operator<< (ostream &out,const Fract &w);

class Fract
{
private:
int num; //fenzi
int den; //fenmu
friend ostream& operator <<(ostream &out,const Fract &w);
public:
Fract()
{
num=0;
den=1;
}
Fract(const int n,const int d)
{
num=n;
den=d;
}
Fract(const int n)
{
num=n;
den=1;
}
operator double()
{
return double(num)/double(den);
}
Fract &operator++ ();
Fract operator++(int);
bool operator <(const Fract &w);

void Show()
{
cout<<num<<"/"<<den;
}
};
template<typename T>
void sort( T a[],int n)
{
int i,j,k;
T t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[j]<a[k]) k=j;
}
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
Fract &Fract::operator ++()
{
num+=den;
return *this;
}

Fract Fract::operator ++(int)
{
Fract t(*this);
num+=den;
return t;
}
bool Fract::operator <(const Fract &w)
{
if(den*w.num-w.den*num>=0)
{
return true;
}
return false;
}
ostream & operator<< (ostream &out,const Fract &w)
{
out<<w.num<<"/"<<w.den<<" ";
out<<(double)w.num/w.den<<endl;
return out;
}


int main()
{
Fract f1[9];
f1[0]=(1,3);
f1[1]=(1,4);
f1[2]=(2,1);
f1[3]=(2,3);
f1[4]=(2,3);
f1[5]=(3,4);
f1[6]=(5,1);
f1[7]=(9,3);
f1[8]=(3,3);
f1[9]=(7,4);
sort(f1,9);
for(int i=0;i<9;i++)
{
cout<<f1[i]<<" ";
}
cout<<endl;



}

第十周 - 983433479 - jet sky
 


问题一: // delete[]newstack;  为什么空间在这里不能删除啊?  或许是应为我们申请的空间本身属于这个对象,有自己的析构函数,不知道对不对????



作业第二题:
(1)bool Push(const T &x) 插入
(2) bool Pop(T  &x)/*x 为删除的值*/
(3)bool Peek(T &x)看栈顶的元素
(4) void Resize(int  n)  申请的动态空间,有自己的容量,如果少于这个容量,就不用在次申请空间,在插入的时候;
(5)bool Empty()  空?
(6)void Initstack()  clear the stack;
(7)int capacicy; 动态空间的荣量;

运行正常:代码如下
#include<iostream>

using namespace std;
template <typename T>
class Stack
{
public:
bool Push(const T &x)
{
int i;
top++;
if(capacicy<top)
{
T *newstack =new T[top];
for( i=0;i<top-1;i++)
{
newstack[i]=buf[i];
newstack[top-1]=x;
delete [] buf;
buf=new T[top];
for( i=0;i<top;i++)
{
buf[i]=newstack[i];
}
cout<<"push from new  "<<endl;
// delete[]newstack;
size++;
}
else
{
buf[top-1]=x;
size++;
cout<<"push from capacicty"<<endl;
}
return true;
}
bool Pop(T  &x)/*x 为删除的值*/
{
if(Empty()) return false;
else
{
x=buf[top-1];
top--;
size--;
T *newstack=new T[top];
for(int i=0;i<top;i++)
{
newstack[i]=buf[i];
}
delete []buf;
buf =new T[top];
for(int j=0;j<top;j++)
{
buf[j]=newstack[j];
}
return true;
   }
}
bool Peek(T &x)
{
if(Empty()) return false;
else
{
x=buf[top-1];
return true;
    }
}
void Resize(int  n)
{
T *newstack=new T[n];
int i;
for( i=0;i<size;i++)
{
newstack[i]=buf[i];
}
delete []buf;
buf =new T[n];
for( i=0;i<size;i++)
{
buf[i]=newstack[i];
}
capacicy=n;
bool Empty()
{
if(top==0&&size==0)
{
return true;
}
return false;
}
Stack()
{
buf =NULL;
top=0;
size=0;
capacicy=0;
}
Stack(T n)
{
*buf=new T[n];
capacicy=n;
top=0;
size =0;
}
virtual ~Stack()
{
if( buf==NULL)
{
delete []buf;
}
}
void Initstack()
{
buf=NULL;
top=0;
size=0;
capacicy=0;
cout<<" clear the stack"<<endl;
}
int  gettop()
{
return top;
}
int  getsize()
{
return size;
}

private:
T *buf;
int size;
int top;
int capacicy;
} ;
int main()
{
Stack<int>  o;
int a=0;
o.Push(10);
o.Push(20);

     if(o.Pop(a))
    cout<<" pop :" <<a<<endl;

 if(o.Peek(a))
    cout<<" peek:" <<a<<endl;

 o.Resize(6);
 o.Push(30);
 if(o.Peek(a))
    cout<<" peek:" <<a<<endl;

 o.Push(40);
 if(o.Peek(a))
    cout<<" peek:" <<a<<endl;
 o.Push(50);
 if(o.Peek(a))
    cout<<" peek:" <<a<<endl;
 o.Push(60);
 if(o.Peek(a))
    cout<<" peek:" <<a<<endl;

  


 o.Initstack();
 cout<<o.gettop()<<" "<<o.getsize()<<endl;


第十周 - 983433479 - jet sky
 


  评论这张
 
阅读(10)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017