码迷,mamicode.com
首页 > 其他好文 > 详细

实验三

时间:2019-04-19 23:55:24      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:efi   tip   info   break   绘制图形   ios   def   private   项目   

一、分数类

#include<iostream>
using namespace std;
#include"Class.h"
int main()

{
    Fraction a;
    Fraction b(3,4);
    Fraction e(5);
    int t1,b1,t2,b2;
    cout<<"Please enter the number:"<<endl;
    cout<<"number 1:";
    cin>>t1>>b1;
    cout<<"number 2:";
    cin>>t2>>b2;
    if(b2==0||b1==0)
    cout<<"no number exist Please try again"<<endl;
    else
    {
    Fraction c(t1,b1);
    Fraction d(t2,b2);
    a.Add(c,d); 
    a.Minus(c,d);
    a.multiply(c,d);
    a.divid(c,d);
    a.compare(c,d);
    }
}
class Fraction{
    public:
        Fraction(int T=0,int B=1):top(T),bottom(B){
        }
        Fraction(const Fraction &p):top(p.top),bottom(p.bottom){
        }
        void Add(Fraction &F,Fraction &S);
        void Minus(Fraction &F,Fraction &S); 
        void multiply(Fraction &F,Fraction &S);
        void divid(Fraction &F,Fraction &S);
        void compare(Fraction &F,Fraction &S);
        int gettop(){return top;}
        int getbottom(){return bottom;}
        Fraction(Fraction &xp1,Fraction &xp2);
    private:
        int top;
        int bottom;
};
#ifndef FUNCTION_H
#define FUNCTION_H
#include<iostream>
#include"Class.h"
using namespace std;
void yue(int b1,int b2)
{
    int i;
    for(i=1;;i++)
    {
        if(i%b1==0&&i%b2==0)
        break;
    }
    b1=i/b1;
    b2=i/b2;
    if(b1<0)
    {
        b1*=-1;
        b2*=-1;
    }
    if(b1==1)
    cout<<b2<<endl;
    else
    cout<<b2<<"/"<<b1<<endl;
}
void Fraction::Add(Fraction &F,Fraction &S)
{
    int t1=F.gettop();
    int b1=F.getbottom();
    int t2=S.gettop();
    int b2=S.getbottom();
    int i,j;
    for(i=1;;i++)
    {
        if(i%b1==0&&i%b2==0)
        break;
    }
    int pb=i;
    int Pt=(i/b1)*t1+(i/b2)*t2;
    cout<<"c+d=";
    if(Pt==0)
    cout<<0<<endl;
    else
    yue(Pt,i);
}
void Fraction::multiply(Fraction &F,Fraction &S)
{
 int t1=F.gettop();
 int p1=F.getbottom();
 int t2=S.gettop();
 int p2=S.getbottom();
 int Pt=t1*t2;
 int Bt=p1*p2;
 cout<<"c*d=";
 yue(Pt,Bt);    
}
void Fraction::divid(Fraction &F,Fraction &S)
{
    int t1=F.gettop();
    int p1=F.getbottom();
    int t2=S.gettop();
    int p2=S.getbottom();
    int Pt=t1*p2;
    int Bt=t2*p1;
    cout<<"c/d=";
    if(t1==0||t2==0)
    cout<<0<<endl;
    else
    yue(Pt,Bt);
}
void Fraction::compare(Fraction &F,Fraction &S)
{
    int N=F.gettop()*S.getbottom()-S.gettop()*F.getbottom();
    if(N>0)
    cout<<F.gettop()<<"/"<<F.getbottom()<<">"<<S.gettop()<<"/"<<S.getbottom()<<endl;
    else if(N<0)
    cout<<F.gettop()<<"/"<<F.getbottom()<<"<"<<S.gettop()<<"/"<<S.getbottom()<<endl;
    else     
    cout<<F.gettop()<<"/"<<F.getbottom()<<"="<<S.gettop()<<"/"<<S.getbottom()<<endl;
}
void Fraction::Minus(Fraction &F,Fraction &S)
{
int t1=F.gettop();
    int b1=F.getbottom();
    int t2=S.gettop();
    int b2=S.getbottom();
    int i,j;
    for(i=1;;i++)
    {
        if(i%b1==0&&i%b2==0)
        break;
    }
    int pb=i;
    int Pt=(i/b1)*t1-(i/b2)*t2;
    cout<<"c-d=";
        if(Pt==0)
    cout<<0<<endl;
    else
    yue(Pt,i);
}
#endif

运行截图

技术图片

二、Graph类的实现

#include <iostream>
#include"graph.h"
using namespace std;
int main()
{
    Graph graph1(*,5);
    graph1.draw();
    system("pause");
    Graph graph2($,7);
    graph2.draw();
    return 0;
}
#ifndef GRAPH_H
#define GRAPH_H

// 类Graph的声明 
class Graph {
    public:
        Graph(char ch, int n);   // 带有参数的构造函数 
        void draw();     // 绘制图形 
    private:
        char symbol;
        int size;
};
#endif
// 类graph的实现
 
#include "graph.h" 
#include <iostream>
using namespace std;

// 带参数的构造函数的实现 
Graph::Graph(char ch, int n): symbol(ch), size(n) {
}


// 成员函数draw()的实现
// 功能:绘制size行,显示字符为symbol的指定图形样式 
void Graph::draw() {    
int i,j;
    for(i=1;i<=size;i++)
    {
        for(j=1;j<=size-i;j++)
        cout<<" ";
        for(;j<=size+i-1;j++)
        cout<<symbol;
        cout<<endl;
    }
}

运行截图

技术图片

实验总结:

1.在获取分数的分子分母时,因为分子分母是private成员,原本打算用友元函数,中途运行时报错,因为没有看懂,最后还是设置了gettop函数来获取分子分母。

2.在设计算法、函数时要注意个例,比如分数类的四则运算中,分母为0的就是个个例。

3.建项目时以前没有注意到文件名称,导致今天出了不少错误,以后得注意。

4.这次实验也是体会到了项目的优势,编译时有错误可以更加快捷地找出错误之处。

 

 

实验三

标签:efi   tip   info   break   绘制图形   ios   def   private   项目   

原文地址:https://www.cnblogs.com/qiuqiuwr/p/10739483.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!