11/12 《南坊车站的聚会》 野格 酒吧

确认下要不要买电影票

  • 学习强国41分
  • 10道OJ题
  • 看两篇专利
  • 学MATLAB RoboticTools

11 逆序输出1到4位正整数
问题描述 :
输入一个不多于4位的正整数,要求按逆序打印出各个位上的数字,例如原数为23,应输出32;如原数为8000,应输出0008;如原数为1,则输出1。应测试以下情况:输入的数为1位、2位、3位、4位正整数;此外,还应测试以下异常情况:输入负数或0,或输入的数超过4位。
输入说明 :
输入一个整数,可能为0,也可能为负数。
输出说明 :
输入1到4位的正整数时,输出该数的逆序,如果是其它整数,则输出“error!”。输出时,行首与行尾均无空格。

#include <cmath>
#include<cstring>
using namespace std;

int main()
{
    string a;
    cin>>a;
    //cout<<a[0];代表输入字符串中第一位的东西
    if (a[0] == '0' || a.length()>4||a[0]=='-')
	{
		printf("error!");
		return 0;
	}
	for (int i = a.length() - 1; i >= 0; i--)//a.length()
	{
		cout << a[i];
	}
	cout << endl;
	return 0;
}

12 简单加减乘除
问题描述 :
从键盘输入两个实数到变量a和b中,然后输入一个数字代表进行的运算,该数字为1则代表对a和b做加法,2代表减法,3代表乘法,4代表除法。
如果输入1 3 4,表示进行1/3的操作,结果为0.333333。输出时,保留两位小数,因此输出0.33。
注:可直接使用printf的控制格式实现保留两位小数的目的。
输入说明 :
输入两个实数,再输入一个1到4的整数,三个数字之间以空格分隔。
输出说明 :
输出计算结果,保留两位小数。如果做除法,但分母是0,则输出“error!”。输出时,行首与行尾均无空格。

#include <iostream>
#include<cmath>
#include<cstdio>
using namespace std;

int main()
{
    //cout<<"input 2 num and one operator(1:+ 2:- 3:* 4:/)"<<endl; oj系统的输入输出必须完全一样,不要自己加某句输入输出
    float a,b,ans;
    int op;
    cin>>a>>b>>op;
    switch (op){
case 1:
    ans=a+b;
    printf("%.2f",ans);break;
case 2:
    ans=a-b;
    printf("%.2f",ans);break;
case 3:
    ans=a*b;
    printf("%.2f",ans);break;
case 4:
    if (b!=0){
        ans=a/b;
        printf("%.2f",ans);
    }
    else{
        cout<<"error!"<<endl;
    };
    break;
    }
    //printf("%.2f",ans);
    return 0;
}

13 字母的前趋或后继
问题描述 :
输入一个小写英文字母。如果这个字母是英文字母表的前13个字母中的一个(m字母及m以前的字母),则输出它的后一个字母;否则输出它的前一个字母。 比如输入a,则输出b,输入z,则输出y。
输入说明 :
输入一个小写字母,不需要考虑其它字符。在行首和行尾没有多余的空格。
输出说明 :
对应输入的小写字母,输出它对应的前趋或后继字母。行首和行尾不要输出多余的空格。

#include <iostream>

using namespace std;

int main()
{
    char a;
    cin>>a;
    if ((int)a<=109){
        cout<<(char)(a+1)<<endl;
    }
    else{
        cout<<(char)(a-1)<<endl;
    }
    return 0;
}

14 门票价格计算
问题描述 :
某旅游景点门票价格为每人5元。但团体可以优惠,分为以下情况:
人数超过20,则所有人优惠10%;
人数超过40,则所有人优惠15%;
人数超过80,则所有人优惠20%;
人数超过120,则所有人优惠30%。
请跟据团体的人数,求出该团体的总门票价格。
输入说明 :
输入一个整数i(0≤i≤1,000),表示一个团体的总人数。在行首和行尾没有多余的空格。
输出说明 :
输出一个实数,即该团体需要支付的总票价,精确到小数点后2位。在行首和行尾不要输出多余的空格。

#include <iostream>
#include<cstdio>
using namespace std;

int main()
{
    int num;
    float total;
    cin>>num;
    if(num>120){
        total=5*num*0.7;
    }
    else if(num>80){
        total=5*num*0.8;
    }
    else if(num>40){
        total=5*num*0.85;
    }
    else if(num>20){
        total=5*num*0.9;
    }
    else{
        total=5*num;
    }
        printf("%.2f",total);
    return 0;
}

