式武神

导航

第三次实验

1.基于已有信息,补足并扩充程序。 在graph文件夹里提供有三个文件: graph.h (类Graph的声明) graph.cpp (类Graph的实现) main.cpp (类Graph的测试: 定义Graph类对象,调用绘图接口绘制图形) 要求如下: 新建一个空项目,添加上述三个文件到项目中。 

#ifndef GRAPH_H
#define GRAPH_H
#include<iostream>
using namespace std;
class graph{
public:
    graph(char ch,int n);
    void draw();
private:
    char symbol;
    int size;
};
graph::graph(char ch,int n):symbol(ch),size(n){
}
void graph::draw(){
int i,j,k,m;
for(k=1;k<=size;k++)
{
for(i=k;i<size;i++)
{
    cout<<' ';
}
for(j=0;j<=k-1;j++)
{
    cout<<symbol;
}
for(m=0;m<k-1;m++)
{
    cout<<symbol;
}
cout<<endl;
}
}
#end if
graph.h
#include"graph.h"
#include<iostream>
using namespace std;
int main()
{
    graph graph1('*',5);
    graph1.draw();
    system("pause");
    graph graph2('$',7);
    graph2.draw();
    return 0;
}
main.cpp

 2.基于需求描述设计、定义并实现分数类Fraction,并编写代码完成测试。 具体要求如下: 设计一个分数类 Fraction描述分数(两个整数的比值)

#ifndef FRACTION_H
#define FRACTION_H
#include<iostream>
using namespace std;
class fraction {
public:
    fraction(int a = 0, int b = 1) :top(a), bottom(b) {}
    fraction(fraction &c):top(c.top),bottom(c.bottom){}
    void jia(fraction &d, fraction &e);
    void jian(fraction &d, fraction &e);
    void cheng(fraction &d, fraction &e);
    void chu(fraction &d, fraction &e);
    void compare(fraction &d, fraction &e);
public:
    int top;
    int bottom;
};
void yue(int, int);
void yue(int x, int y)
{
    int p, q,i=0;
    if (x > y)
    {
        i = y;
    }
    else i = x;
    while (x%i != 0 || y%i != 0)
    {
        i--;
    }
    p = x / i;
    q = y / i;
    cout << p << "/" << q << endl;
}
void fraction::jia(fraction &d, fraction &e)
{
    int x, y, k;
    x = d.top*e.bottom + e.top*d.bottom;
    y = d.bottom * e.bottom;
    k = x;
    if (x < 0) {
        x = x - 2 * k;
        cout << "-";
        yue(x, y);
    }
    else if (x == 0)
        cout << '0' << endl;
    else
        yue(x, y);
}
void fraction::jian(fraction &d, fraction &e)
{
    int x, y, k;
    x = d.top*e.bottom - e.top*d.bottom;
    y = d.bottom * e.bottom;
    k = x;
    if (x < 0) {
        x = x - 2 * k;
        cout << "-";
            yue(x, y);
    }
    else if (x == 0)
        cout << '0' << endl;
    else
        yue(x, y);
}
void fraction::cheng(fraction &d, fraction &e) {
    int x, y, k;
    x = d.top*e.top;
    y = d.bottom*e.bottom;
    k = x;
    if (x < 0) {
        x = x - 2 * k;
        cout << "-";
        yue(x, y);
    }
    else if (x == 0)
        cout << '0' << endl;
    else
        yue(x, y);
}
void fraction::chu(fraction &d, fraction &e) {
    int x, y, k;
    x = d.top*e.bottom;
    y = d.bottom*e.top;
    if (y < 0)
    {
        x = -x;
        y = -y;
    }
    k = x;
    if (x < 0) {
        x = x - 2 * k;
        cout << "-";
        yue(x, y);
    }
    else if (x == 0)
        cout << '0' << endl;
    else
        yue(x, y);
}
void fraction::compare(fraction &d, fraction &e) {
    int x, y;
    x = d.top*e.bottom;
    y = e.top*d.bottom;
    if (x > y)
        cout << "第一个数大" << endl;
    else if (x < y)
        cout << "第二个数大" << endl;
    else
        cout << "两个数一样大" << endl;
}
#endif 
fraction.h
#include<iostream>
#include"fraction.h"
using namespace std;
int main() {
    int t1, b1, t2, b2;
    for (;;)
    {
        cout << "请输入第一个分数" << endl;
        cin >> t1 >> b1;
        cout << "请输入第二个分数" << endl;
        cin >> t2 >> b2;
        if (b1 < 0)
        {
            b1 = -b1;
            t1 = -t1;
        }
        if (b2 < 0)
        {
            b2 = -b2;
            t2 = -t2;
        }
        while (b1 == 0 || b2 == 0)
            return 0;
        fraction a(t1, b1);
        fraction b(t2, b2);
        cout << "两数相加为";
        a.jia(a, b);
        cout << "两数相减为";
        a.jian(a, b);
        cout << "两数相乘为";
        a.cheng(a, b);
        cout << "两数相除为";
        a.chu(a, b);
        a.compare(a, b);
        
    }
    return 0;
}
main.cpp

实验总结与体会:

1.这次实验我对类的应用感觉比上次进步了一点,主要是终于知道了怎么用多文件结构,之前一直是#include<xxx>,应该是#include"xxx"。

2.写第二题分数的时候浪费了许多时间,磕磕绊绊写了一个半小时,主要是一开始没考虑负数的问题,还有就是不知道结果应该是怎样的,一直在纠结,最后就提交了这样的结果。

posted on 2019-04-21 13:27  式武神  阅读(171)  评论(0编辑  收藏  举报