- 实现画图类
-
#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;
}; #endifgraph.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背景色/前景色”)
-
- 实现分数类
#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
测试截图
3.体会:
int a;
a=2;//对的
(class)Fraction a;
a(2,1);//出错
我认为原因是,1.a有默认构造函数,在定义时,就默认初始化a的值。2.a(,)在类中并没有定义这个函数。