zoukankan      html  css  js  c++  java
  • 第一次编程作业

    作业要求链接
    github


    第一次编程作业暂时完成了简单的要求,但仍然存在一些问题:

    • 输入的图形的name目前并没有起到什么作用,应该是用类的方式来编写,但是由于C++掌握的不够,对类的应用还不到位,还没有形成这种思维以及编写方式。
    • 没有完善的判断,目前程序只有在输入格式完全符合要求才能好好运行,对于输错的情况没有判断。

    程序如下:

    main.cpp

    #include <iostream>
    #include "method.h"
    #include <cstring>
    using namespace std;
    
    int main(){
    	char name[10];
    	int point_num;
    	char point_trans[20]; //用于临时接收坐标值 
    	cout << "请输入图形:"<< endl; 
    	cin >> name;
    	cin >> point_num;
    	Vector2d point[point_num]; //根据点生成向量数组 
    	
    	for(int i = 0; i < point_num; i++){
    		cin >> point_trans;
    		point[i] = getpoint(point_trans);
    	}
    
    	cout << "请输入操作指令:"<<endl; 
    	char manip[10];
    	char name_cmp[10];
    	double angle;
    	cin >> manip;
    	cin >> name_cmp;
    	
    	if(strcmp(manip, "move") == 0){
    		cin >> point_trans;
    		Vector2d u = getpoint(point_trans);
    		for(int i = 0; i < point_num; i++){
    			point_move(point[i], u);
    		}
    	}
    	else if(strcmp(manip, "rotate") == 0){
    		cin >> angle;
    		for(int i = 0; i < point_num; i++){
    			point_rotate(point[i], angle);
    		}
    	}
    	
    	cout <<"操作后的结果为:"<< endl;	
    	for(int i = 0; i < point_num; i++){
    		cout << "(" << point[i](0) << "," << point[i](1) << ")";
    		cout <<"  ";
    	}
    	cout << endl;
    	
    	return 0;
    }
    

    method.h

    #include <Eigen/Dense>
    #include <cmath>
    #include <cstring>
    #define PI 3.14159265
    using namespace Eigen;
    
    Vector2d getpoint(char *str){
    	Vector2d v;
    	char x[10], y[10];
    	int i = 1, j = 0;
    	for (; i<20 && str[i]!=','; i++ ){
    			x[j] = str[i];
    			j++;
    	}
    	i++;
    	j = 0;
    	for (; i<20 && str[i]!=')'; i++){
    		y[j] = str[i];
    		j++;
    	}
    	v(0) = atof(x);
    	v(1) = atof(y);
    	return v;
    }
    
    void point_move(Vector2d &v, Vector2d &u){
    	v = v + u;
    }
    
    void point_rotate(Vector2d &v, double &angle){
    	Matrix2d T;
    	angle = angle * PI / 180;
    	T << cos(angle), -sin(angle),
    	     sin(angle), cos(angle);
    	v = T * v;
    }
    

    运行结果如图:

    Sola
  • 相关阅读:
    JVM体系结构和工作方式
    ClassLoader工作机制
    Javac编译原理
    类与类之间的几种关系
    一周总结汇总_2016-09-04
    一周规划汇总_2016-09-04
    Java基础知识笔记(一:修饰词、向量、哈希表)
    控制反转IoC简介
    DBCP连接池简介
    Struts与Struts2的区别
  • 原文地址:https://www.cnblogs.com/akisaya/p/5008549.html
Copyright © 2011-2022 走看看