烟大 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),因为 它相对较小,且 ...
随机推荐
- Java初学(四)
一.图解二维数组 二.图解动态创建二维数组 三.杨辉三角练习: import java.util.Scanner; class Array2Demo{ //实现杨辉三角 public static v ...
- NYOJ 77 开灯问题
#include <stdio.h> #include <string.h> #define maxn 1050 int a[maxn]; int main(void) { i ...
- 取消chrome浏览器下input和textarea的默认样式
最近一个细节引起了我的注意,chrome浏览器下的input和textarea在聚焦的时候都有一个黄色的边框,而且textarea还可以任意拖动放大,这是不能容忍的,影响美观不说,有时候拖动texta ...
- 基于REST架构的Web Service设计
来自: http://www.williamlong.info/archives/1728.html 先前我曾经介绍过利用Apache Axis实现基于SOAP的Web Service实现技术和相关代 ...
- DFS & BFS
DFS 深度优先 BFS 广度优先 DFS或者BFS都是在联通区域内遍历节点的方法 用在二叉树上DFS有preOreder,inOrder,postOrder,BFS就是层次遍历. 在二叉树上的节点, ...
- thinkphp-1
thinkphp网站: http://thinkphp.cn, http://bbs.thinkphp.cn 在设置文件夹查看试图的时候, 只点" 应用到所有文件夹" 不要点&qu ...
- 基于jquery的相册预览gallery
众多有图片的产品,都要加个图片预览功能.然后市面上就出现了各种各样的相册,下面也提供一个基于jquery的相册. 源码:https://github.com/lilyH/gallery 版本: v0. ...
- sql拷贝表结构不拷贝表数据
- DEDECMS网站数据备份还原教程
备份织梦网站数据 dedecms备份教程 进入DedeCms后台 -> 系统 -> 数据库备份/还原 备份文件在\data\backupdata 下载数据库备份资料\data\backup ...
- Intent的Flag
小段代码: Intent it=new Intent(); it.setClass(Setting.this,Main.class);//从Setting跳转到Main it.addFlags(Int ...