烟大 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),因为 它相对较小,且 ...
随机推荐
- Kd-tree算法原理
参考资料: Kd Tree算法原理 Kd-Tree,即K-dimensional tree,是一棵二叉树,树中存储的是一些K维数据.在一个K维数据集合上构建一棵Kd-Tree代表了对该K维数据集合构成 ...
- zencart资源
http://www.zen-cart.cn/ http://www.ezencart.com/
- MySQL 高效分页
create PROCEDURE USP_GetByPager( _pageindex int, _pagesize int ) BEGIN )*_pagesize; select * from A ...
- 记一个奇怪的python异常处理过程
我的一个程序, 总是在退出时报异常, Exception TypeError: "'NoneType' object is not callable" in <functio ...
- 【初级为题,大神绕道】The app icon set named "AppIcon" did not have any applicable content 错误#解决方案#
The app icon set named "AppIcon" did not have any applicable content 错误,怎样解决 按照您的错误提示您应该 ...
- dedecms首页调用的简介一直修改不了是自动文章摘要在作怪
一位美女问:dedecms首页调用的简介一直修改不了,ytkah让她到具体的文章修改,然后再重新生成一下首页.她说还是不行.那就奇了怪了,点击到具体的文章页面是显示已经修改好了,为什么首页还是原来的呢 ...
- Nginx反向代理 负载均衡
nginx 这个轻量级.高性能的 web server 主要可以干两件事情: 〉直接作为http server(代替apache,对PHP需要FastCGI处理器支持): 〉另外一个功能就是作为反向代 ...
- [Effective JavaScript 笔记]第40条:避免继承标准类
ECMAScript标准库里配备了许多重要的类,如Array,function,以及Date等.扩展这些类生成子类可以方便完成很多工作,但它们的定义具有很多特殊的行为,所以很难写出行为正确的类. Ar ...
- Unix如何轻松快速复制
笔者在实践中总结了一套Unix操作系统硬盘的快速复制方法,成功地运用于建行几大Unix操作系统网络的建设中,收到了良好的效果.现将该方法介绍如下,供读者参考. 系统要求,两台主机软尽量相同.要求被复制 ...
- 学号160809212姓名田京诚C语言程序设计实验2选择结构程序设计
编写一个C程序,输入3个数,并按由大到小的顺序输出. 1 #include <stdio.h> void main(){ int a,b,c,t; printf("请输入三个整数 ...