15 星期几问题
问题描述 :
根据一个范围在0至6的整数,用英文输出它对应的是星期几。(0对应Sunday,1对应Monday, 2对应Tuesday, 3对应Wednesday, 4对应Thursday, 5对应Friday, 6对应Saturday)
输入说明 :
输入一个整数n(0 ≤ n ≤ 6)。在行首和行尾没有多余的空格。
输出说明 :
输出一个字符串,即输入n对应的星期几的英文名称,请注意大小写。在行首和行尾不要输出多余的空格。

#include <iostream>

using namespace std;

int main()
{
    int a;
    cin>>a;
    switch(a){
case 0:
    cout<<"Sunday";break;
case 1:
    cout<<"Monday";break;
case 2:
    cout<<"Tuesday";break;
case 3:
    cout<<"Wednesday";break;
case 4:
    cout<<"Thursday";break;
case 5:
    cout<<"Friday";break;
case 6:
    cout<<"Saturday";break;
    }
    return 0;
}

16 时间相加
问题描述 :
输入两个时间A和B,分别都由3个整数组成,分别表示时分秒,比如,假设A为34 45 56,就表示A所表示的时间是34小时 45分钟 56秒。
输出A+B即两个时间相加后的结果。
输入说明 :
输入数据由6个整数AH,AM,AS,BH,BM,BS组成,分别表示时间A和B所对应的时分秒。题目保证所有的数据合法。
输出说明 :
输出A+B,输出结果也由时分秒三部分组成,同时也要满足时间的规则(即:分和秒的取值范围在0~59),输出仅占一行,整数之间以一个空格分隔,行首与行尾无多余空格。

#include <iostream>

using namespace std;

int main()
{
    int AH,AM,AS,BH,BM,BS;
    int H,M,S;
    cin>>AH>>AM>>AS>>BH>>BM>>BS;
    S=(BS+AS)%60;
    M=(BM+AM+(BS+AS)/60)%60;
    H=AH+BH+(BM+AM+(BS+AS)/60)/60;
    cout <<H<<" "<<M<<" "<<S<< endl;
    return 0;
}

17 成绩转换
问题描述 :
输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下:
90~100为A;
80~89为B;
70~79为C;
60~69为D;
0~59为E;
输入说明 :
输入一个整数。
输出说明 :
输出对应结果,占一行。如果输入数据不在0~100范围内,请输出一行:“Score is error!”。
注意:无多余空格。

#include <iostream>
using namespace std;
int main()
{
    int t;
    cin>>t;
    switch(t/10){
case 10:
case 9:
    cout<<"A";break;
case 8:
    cout<<"B";break;
case 7:
    cout<<"C";break;
case 6:
    cout<<"D";break;
default:
    cout<<"E";break;
    }
    return 0;
}

18 A+B
问题描述 :
计算两个数的和
输入说明 :
第一行为N 以下N行,每行两个数A,B
输出说明 :
输出N行 每行为A+B的值

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int n,a,b,c;
    cin>>n;
    while(n!=0)
    {
        cin>>a>>b;
        c=a+b;
        cout<<c<<endl;
        n=n-1; //n--;
    }
   return 0;
}

19 字母的前趋或后继
问题描述 :
输入一个小写英文字母。如果这个字母是英文字母表的前13个字母中的一个(m字母及m以前的字母),则输出它的后一个字母;否则输出它的前一个字母。
输入说明 :
你的程序需要从标准输入设备(通常为键盘)中读入多组测试数据。每组输入数据占一行,由一个小写字母组成。在行首和行尾没有多余的空格。
输出说明 :
对每组测试数据,你的程序需要向标准输出设备(通常为启动该程序的文本终端)依次输出一组对应的答案。对应每一个输入的小写字母,输出它对应的前趋或后继字母,每行一个。在所有数据前后不要输出多余的空行,两组数据之间也不要输出多余的空行。

19和20题,我写的代码可以通过oj系统,但是在单个逐行输入/输出这部分,我还没搞明白。。还要再改

#include <iostream>
#include<cstdio>
using namespace std;

int change(char a){
if ((int)a<=109){
        cout<<(char)(a+1)<<endl;
    }
    else{
        cout<<(char)(a-1)<<endl;
    }
    return 0;
}

int main()
{
   char a;
   while (scanf("%c\n",&a)!=EOF){
    change(a);
   };
   return 0;
}

