2.graph 绘图

1类的定义

  

//类定义
class graph
{
public:
    graph (char ch,int n1):single(ch),n(n1){}
    void draw();
private:
    char single;int n;
};

 

 

2类的实现

 

//类的实现
#include<iostream>
#include "graph.hpp"
using namespace std;
graph graph ('*',5);
void graph::draw()
{
    for(int i=1;i<=n;i++)
    {
        for(int j=i;j<=n-1;j++) cout<<' ';
        for(int m=1;m<=2*i-1;m++) cout<<single;
        cout<<endl;
    }//打印图案循环
}//函数实现

 

3、主函数

//主函数
#include <iostream>
#include"graph.hpp"
using namespace std;
int main()
{
    graph graph1('*',10);
    graph1.draw();
    return 0;
}

 

 

4、程序结果截图

 

 

 

 

计算分数

1.header头文件 

class Fraction
{
public:
    Fraction(int a,int b):top(a),bottom(b){};
    void show();
    void put(int ,int );
    friend double add(Fraction &a,Fraction &b);
    friend double min(Fraction &a,Fraction &b);
    friend double mul(Fraction &a,Fraction &b);
    friend double div (Fraction &a,Fraction &b);
    friend void cmp(Fraction &a,Fraction & b);
    double quzhi();
private:
    int top;
    int bottom;
};

 2.Fraction.cpp

#include"Fraction.hpp"
#include<iostream>
using namespace std;
//输出函数
void Fraction::show()
{
    cout<<top<<'/'<<bottom<<endl;
}
//输入函数
void Fraction::put(int a,int b)
{
    top=a;
    bottom=b;
}
//取值函数
double Fraction::quzhi()
{
    double zhi;
    zhi=(double)top/(double)bottom;
    return zhi;
}
// 加法友元函数
double add(Fraction &a,Fraction &b)
{
    double add1;
    add1=a.quzhi()+b.quzhi();
    cout<<add1<<endl;
    return add1;
}
//减法友元函数
double min(Fraction &a,Fraction &b)
{
    double min1;
    min1=a.quzhi()-b.quzhi();
    cout<<min1<<endl;
    return min1;
}
//乘法友元函数
double mul(Fraction &a,Fraction &b)
{
    double mul1;
    mul1=a.quzhi()*b.quzhi();
    cout<<mul1<<endl;
    return mul1;
}
//除法友元函数
double div(Fraction &a,Fraction &b)
{
    double div1;
    div1=a.quzhi()/b.quzhi();
    cout<<div1<<endl;
    return div1;
}
//比较函数
void cmp(Fraction &a,Fraction &b)
{
    if(a.quzhi()>b.quzhi())
        cout<< "左边的大于右边的"<<endl;
    else if(a.quzhi()==b.quzhi())
        cout<<"左边的等于右边的"<<endl;
    else
        cout<<"左边的小于右边的"<<endl;
}

 

3.main.cpp

#include<iostream>
#include"Fraction.hpp"
using namespace std;
int main()
{
    Fraction fra1(1,2);
    Fraction fra2(3,4);
    fra2.put(3,5);
    fra1.show();
    add(fra1,fra2);
    min(fra1,fra2);
    mul(fra1,fra2);
    div(fra1,fra2);
    cmp(fra1,fra2);
}

 

//

做的题目多了可能就会有感觉了,问题也没有啥问题。这次作业分了2次在做,第一次的时候是在课后,当时主要解决的是多文件问题,解决了之后尝试着去做第二项,但是我发现用static函数还是friend函数有些问题,然后 friend函数当时只是书上看了一遍,粗浅的记忆了一下知识点,但是细节方面并没有注意,例如::friend add(Fra &a,Fra &b)  static add(Fra a,Fra b)一个是引用一个不是,在复制构造函数中也有这样的问题,也是用的引用。为啥??? 然后上了一次课后,有把那些知识点重新看了一遍,心中做到有B数后在做题目就很顺了,这个道理在很多学科上也是一样,当你的基础打牢之后,再去做题目就是不断的从库存中拿东西,并不费事,关键的关键在于前期的学习和积累。

//