学习C++过程中有问题的作业,记下以便日后修改完善

原创 2012年03月27日 23:10:07

第四章  类

运算符重载(问题不会利用友元)

#include<iostream>
using namespace std;
class Complex{
public:
 Complex operator++(int);
 /*Complex operator++();*/
 Complex operator/=(const Complex &);
 Complex operator*=(const Complex &);
 Complex operator+=(const Complex &);
 Complex operator-(const Complex &);
 Complex(double r=0,double i=0):real(r),image(i){}
 void show(){
  cout<<real<<"+"<<image<<"i"<<endl;
 }
private:
 double real;
 double image;
};
Complex Complex::operator++(int){
 this->real++;
 this->image++;
 return *this;
}
//Complex Complex::operator++(){
// this->real++;
// this->image++;
// return *this;
//}
Complex Complex::operator/=(const Complex &c){
 double x;
 x=this->real;
 this->real=(x*c.real+this->image*c.image)/(c.real*c.real+c.image*c.image);
 this->image=(this->image*c.real-x*c.image)/(c.real*c.real+c.image*c.image);
 return *this;
}
Complex Complex::operator*=(const Complex &c){
 double x;
 x=this->real;
 this->real=x*c.real-this->image*c.image;
 this->image=x*c.image+this->image*c.real;
 return *this;
}
Complex Complex::operator+=(const Complex &c){
 Complex t;
 this->real+=c.real;
 this->image+=c.image;
 return *this;
}
Complex Complex::operator-(const Complex & c){
 Complex t;
 t.real=this->real-c.real;
 t.image=this->image-c.image;
 return t;
}
int main(){
 Complex c1(2,3),c2(1,4),c3;
 cout<<"c1=";
 c1.show();
 cout<<"c2=";
 c2.show();
 cout<<"c3=";
 c3.show();
 cout<<"(c3=c1-c2)=";
 c3=c1-c2;
 c3.show();
 /*cout<<"(c1+=c2)=";
 c1+=c2;
 c1.show();
 cout<<"(c2*=c1)=";
 c2*=c1;
 c2.show();*/
 /*c1/=c2;
 cout<<"(c1/=c2)=";
 c1.show();*/
 cout<<"c1++=";
 c1++.show();
 return 0;
}

第五章  数组与指针

标准c++string类(问题无法理解,无从下手)

#include<iostream>
using namespace std;
const int n=21;
class mystring{
public:
 bool operator==(mystring &);
 bool operator>(mystring &);
 bool operator<(mystring &);
 mystring &operator+=(char * s);
 mystring &operator+(char * s);
 mystring &operator=(char * s);
 char operator[](int);
 mystring(){
  last=0;
  maxsize=n;
  str[0]='\0';
 }//当c字符串过长时,初始化要采用结尾处理
 mystring(char *s){
  last=-1;
  maxsize=n;
  do{
   last++;
   str[last]=s[last];
  }while(s[last]!='\0' && last<maxsize-1);
  str[last]='\0';
 }
 ~mystring(){}    //析构函数

 void show(){
  cout<<str<<'\t'; }
private:
 char str[n];
 int maxsize;
 int last;
 
};
char mystring::operator[](int){
 int i;
 cin>>i;
 return i;
}
mystring & mystring::operator=(char *s){//这里返回值为引用,不调用复制构造函数
 last=-1;
 do{
  last++;
  str[last]=s[last];
 }while(s[last]!='\0' && last<maxsize-1);
 str[last]='\0';
 return *this;
}
mystring &mystring::operator+(char *s){
 mystring t;
 last=-1;
 do{
  last ++;
  t.str[last]=str[last]+s[last];
 }while(s[last]!='\0' && last<maxsize-1);
 str[last]='\0';
 return t;
}
mystring &mystring::operator+=(char *s){
 last=-1;
 do{
  last ++;
  str[last]+=s[last];
 }while(s[last]!='\0' && last<maxsize-1);
 str[last]='\0';
 return *this;
}
bool mystring::operator<(mystring & ms){
 int i=0,k;
 do{
  k=str[i]-ms.str[i];
  i++;
 }while(k==0 && i<last && i<ms.last);
 if(k<0) return true;
 if(i==last && i!=ms.last) return true;
 return false;
}
bool mystring::operator>(mystring & ms){
 int i=0,k;
 do{
  k=ms[last]-str[last];
  i++;
 }while(k==0 && i<last && i<ms.last);
 if(k<0) return true;
 if(i==last && i!=ms.last) return true;//此处不太理解!!
 return false;
}
bool mystring::operator==(mystring & ms){
 int i=0,k;
 do{
  k=str[i]-ms.str[i];
  i++;
 }while( k==0 && i<last && i<ms.last);
 if(k==0) return true;
 if(i==last && i!=ms.last) return true;
 return false;
}
int main(){
 mystring  str0;
 mystring();
 str0.show();
 return 0;
}//无法理解