20 幼儿园分班问题
问题描述 :
某幼儿园只招收2至6岁的小孩。2、3岁入小班,4岁入中班,5、6岁入大班。给出一个孩子的年龄,请问他应该被分到什么班。
输入说明 :
你的程序需要从标准输入设备(通常为键盘)中读入多组测试数据。每组输入数据占一行,其中只包含一个整数i(1≤i≤10),表示一个孩子的年龄。在行首和行尾没有多余的空格。
输出说明 :
对每组测试数据,你的程序需要向标准输出设备(通常为启动该程序的文本终端,例如你在Windows中启动该程序所用的命令行终端)依次输出一组对应的答案。每组答案占一行,其中包含这个孩子应该进入的班级。如果是小班,则输出“One.”;如果是中班,则输出:“Two.”;如果是大班,则输出:“Three.”;如果该孩子的年龄不能进入幼儿园,则输出:“No.”。在行首和行尾不要输出多余的空格;在所有数据前后不要输出多余的空行;两组数据之间也不要输出多余的空行。

#include <iostream>
#include<cstdio>
using namespace std;

int fenban(int age)
{
    if(age>6){
        cout<<"No."<<endl;
    }
    else if(age>4){
        cout<<"Three."<<endl;
    }
    else if(age>3){
        cout<<"Two."<<endl;
    }
    else if(age>1){
        cout<<"One."<<endl;
    }
    else{
        cout<<"No."<<endl;
    }
    return 0;}
    
int main()
{
   int age;
   while (scanf("%d\n",&age)!=EOF){
    fenban(age);
   };
   return 0;
}

功能的实现:

1、 保留小数点后两位数
#include<iomanip>//要用到格式控制符,用来保留小数点后2位
……
    cout<<fixed<<setprecision(2)<<Distance<<endl;;//这里Distance是个浮点型变量
    //使用setprecision(n)可控制输出流显示浮点数的数字个数
    //如果和fixed合用的话,可以控制小数点后面有几位
    //没有fixed的话,控制的是浮点型总的输出个数(小数点前和后)

或者不用添加头文件,使用下列输出格式

printf("%.2lf0000",f);//%lf 输出长双精度型数据 .2 代表保留两位小数 0000代表输出4个0
2、 类型转换
    char c;//小写转大写
    cin>>c;
    cout<<(char)(c-32)<<endl;
    //这里的(char)是将字符型变量c与32相减后,得到的整型再转换为字符型,对应ASCII
    //同理,(int)c 可将字符型转换为整型
3、向下取整——实现四舍五入到小数点后一位
 total=floor(10.0*ave+0.5)/10*num;//floor()函数 向下取整
 printf("%.2f",total);//输出浮点型数据,保留两位小数
 例如,ave=4.67
 4.67*10+0.5=47.2===>floor()=47.0===>/10=4.7
4、 cin ch等价于ch=getchar()

MATLAB RT

开启工具箱

startup_rvc

以下内容来自《机器人仿真与编程技术》杨辰光 李智军 许扬编著 清华大学出版社
侵权必删

围绕X轴做转角为180°的旋转变换:

R=rotx(pi)

如果直接用角度θ表示,可以分别用rotx(θ,‘deg’),roty(θ,‘deg’),rotz(θ,‘deg’)计算旋转矩阵。

R=rotx(180'deg')

以上两种方式,都可以得到旋转矩阵。
函数trplot()可以用图形表示相应的体坐标系,函数tranimate()用动画展示世界坐标系旋转为体坐标系的过程。

trplot(R)
tranimate(R)

函数解析
1)获取旋转矩阵
(1)rotx():R=rotx(θ)是表示围绕X轴旋转弧度为θ得到的旋转矩阵,返回一个3X3的矩阵。
(2)roty():R=roty(θ)是表示围绕Y轴旋转弧度为θ得到的旋转矩阵,返回一个3X3的矩阵。
(3)rotx():R=rotz(θ)是表示围绕Z轴旋转弧度为θ得到的旋转矩阵,返回一个3X3的矩阵。
以上三个函数中,可选参数为“deg”,表示角度值,单位为度(degree)。
2)绘制坐标系
函数为:trplot()
(1)trplot®:绘制由旋转矩阵得到的坐标系,其中坐标系根据正交旋转矩阵围绕原矩阵得到,R为3X3的矩阵。
(2)trplot(T):绘制由骑次变换矩阵T表示的三维坐标系,其中T为4X4的矩阵。
还包含许多可选参数

