实验三

#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,k;
	for(i=1;i<=size;i++)
	{
		for(j=1;j<=size-i;j++)
		cout<<" ";
		for(k=1;k<=2*i-1;k++)
		cout<<symbol;
		cout<<endl;
	}
}
 
#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 FRACTION_H
#define FRACTION
 
class Fraction{
	public:
		Fraction(int top0,int bottom0);
		Fraction();
		static Fraction add(Fraction a,Fraction b); 
		static Fraction sub(Fraction a,Fraction b);
		static Fraction mul(Fraction a,Fraction b);
		static Fraction div(Fraction a,Fraction b); 
	    static +void compare(Fraction a,Fraction b);
		void sim();
		void input();
		void output();
	private:
		int top;
		int bottom;
};

#endif 
#include "fraction.h"
#include <iostream>
#include <cmath>
using namespace std;

Fraction::Fraction(int top0,int bottom0):top(top0),bottom(bottom0){
	if(bottom0=0){
		cout<<"Wrong!";
		exit(0);
	}
}

Fraction::Fraction(){}

Fraction Fraction::add(Fraction a,Fraction b){
	Fraction add1;
	add1.bottom=a.bottom*b.bottom;
	add1.top=a.top*b.bottom+b.top*a.bottom;
	add1.sim(); 
	return add1;
}//加法

Fraction Fraction::sub(Fraction a,Fraction b){
	Fraction sub1;
	sub1.bottom=a.bottom*b.bottom;
	sub1.top=a.top*b.bottom-b.top*a.bottom;
	sub1.sim();
	return sub1;
} //减法

Fraction Fraction::mul(Fraction a,Fraction b){
	Fraction mul1;
	mul1.bottom=a.bottom*b.bottom;
	mul1.top=a.top*b.top;
	mul1.sim();
	return mul1;
} //乘法

Fraction Fraction::div(Fraction a,Fraction b){
	Fraction div1;
	div1.bottom=a.bottom*b.top;
	div1.top=a.top*b.bottom;
	div1.sim();
	return div1;
} //除法

void Fraction::compare(Fraction a,Fraction b){
	a.sim();
	b.sim();
	if(a.top*b.bottom>a.bottom*b.top)
	   cout<<a.top<<"/"<<a.bottom<<">"<<b.top<<"/"<<b.bottom<<endl;
	else if(a.top*b.bottom<a.bottom*b.top)
	   cout<<a.top<<"/"<<a.bottom<<"<"<<b.top<<"/"<<b.bottom<<endl;
	else
	   cout<<a.top<<"/"<<a.bottom<<"="<<b.top<<"/"<<b.bottom<<endl;
} //比较

void Fraction::sim(){
	int i;
	if(top!=0){
		for(i=fabs(top);i>=1;i--){
			if(top%i==0&&bottom%i==0)
			   break;
		}
		top/=i;
		bottom/=i;
	}
	if(bottom*top<0){
		top=-fabs(top);
		bottom=fabs(bottom);
	}
	else if(bottom*top>0){
		top=fabs(top);
		bottom=fabs(bottom);
	}
} //化简

void Fraction::input(){
	cin>>top>>bottom;
} //输入

void Fraction::output(){
	if(top!=0){
		if(bottom!=1)
		   cout<<top<<"/"<<bottom;
		else if(bottom==1)
		   cout<<top;
	}
	else
	    cout<<"0";
} //输出  
#include <iostream>
#include "fraction.h"
using namespace std;

int main(){
	Fraction m,n;
	Fraction c1,c2,c3,c4;
	
	cout<<"Enter numbers:";
	m.input();
	n.input();
	
	cout<<"m=";
	m.output();
	cout<<endl;
	cout<<"n=";
	n.output();
	cout<<endl;
	
	c1=Fraction::add(m,n);
	cout<<"m+n=";
	c1.output();
	cout<<endl;
	
	c2=Fraction::sub(m,n);
	cout<<"m-n=";
	c1.output();
	cout<<endl;
	
	c3=Fraction::mul(m,n);
	cout<<"m*n=";
	c3.output();
	cout<<endl;
	
	c4=Fraction::div(m,n);
	cout<<"m/n=";
	c4.output();
	cout<<endl;
	
	Fraction::compare(m,n);
	
	system("pause");
	return 0;
}

  

实验总结:第二题用到了一些以前C语言中循环的知识,第三题让我感到困难不能够独立完成,希望自己以后多练习。

posted @ 2019-04-23 22:55  芯芯最腻害  阅读(116)  评论(0编辑  收藏  举报