关于日历的制作(只能对已知的日期进行编程)

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
 int year,month,day;
 year=2012;
 month=2;
 cout<<setw(16)<<year<<"年"<<month<<"月"<<endl;
 cout<<setw(4)<<"日"<<setw(4)<<"一"<<setw(4)<<"二"<<setw(4)<<"三"<<setw(4)<<"四"<<setw(4)<<"五"<<setw(4)<<"六"<<endl;
 for(day=1;day<=29;day++)
 {
  if(day==1)
   cout<<setw(16)<<day;
  else
   cout<<setw(4)<<day;
  if((day+3)%7==0)
   cout<<endl;
 }
}

杨辉三角(虽然程序正确,但对循环还是不太熟练)

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
 int n[10][10],i,j,k;
 for(i=0;i<10;i++)
  for(j=0;j<=i;j++)
   if(j==0 || j==i)
    n[i][j]=1;
   else
    n[i][j]=n[i-1][j-1]+n[i-1][j];
 
 for(i=0;i<10;i++)
 {
  for(k=10;k>=i;k--)
  cout<<"  ";
  for(j=0;j<=i;j++)
   cout<<setw(4)<<n[i][j];
  cout<<endl;
 }

}




相关文章推荐

AS新手在使用Android Studio的过程中有必要弄明白的一些问题

很多使用Eclipse的Android程序员不知道代码重构的快捷键、如何在运行时调试、一个Workspace一大堆工程......,我想即使转到Android Studio也并不见得比Eclipse顺...
  • xhmj12
  • xhmj12
  • 2016年09月02日 14:58
  • 1176

我在学习PS过程中有几点很深的体会

其实对PS早有耳闻,只是一直没去接触,因为觉得挺专业的,然后也没有遇见一定要用PS的地方,自己也一直挺满足于美图秀秀的,后来因为部门需要不得不接触PS,外加正好电协在做这个的培训,于是毫不犹豫的去了P...

在学习c++过程中,我觉得都会碰到一些问题,我也是如此

C++是什么? C++是一种使用非常广泛的电脑程式设计语言。它是一种静态资料类型检查的,支援多范型的通用程式设计语言。C++支援程序化程式设计、资料抽象化、物件导向程式设计、泛型程式设计、基...

C++ 学习拾遗 —— 点滴记录C++学习过程中遇到的问题以及整理

2013.5.28  delete []str;     今天在看老师课件的时候,看到析构函数里有一条语句:    delete []str;   有印象,但一时想不起来。遂查询了...

你在发表理科学术文章过程中有哪些经验值得借鉴

来自知乎:https://www.zhihu.com/question/26729854/answer/39201171 --------------------------------------...

c++和java在socket通信过程中发送和接收函数的问题

以下是我在做java和c++ socket通信过程中如何正确使用java接收函数的问题,主要还是为了完成项目,可能不够详细,请多多指正: 1、c++端发送:如果发送的是整型等多字节类型,必须先要...

移动开发人员必看:在移动产品的开发过程中有哪些四两拨千斤的技巧跟技能点?

今天分享的这篇文章,从头到尾满满的都是干货,诚意十足,或许文中的代码对我们来说没什么实际意义,但是其中的思路值得我们学习。 这篇文章的贡献者不要求署名,那么容我以第一人称的视角进行陈述,并感谢他...

你在发表理科学术文章过程中有哪些经验值得借鉴?

提问: 将要开始写论文发表了,虽然之前也有过不是一作的文章,但文章不是我写的。因此想请教一下前辈们:在发表文章的过程中有哪些经验可借鉴? 补充一点信息: 我指的不是普遍适用的学术型文章的...

【IdeaCentre B3系列机型启动或运行过程中有噪音】

故障现象:   1. 启动过程中风扇声音很大,正常启动进入系统后声音正常   2. 启动风扇狂转,电脑没有任何显示   3. 使用过程中不定时的风扇声音很大   4. 使用中风扇一直声音很大不...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习C++过程中有问题的作业,记下以便日后修改完善
举报原因:
原因补充:

(最多只允许输入30个字)