参数意义参数意义
‘noaxes’再绘图上不显示坐标轴‘axis’,A将图形显示的轴尺寸设置为A,其中A=[xmin xmax ymin ymax z min z max]
‘color’,C设置轴的颜色,C代表MATLAB图形内置的颜色类型‘frame’,F将绘制出来的坐标系命名为F。并且X,Y,Z轴的下标含有F
‘tetx_opts’,opt调整显示文本的字体大小等属性;例如{‘FontSize’,10,‘FontWeight’,‘blod’}‘view’,V设置绘图视图参数V=[az el]角度,或者对于坐标系的原点查看‘auto’
‘length’,s坐标轴的长度(默认值1)‘arrow’设置坐标轴的末端为箭头,而不是线段
‘width’,w箭头宽度(默认为1)‘thick’,t线条粗细(默认0.5)
‘3d’在三维空间中使用浮雕图形绘制‘anaglyph’,A将“3d”的浮雕颜色指定为左右两个字符(默认颜色为红色“rc”:选自红,绿,蓝,青,品红)
‘dispar’,D3d显示差异(默认0.1)‘text’启用在框架上显示X,Y,Z标签
‘labels’,L使用字符串L的第1个,第2个,第3个字符标记X,Y,Z轴‘rgb’以红色,绿色,蓝色分别显示X,Y,Z轴

3)动画展示
函数为:tranimate()。
(1)tranimate(x1,x2,options)展示3D坐标系从姿态x1变换到姿态x2的动画效果。其中,姿态x1和x2由三种表示方法:一个4X4的齐次矩阵,或一个3X3的旋转矩阵,或一个四元数。
(2)tranimate(x,options)展示了坐标系由上一个姿态变换到姿态x的动画效果。同样的,姿态x也有三种表示方法:一个4X4的齐次矩阵,或一个3X3的旋转矩阵,或一个四元数。
(3)tranimate(xseq,options)展示了移动一段轨迹的动画效果。xseq可以是一组4X4XN的齐次矩阵,或一组3X3XN的旋转矩阵,或是一组四元数向量(NX1)。
它包含的可选参数如下:

参数意义参数意义
‘fps’,fps每秒显示的帧数(默认为10)‘nsteps’,n沿路径的步数(默认为50)
‘axis’,A设置三个轴的边界,A=[xmin xmax ymin ymax z min z max]‘movie’,M将帧保留位文件夹M中的文件,M为文件的路径
坐标变换
1平移坐标变换

函数transl()计算一段平移相对应平移变换矩阵。

2旋转坐标变换

trotx(),troty(),trotz()三个函数计算旋转变换矩阵,分别对应着X轴、Y轴和Z轴旋转一定的焦距,得到的是一个4X4的矩阵。

3齐次坐标变换

关于齐次变换矩阵 BAT ,机器人工具箱提供了函数t2r()可以提取旋转矩阵分量。而r2t()则可以将旋转矩阵转换成对应的齐次变换矩阵。
通过tranl()提取平移变换分量。

4本节函数解析

1)平移变换transl()
(1)使用transl()创建平移变换矩阵。
T=transl(x,y,z):表示能够获取一个分别沿着x,y,z轴平移一段距离得到的4x4齐次变换矩阵。
T=transl(p):表示经过矩阵(或向量)p=[x,y,z]的平移得到的齐次变换矩阵。如果p为(Mx3)的矩阵,则T为一组齐次变换矩阵(4x4xM),其中T(:,:,i)对应于p的第i行。
(2)使用transl()提取一个矩阵中的平移变换分量。
[x,y,z]=transl(T):x,y,z是齐次变换矩阵中的三个分量,是一个1
xM的向量。
p=transl(T):p是齐次变换矩阵中T的平移部分,是一个3xM的矩阵。

2)旋转坐标变换
(1)T=trotx(θ):表示围绕X轴旋转θ(弧度)得到的齐次变换矩阵(4x4)。
(2)T=troty(θ):表示围绕Y轴旋转θ(弧度)得到的齐次变换矩阵(4x4)。
(3)T=trotz(θ):表示围绕Z轴旋转θ(弧度)得到的齐次变换矩阵(4x4)。
以上3个函数中,可选参数为deg,表示角度值,单位为度(degree)。

3)t2r
R=t2r(T)获取齐次变换矩阵T中正交旋转矩阵分量。如果T是一个4x4的矩阵,则R是一个3x3的矩阵;如果T是一个3x3的矩阵,则R是一个2x2的矩阵。

4)r2t()
函数r2t()可将旋转矩阵转换为齐次变换矩阵。
T=r2t(R)获取一个正交旋转矩阵R等价的具有零平移分量的齐次变换矩阵。如果R是一个3x3的矩阵,则T是一个4x4的矩阵;如果R是一个2x2的矩阵,则T是一个3x3的矩阵。


专利看完更不知道机械臂在纺织上能怎么做,和老师谈后,提出要找到核心问题(行业难点或创新方法)。。。。。。抽象。要想想怎么下手了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值