zoukankan      html  css  js  c++  java
  • 南京信息工程大学实验报告(四)

    头文件,源文件一开始分不清,然后查了一下,发现一篇讲的挺好的,下面是链接
    https://blog.csdn.net/SleepBoyer/article/details/54577848

    第二题
    原来的包含在选做一里面了,下面是选做一的代码

    graph.cpp

    #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() {
        for (int i=1;i<size+1;i++){        //控制行数 
        	for (int j=0;j<size-i;j++){    //输出每行符号前的空格 
    		  cout<<' ';
    		}
            for (int k=0;k<2*i-1;k++){     //输出图案符号 
        	  cout<<symbol;
    	    }
    		  cout<<endl;	              //换至下一行 
    }
    
    }
            	// 补足代码,实现「实验4.pdf」文档中展示的图形样式 
    void Graph::redraw()
    {
         while(1){
         	cin>>symbol>>size;
    	    draw();
    	 }
    	
    }
    

    graph.h

    #ifndef GRAPH_H
    #define GRAPH_H
    
    // 类Graph的声明 
    class Graph {
    	public:
    		Graph(char ch, int n);   // 带有参数的构造函数 
    		void draw(); 	// 绘制图形 
    	    void redraw();
    	private:
    		char symbol;
    		int size;
    };
    
    
    #endif
    

    Main.cpp

    #include <iostream>
    #include "graph.h"
    using namespace std;
    
    
    int main() {
    	Graph graph1('*',5), graph2('$',7) ;  // 定义Graph类对象graph1, graph2 
    	graph1.draw(); // 通过对象graph1调用公共接口draw()在屏幕上绘制图形 
    	graph2.draw(); // 通过对象graph2调用公共接口draw()在屏幕上绘制图形
    	graph1.redraw();
    	return 0; 
    }
    

    draw的算法:一行一行输出,最外层循环控制行数,里面第一个循环输出空格(有规律),紧接着的循环输出指定符号个数(有规律),接着换行,一行就完成了,可以进行下一行。

    关于第二道改变控制台前景颜色和背景颜色的,百度了一下,发现有两种,一种是利用graphics.h 但是这个好像要在专门的一个软件里面,另一种是Windows.h 虽然两种都没有弄明白orz

    第三道选做改变位置,有一点想法,但是没试过,就是getchar()一个字符,然后去重新定义一下输出软,但是又个疑惑,如果一开始是上或者是左键,图案怎么移动?

    第三题实话没有做出来,程序有问题,一直报错说我的载入模糊不清,但是我不知道怎么改了,希望有大神帮我看一下,谢谢惹~

    fraction.cpp

    # include <iostream>
    # include "fraction.h"
    using namespace std;
    
    Fraction::Fraction(int t,int b):top(t),botton(b){
    }
    Fraction::Fraction(){                  //函数的重载 
    	top=0;
    	botton=1;
    }
    Fraction::Fraction(int t):top(t){     //函数的重载
           botton=1;
    }
    Fraction::~Fraction()
    {}
    void Fraction::fenshu(){
    	cout<<top<<"/"<<botton;
    }
    
    void Fraction::add(Fraction &f){
    	cout<<top*f.botton+top*f.botton<<"/"<<botton*f.botton<<endl;  //加法          //加法 
    	 } 
    
    void Fraction::minus(Fraction &f){
    	cout<<top*f.botton-f.top*botton<<"/"<<botton*f.botton<<endl; //减法        	
    	}
    	
    void Fraction::multiplication(Fraction &f){
    	cout<<top*f.top<<"/"<<botton*f.botton<<endl;    //乘法		
    		}
    		
    void Fraction::division(Fraction &f){
    	cout<<top*f.botton<<"/"<<botton*f.top<<endl;    //除法 	
    		}
    		
    void Fraction::compare(Fraction &f){
    	int m=top,n=botton;
    	int p=f.top,q=f.botton;
    	double w=top/botton;
    	double j=f.top/f.botton;
    		if (w>j){
    		  cout<<"b较大"<<endl;	
    		}	
    		  if (w<j){
    			cout<<"b较小"<<endl;
    		  }
    		else {
    			cout<<"一样大"<<endl;
    		}
    		
    }
    		
    void Fraction::refenshu(){                    //分数输入输出 
    	while(1){
    		cin>>top>>botton;
    	    fenshu();
    	}
    
    }
    

    fraction.h

    #ifndef FRACTION_H
    #define FRACTION_H
    class Fraction{
    	public:
    		Fraction(int t=0,int b=1);
    		Fraction();
    		Fraction(int t);
    		~Fraction();
    		Fraction(Fraction &f);
    		void fenshu();
    		void add(Fraction &f);
    		void minus(Fraction &f);
    		void multiplication(Fraction &f);
    		void division(Fraction &f);
    		void compare(Fraction &f);
    		void refenshu();
        private:
    	    int top;
    		int botton;
    		
    };
    #endif
    

    main.cpp

    # include <iostream>
    # include "fraction.h"
    using namespace std;
    int main(){
    	Fraction a;
    	Fraction b(3,4);
    	Fraction c(5);
        b.add(c);
    	b.minus(c);
    	b.multiplication(c);
    	b.division(c);
    	b.compare(c);
    	b.refenshu();
    	return 0;
    }
    

    做这题的时候有很多很多的问题暴露出来:
    1.复制构造函数的运用,我运用他的时候,并没有将它放入函数成员参数中,导致了报错。
    2.实现函数的时候忘记将类放在前面,对类中函数与对象的输出还不够确定代码怎么敲,掌握的不好。
    3.重载函数一开始忘了使用,运用的不熟。
    4.还有就是一些题目中要求功能的函数如何编写的问题了,不知道如何编写使得满足要求。

    最后还是要提醒一下自己再把第三四章内容重新看看,在这几次作业中都有很多这两章内容的细节需要注意。

  • 相关阅读:
    Jenkins构建常见问题
    Jenkins搭建.NET自动编译发布远程环境
    Jenkins搭建.NET自动编译发布本地环境
    Web API系列(四) 使用ActionFilterAttribute 记录 WebApi Action 请求和返回结果记录
    C# 异步编程(async&await)
    [root@localhost ~]# /etc/httpd/conf/httpd.conf bash: /etc/httpd/conf/httpd.conf: 权限不够
    解决apache启动失败:Job for httpd.service failed.
    Windows环境下PHP配置详解
    如何以管理员身份运行cmd
    win8如何设置以管理员身份运行
  • 原文地址:https://www.cnblogs.com/zxy666/p/8922054.html
Copyright © 2011-2022 走看看