烟大 Contest1024 - 《挑战编程》第一章:入门 Problem E: Graphical Editor(模拟控制台命令形式修改图形)
Problem E: Graphical Editor
Time Limit: 1 Sec Memory Limit: 64 MB
Submit: 2 Solved: 2
[Submit][Status][Web Board]
Description
Input
| I M N | Create a new M x N image with all pixels initially colored white (O). |
| C | Clear the table by setting all pixels white (O). The size remains unchanged. |
| L X Y C | Colors the pixel (X, Y) in color (C). |
| V X Y1 Y2 C | Draw a vertical segment of color (C) in columnX, between the rows Y1 and Y2 inclusive. |
| H X1 X2 Y C | Draw a horizontal segment of color (C) in the row Y, between the columns X1 and X2inclusive. |
| K X1 Y1 X2 Y2 C | Draw a filled rectangle of color C, where (X1,Y1) is the upper-left and (X2, Y2) the lower right corner. |
| F X Y C | Fill the region R with the color C, where R is defined as follows. Pixel (X, Y) belongs to R. Any other pixel which is the same color as pixel(X, Y) and shares a common side with any pixel in R also belongs to this region. |
| S Name | Write the file name in MSDOS 8.3 format followed by the contents of the current image. |
| X | Terminate the session. |
Output
Sample Input
Sample Output
HINT
模拟题。模拟的是控制台输命令的形式操作图片。
用switch()语句分别定义每一个命令。
需要注意的是F(填充命令),它的意思是将(X,Y)点的像素颜色相同的区域全部填充为C颜色。
其中样例输入里面的G命令是错误命令,意思是提示你遇到错误命令的时候不做处理。
另外,S NAME命令里提到了 MSDOS 8.3短文件名 格式输出,它的意思是:
8代表主文件名长度不超过8个字符。
3代表后缀名长度不超过3个字符。
且文件名内不能包括空格。
My code:
#include <iostream>
#include <string.h>
using namespace std;
char a[][];
int main()
{
//command
char com;
//C
int M,N;
//L
int lx,ly;
char lc;
//V
int vx,vy1,vy2;
char vc;
//H
int hx1,hx2,hy;
char hc;
//K
int kx1,kx2,ky1,ky2;
char kc;
//F
int fx,fy;
char fc,cc;
//S
string l;
while(cin>>com){
if(com=='X') //遇到X退出
break;
if(com!='I' && com!='C' && com!='L' && com!='V' && com!='H' && com!='K' && com!='F' && com!='S'){ //其他命令退出
getline(cin,l);
continue;
}
switch(com){
case 'I':
cin>>M>>N;
for(int i=;i<=N;i++) //创建M*N的空白(O)画板
for(int j=;j<=M;j++){
a[i][j]='O';
}
break;
//默认全部为O
case 'C':
//清空所有色彩为O
for(int i=;i<=N;i++) //清空画板
for(int j=;j<=M;j++){
a[i][j]='O';
}
case 'L':
cin>>lx>>ly>>lc;
a[ly][lx]=lc; //将lx,ly位置的颜色填充为lc
break;
case 'V':
cin>>vx>>vy1>>vy2>>vc;
for(int i=vy1;i<=vy2;i++)
a[i][vx]=vc; //将x列vy1到vy2的像素颜色填充为vc
break;
case 'H':
cin>>hx1>>hx2>>hy>>hc;
for(int i=hx1;i<=hx2;i++)
a[hy][i]=hc; //将y行vx1到vx2的像素颜色填充为hc
break;
case 'K':
cin>>kx1>>kx2>>ky1>>ky2>>kc;
for(int i=ky1;i<=ky2;i++) //填充kx1,kx2,ky1,ky2区域为kc颜色
for(int j=kx1;j<=kx2;j++){
a[i][j]=kc;
}
break;
case 'F':
cin>>fx>>fy>>fc;
cc=a[fy][fx];
for(int i=;i<=N;i++) //填充画板与x,y点颜色相同的区域颜色为C
for(int j=;j<=M;j++){
if(a[i][j]==cc)
a[i][j]=fc;
}
break;
case 'S':
cin>>l;
cout<<l<<endl; //先输出文件名
for(int i=;i<=N;i++){ //显示
for(int j=;j<=M;j++)
cout<<a[i][j];
cout<<endl;
}
break;
}
}
return ;
} /**************************************************************
Problem: 1498
User: freecode
Language: C++
Result: Accepted
Time:0 ms
Memory:1328 kb
****************************************************************/
Freecode : www.cnblogs.com/yym2013
烟大 Contest1024 - 《挑战编程》第一章:入门 Problem E: Graphical Editor(模拟控制台命令形式修改图形)的更多相关文章
- ACM YTU 《挑战编程》第一章 入门 Problem E: Graphical Editor
Description Graphical editors such as Photoshop allow us to alter bit-mapped images in the same way ...
- Windows核心编程第一章.错误处理
Windows核心编程第一章,错误处理. 一丶错误处理 1.核心编程学习总结 不管是做逆向,开始做开发.在Windows下.你都需要看一下核心编程这本书.这本书确实写得很好.所以自己在学习这本书的同时 ...
- .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来,首先,请允许我长吸一口气!真没想到一份来自28岁老程序员 ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(CMS)-第一章 入门篇-开篇及总体规划
.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划 原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来 ...
- 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem D: LC-Display(模拟计算器显示数字)
Problem D: LC-Display Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 14 Solved: 3[Submit][Status][We ...
- Java 面向对象编程——第一章 初识Java
第一章 初识Java 1. 什么是Java? Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以其强安全性.平台无关性.硬件结构无关性.语言简 ...
- Java学习笔记 第一章 入门<转>
第一章 JAVA入门 一.基础常识 1.软件开发 什么是软件? 软件:一系列按照特定顺序组织的计算机数据和指令的集合 系统软件:DOS,Windows,Linux 应用软件:扫雷.QQ.迅雷 什么是开 ...
- windows核心编程-第一章 对程序错误的处理
第一章-对程序错误的处理 在开始介绍Microsoft Windows 的特性之前,必须首先了解 Wi n d o w s的各个函数是如何进行错误处理的. 当调用一个Wi n d o w s函数时,它 ...
- UNIX环境高级编程--第一章 UNIX基础知识
第一章 UNIX基础知识 1.2 UNIX体系结构 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们将这种软件称为内核(kernel),因为 它相对较小,且 ...
随机推荐
- axel
Linux下多线程下载工具 - Axel 2011年10月8日 上午 | 作者:VPS侦探 Axel 是 Linux 下一个不错的HTTP/FTP高速下载工具.支持多线程下载.断点续传,且可以从多个地 ...
- 快速搭建ssh(最终版)
一个月又忘了.还是做个笔记.自己看下就能想起来... 1.在MyEclipse中新建web Project 2.首先整合struts
- 【福利将至】iPhone用户可用Siri发微信了
北京时间6月14日,苹果WWDC16开发者大会召开.继2015年3月份春季发布会和9月份的秋季新品发布会,苹果和腾讯联手Apple Watch版微信和微信3DTouch功能之后,双方在今年的WWDC上 ...
- Atlas安装及配置
==============linux下快捷键==================ctrl+insert 复制shift +insert 粘贴 输入文件名的前三个字母,按tab键自动补全文件名 在vi ...
- 获取IOS 设备基本信息
原地址:http://www.cnblogs.com/U-tansuo/p/ios_basis_info.html 1.获取设备类型 (Iphone/ipad 几?) #import "s ...
- App开发到App Store上架,发布流程。
http://blog.csdn.net/wojsg001/article/details/12005887 App开发到App Store上架,发布流程. 分类: IOS2013-09-25 11 ...
- 重写HashMap
package gov.gfmis.fap.util; import java.util.ArrayList; import java.util.HashMap; import java.util.L ...
- C++简单使用Jsoncpp来读取写入json文件
一.源码编译 C++操作json字符串最好的库应该就是jsoncpp了,开源并且跨平台.它可以从这里下载. 下载后将其解压到任意目录,它默认提供VS2003和VS2010的工程文件,使用VS2010可 ...
- Ubuntu 14.04/14.10下安装VMware Workstation 11图文教程
VMware workstation 是一个可以进行桌面操作的虚拟软件.它可以让我们在一台电脑或者虚拟机中运行多个虚拟机. 由VMware公司研发和维护.由于是商业软件,我们需要买他们家的许可证或者说 ...
- 深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器
UFLDL即(unsupervised feature learning & deep learning).这是斯坦福网站上的一篇经典教程.顾名思义,你将在这篇这篇文章中学习到无监督特征学习和 ...