3373:练64.2 图像旋转翻转变换

3373:练64.2 图像旋转翻转变换

信息学奥赛一本通-编程启蒙(C++版)在线评测系统

练 64.2 图像旋转翻转变换

信息学奥赛一本通-编程启蒙(C++版)在线评测系统




#include<bits/stdc++.h>
using namespace std;
int a[105][105],b[105][105],m,n,q,i,j;
int main()
{
	char c;
	cin>>m>>n;
	for(i=1;i<=m;i++)
	for(j=1;j<=n;j++)
	{
		cin>>a[i][j];
	}
	
	while(cin>>c)
	{
		for(i=1;i<=m;i++)
		for(j=1;j<=n;j++)
			switch(c)
			{
				case'A':b[j][m-i+1]=a[i][j];break;
				case'B':b[n-j+1][i]=a[i][j];break;
				case'C':b[i][n-j+1]=a[i][j];break;
				case'D':b[m-i+1][j]=a[i][j];break;
				default:break;
			}
		memcpy(a,b,sizeof(a));
		if(c=='A'||c=='B')
		{
			q=m;
			m=n;
			n=q;
		}
	}
	
	for(i=1;i<=m;i++)
	{
		for(j=1;j<=n;j++)cout<<a[i][j]<<" ";
		cout<<endl;
	}
	
	return 0;
}


#include<iostream>
#include<cstring>
using namespace std;
int a[101][101],b[101][101];
char e[101]; 

void A(int &m,int &n)
{
	int i,j,temp;
	for(i=1;i<=m;i++)
	for(j=1;j<=n;j++)
	{
		b[j][m+1-i]=a[i][j];
	}

	temp=m;m=n;n=temp;
	
	for(i=1;i<=m;i++)
	for(j=1;j<=n;j++)
	{
		a[i][j]=b[i][j];
    }
	
}
void B(int &m,int &n)
{
	A(m,n);
	A(m,n);
	A(m,n);
}
void C(int &m,int &n)
{
	int i,j;
	for(i=1;i<=m;i++)
	for(j=1;j<=n;j++)
	{
		b[i][n+1-j]=a[i][j];
	}
	
	for(i=1;i<=m;i++)
	for(j=1;j<=n;j++)
	{
		a[i][j]=b[i][j];
	}	
}

void D(int &m,int &n)
{
	int i,j;
	for(i=1;i<=m;i++)
	for(j=1;j<=n;j++)
	{
		b[m+1-i][j]=a[i][j];
	}
	
	for(i=1;i<=m;i++)
	for(j=1;j<=n;j++)
	{
		a[i][j]=b[i][j];
	}	
}

void xz(char t,int &m,int &n)
{
	if(t=='A')  A(m,n);
	if(t=='B')  B(m,n);
	if(t=='C')  C(m,n);
	if(t=='D')  D(m,n);
} 
int main()
{
	int i,j,m,n;
	scanf("%d%d",&m,&n);
	for(i=1;i<=m;i++)
	for(j=1;j<=n;j++)
	{
		scanf("%d",&a[i][j]);
	}
	
	scanf("%s",e);
	
	for(i=0;i<strlen(e);i++)
	{
		xz(e[i],m,n);
	}
	
	for(i=1;i<=m;i++)
	{
		for(j=1;j<=n;j++)
		{
			printf("%d ",a[i][j]);
		}
		printf("\n");
	}
	
	return 0;
}



 




《信息学奥赛一本通 编程启蒙C++版》3346-3350(5题)

《信息学奥赛一本通 编程启蒙C++版》3346-3350(5题)_3347:练60.1 丢失的数字-CSDN博客

35、《信息学奥赛一本通 编程启蒙 C++版》 3341-3350(10题)

35、《信息学奥赛一本通 编程启蒙 C++版》 3341-3350(10题)_3341:练58.1 严格排名-CSDN博客

《信息学奥赛一本通 编程启蒙C++版》3351-3355(5题)

《信息学奥赛一本通 编程启蒙C++版》3351-3355(5题)_3355【例61.3】 图书管理员-CSDN博客

《信息学奥赛一本通 编程启蒙C++版》3356-3360(5题)

《信息学奥赛一本通 编程启蒙C++版》3356-3360(5题)_3356:练61.1 统计字符数-CSDN博客

36、《信息学奥赛一本通 编程启蒙 C++版》 3351-3360(10题)

36、《信息学奥赛一本通 编程启蒙 C++版》 3351-3360(10题)_3353:【例61.1】 机器翻译-CSDN博客

《信息学奥赛一本通 编程启蒙C++版》3361-3365(5题)

《信息学奥赛一本通 编程启蒙C++版》3361-3365(5题)_练62.1 矩形的下三角-CSDN博客

《信息学奥赛一本通 编程启蒙C++版》3366-3370(5题)

《信息学奥赛一本通 编程启蒙C++版》3366-3370(5题)_3366:【例63.2】 回形方阵-CSDN博客

37、《信息学奥赛一本通 编程启蒙 C++版》 3361-3370(10题)

37、《信息学奥赛一本通 编程启蒙 C++版》 3361-3370(10题)_3364:练62.3 学习效率-CSDN博客

《信息学奥赛一本通 编程启蒙C++版》3371-3375(5题)

《信息学奥赛一本通 编程启蒙C++版》3371-3375(5题)_3375:【例65.1】 循环比赛-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dllglvzhenfeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值