第一次编程

摘要:
=')';i++)20{21s2[j]=strr[i];22pt[1]=atof;j++;23}24}25voidtt26{27charstr1[20],str2[20],str3[20];28switch{29case3:{30cin˃˃str3;31find;32}33case2:{34cin˃˃str2;35find;36}37case1:{38cin˃˃str1;39find;40break;41}42default:cout˂˂"输入错误"˂˂endl;43}4445}464748intmain{49charname[60],trans[20],name1[60],str[20],s[20];50intn;51doubledeg;52Vector2dmove,v1,v2,v3;53MatrixXdrot(2,2);5455cout˂˃name;57cin˃˃n;58tt;59cout˂˂"请输入操作指令"˂˃trans;61cin˃˃name1;62if63{64cin˃˃str;65find;66switch67{68case3:v3+=move;cout˂˂""˂˂endl;69case2:v2+=move;cout˂˂""˂˂endl;70case1:v1+=move;cout˂˂""˂˂endl;break;71default:cout˂˂"输入出错"˂˃deg;78deg=deg*3.14/180;79rot(0,0)=cos;80rot(0,1)=-sin;81rot(1,0)=sin;82rot(1,1)=cos;8384switch85{86case3:v3=v3.transpose()*rot;cout˂˂""˂˂endl;87case2:v2=v2.transpose()*rot;cout˂˂""˂˂endl;88case1:v1=v1.transpose()*rot;cout˂˂""˂˂endl;break;89default:cout˂˂"输入出错"˂˂endl;90}91}92return0;93}code1.进行move平移指令2.进行rotate旋转指令小结:本次编程参照了张杭峰同学和杨春琦同学的编程思维。http://www.cnblogs.com/silentteen/p/5007509.html该程序即为对二维数组的加减运算以及旋转矩阵运算。难点在于对数组、坐标格式的读取,以及分类讨论分类处理上。
第一次编程第1张第一次编程第2张
1 #include <iostream>
2 #include <stdlib.h>
3 #include <Eigen/Dense>
4 #include <math.h>
5 /*run this program using the console pauser or add your own getch, system("pause") or input loop */
6 using namespacestd;
7 using namespaceEigen; 
8 
9 void find(char *strr,Vector2d &pt)
10 {
11     int i=1,j=0;
12     char s1[5],s2[5];
13     for(;i<10&&strr[i]!=',';i++)
14 {
15         s1[j]=strr[i];
16         pt[0]=atof(s1);j++;
17 }
18     i++;
19     for(j=0;i<20&&strr[i]!=')';i++)
20 {
21         s2[j]=strr[i];
22         pt[1]=atof(s2);j++;    
23 }
24 }
25 void tt(int n1,Vector2d &pt1,Vector2d &pt2,Vector2d &pt3)
26 {
27         char str1[20],str2[20],str3[20];
28         switch(n1){
29             case 3: {
30                 cin>>str3;
31 find(str3,pt3);
32 }
33             case 2: {
34                 cin>>str2;
35 find(str2,pt2);
36 }    
37             case 1: {
38                 cin>>str1;
39 find(str1,pt1);
40                 break;
41 }
42             default:cout<<"输入错误"<<endl;
43 }
44                         
45 }
46 
47 
48 int main(int argc, char**argv) {
49     char name[60],trans[20],name1[60],str[20],s[20];
50     intn;
51     doubledeg;
52 Vector2d move,v1,v2,v3;
53     MatrixXd rot(2,2);
54 
55     cout<<"请输入 ";
56     cin>>name;
57     cin>>n;
58 tt(n,v1,v2,v3);
59     cout<<"请输入操作指令"<<endl;
60     cin>>trans;
61     cin>>name1;
62     if(trans[0]=='m'&&trans[1]=='o'&&trans[2]=='v'&&trans[3]=='e'&&trans[4]==0)
63 {
64         cin>>str;
65 find(str,move);
66         switch(n)
67 {
68         case 3:v3+=move;cout<<"("<<v3[0]<<","<<v3[1]<<")"<<endl;
69         case 2:v2+=move;cout<<"("<<v2[0]<<","<<v2[1]<<")"<<endl;
70         case 1:v1+=move;cout<<"("<<v1[0]<<","<<v1[1]<<")"<<endl;break;
71         default: cout<<"输入出错"<<endl;
72          
73 }
74 }
75     else if(trans[0]=='r'&&trans[1]=='o'&&trans[2]=='t'&&trans[3]=='a'&&trans[4]=='t'&&trans[5]=='e'&&trans[6]==0)
76 {
77         cin>>deg;
78         deg=deg*3.14/180;
79         rot(0,0)=cos(deg);
80         rot(0,1)=-sin(deg);
81         rot(1,0)=sin(deg);
82         rot(1,1)=cos(deg);
83         
84          switch(n)
85 {
86         case 3:v3=v3.transpose()*rot;cout<<"("<<v3[0]<<","<<v3[1]<<")"<<endl;
87         case 2:v2=v2.transpose()*rot;cout<<"("<<v2[0]<<","<<v2[1]<<")"<<endl;
88         case 1:v1=v1.transpose()*rot;cout<<"("<<v1[0]<<","<<v1[1]<<")"<<endl;break;
89         default: cout<<"输入出错"<<endl;  
90 }  
91 }  
92     return 0;
93 }
code

1.进行move平移指令

第一次编程第3张

2.进行rotate旋转指令

第一次编程第4张

小结:本次编程参照了张杭峰同学和杨春琦同学的编程思维。http://www.cnblogs.com/silentteen/p/5007509.html

该程序即为对二维数组的加减运算以及旋转矩阵运算。难点在于对数组、坐标格式的读取,以及分类讨论分类处理上。

解决措施:编写find函数进行字符串至数字的转化,利用tt函数,switch,case,break功能进行点数的分类讨论,分别赋值。

免责声明:文章转载自《第一次编程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux内核驱动中对文件的读写 【转】记Windows10下安装Docker的步骤下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

OHC Java堆外缓存详解与应用

缓存框架OHC基于Java语言实现,并由其他Java程序以类库的形式调用。它是以独立模式运行的堆外缓存。特定于JVM应用程序,它可以分为堆内缓存和堆外缓存。OHC的全名是堆外缓存或堆外缓存。它是一个基于Java的堆外缓存框架键值。...

C# 获取枚举 Enum 变量值的 Description 属性

如何在C#中读取枚举值的描述属性?有以下枚举:123456 public enum enum Langage{[System.ComponentModel.Description]Chinese,English}我们希望得到的是中文中的“Chinese”描述。123456789 publicstringGetEnumDescription{stringstr...

Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-1

3 MATLAB2009之后,并行计算工具箱和并行计算服务退出。通过PCT和DCS,用户可以实现基于多核平台、多处理器平台和集群平台的多个并行计算任务。除了支持上述通用功能外,PCT还增加了对GPU单元的支持。现在来看彼此已经太晚了:用parfor并行化for循环。在编程中,使计算量最小化的代码总是一个循环。7 parpool命令在不启动并行池的情况下配置并...

SqlServer数据库存入decimal类型数据注意事项

对于sqlserver,Decimal可用于存储具有小数点和固定值的值。与浮点和实数不同,十进制用于存储近似值。目的是满足精确数学运算的需要。它是最大和最精确的浮点数字类型。对于十进制类型,请注意必须指定精度;否则,十进制只能存储为整数,就像int一样。例如,十进制是存储长度为18位和小数点后2位的数据。...

Ubuntu安装时怎样分区

应该首先放置启动分区。并将引导设置为主分区。如果是双系统或多系统安装,通常可以选择逻辑分区。首先,Grub可以在1024柱面后面引导Linux内核;第二,即使有多个Linux安装,/boot也可以完全不共享。此外,非独立/引导分区仅占用根文件夹下约20MB的空间。所以决定是否启动。...

Windows 远程桌面连接ubuntu及xrdp的一些小问题(远程桌面闪退、连接失败、tab补全功能,无菜单栏,error

想要修改,在windowsmanager中,keyboard里将用到Super+Tab的快捷键clear掉即可。解决:通过设置sesman.in文件内的参数解决:cat/etc/xrdp/sesman.inivi/etc/xrdp/sesman.ini可以修改会话设置:将最大会话限制该大MaxSessions=50;将KillDisconnected=1;则...