【C++类与对象】实验四(二)

时间:2021-12-24 02:41:18
  1. 实现画图类
    •  #ifndef GRAPH_H
      #define GRAPH_H // 类Graph的声明
      class Graph {
      public:
      Graph(char ch, int n); // 带有参数的构造函数
      void draw(); // 绘制图形
      void changecolor();
      private:
      char symbol;
      int size;
      char selcolor;
      }; #endif

      graph.h

       // 类graph的实现
      #include<cstdio>
      #include "graph.h"
      #include <iostream>
      using namespace std; // 带参数的构造函数的实现
      Graph::Graph(char ch, int n): symbol(ch), size(n) {
      } // 成员函数draw()的实现
      // 功能:绘制size行,显示字符为symbol的指定图形样式
      // size和symbol是类Graph的私有成员数据
      void Graph::draw() {
      int i,j,k;
      for(i=;i<=size;i++){ k=size-i;
      while(k--){
      cout<<' ';
      }
      k=;
      while(k<*i-){
      cout<<symbol;
      k++;
      }
      k=size-i;
      while(k--){
      cout<<' ';
      }
      cout<<endl;
      }
      }

      graph.cpp

    •  #include <iostream>
      #include "graph.h"
      #include"graph.cpp" using namespace std; int main() {
      Graph graph1('*',), graph2('$',) ; // 定义Graph类对象graph1, graph2
      graph1.draw(); // 通过对象graph1调用公共接口draw()在屏幕上绘制图形
      graph2.draw(); // 通过对象graph2调用公共接口draw()在屏幕上绘制图形
      char a[];
      system("color 19");//系统设置颜色
      return ;
      }

      mian.cpp

    • 运行截图:其中关于修改颜色,我用的函数库里面的函数system(“color背景色/前景色”)
    • 【C++类与对象】实验四(二)
  2. 实现分数类
 #include <iostream>
#include<cmath>
#include"fraction.h"
using namespace std; // 带参数的构造函数的实现
Fraction::Fraction(int t, int b): top(t), bottom(b) {
}
Fraction::Fraction(): top(), bottom() {
}
Fraction::Fraction(int t): top(t), bottom() {
}
Fraction::Fraction(Fraction &f1): top(f1.top), bottom(f1.bottom) {
}
void Fraction::shuru(){
cout<<"请输入分子,分母:";
int a,b;
cin>>a>>b; top=a;
bottom=b;
}
void Fraction::jia(Fraction &f1){
if(bottom==f1.bottom){
top+=f1.top;
}
else{
top=top*f1.bottom+bottom*f1.top;
bottom=bottom*f1.bottom;
}
}
void Fraction::jian(Fraction &f1){
if(bottom==f1.bottom){
top-=f1.top;
}
else{
top=top*f1.bottom-bottom*f1.top;
bottom=bottom*f1.bottom;
}
}
void Fraction::cheng(Fraction &f1){
bottom*=f1.bottom;
top*=f1.top;
}
void Fraction::chu(Fraction &f1){
bottom*=f1.top;
top*=f1.bottom;
}
void Fraction::printfraction(){
int a,b,r;
a=top;
b=bottom;
r=a%b;
while(r){
a=b;
b=r;
r=a%b;
}
top=top/b;
bottom=bottom/b;
if(top<&&bottom>||top>&&bottom<)
cout<<"-"<<abs(top)<<"/"<<abs(bottom)<<endl;
if(top>=&&bottom>||top<=&&bottom<)
cout<<abs(top)<<"/"<<abs(bottom)<<endl; }
void Fraction::printinteger(){
double k;
k=double(top)/(double(bottom));
cout<<k<<endl;
} #

fraction.cpp

 #ifndef FRACTION_H
#define FRACTION_H // 类Graph的声明
class Fraction {
public:
Fraction(int t,int b);//构造函数
Fraction();
Fraction(int t);
Fraction(Fraction &f1);
void shuru();//输入
void jia(Fraction &f1);//加法
void jian(Fraction &f1);// 减法
void cheng(Fraction &f1);//乘法
void chu(Fraction &f1);//除法
void printfraction();//输出分数
void printinteger(); //输出整数 private:
int top;
int bottom;
}; #endif

fraction.h

 #include <iostream>
#include"fraction.h" using namespace std; int main()
{
Fraction a,b(,),c(),d,f;//初始化任意两个对象
a.printfraction();
b.printfraction();
c.printfraction();
//d(2,5); 为啥在定义一个普通变量,比如int a; a=1;但是定义类,fraction a; a(,) 是错的,因为a有默认的参数值。 a.shuru();
b.shuru();
cout<<"分数相加:";
a.jia(b);
a.printfraction();
cout<<"分数相减:";
a.jian(b);
a.printfraction();
cout<<"分数相乘:";
a.cheng(b);
a.printfraction();
cout<<"分数相除:";
a.chu(b);
a.printfraction();
a.printinteger(); return ;
}

mian.cpp

测试截图
【C++类与对象】实验四(二)

3.体会:

int a;

a=2;//对的

(class)Fraction a;

a(2,1);//出错

【C++类与对象】实验四(二)

我认为原因是,1.a有默认构造函数,在定义时,就默认初始化a的值。2.a(,)在类中并没有定义这个函数。