here it is!
Code: Select all
#include <stdio.h>
int M=0,N=0,matrix[252][252];
int getInt(char a){
return ((int)a-48);
}
int getMenor(int x, int y){
if(x>y)
return y;
return x;
}
int getMayor(int x, int y){
if(x>y)
return x;
return y;
}
int f_inst(char original,char replace,int x,int y){
if (matrix[x][y] == original){
matrix[x][y] = replace;
if(x<M && matrix[x+1][y] != replace) f_inst(original,replace,x+1,y);
if(x>0 && matrix[x-1][y] != replace) f_inst(original,replace,x-1,y);
if(y<N && matrix[x][y+1] != replace) f_inst(original,replace,x,y+1);
if(y>0 && matrix[x][y-1] != replace) f_inst(original,replace,x,y-1);
return 1;
}
return 0;
}
int isValid(int x,int y){
if (x>0 && x <= M && y > 0 && y<= N)
return 1;
return 0;
}
int isValidSize(int x,int y){
if (x>0 && x<=252 && y>0 && y<=252)
return 1;
return 0;
}
int main(){
//freopen("file2.in","rt",stdin);
char inst[256],c,name[13];
int i,j,x1,x2,y1,y2,m,n;
fgets(inst,256,stdin);
while(inst[0] != 'X'){
switch(inst[0]){
case 'I':
sscanf(inst,"%*c %d%d",&m,&n);
if(isValidSize(m,n)){
M=m;
N=n;
}
case 'C':
for (j=0;j<=N;j++)
for(i=0;i<=M;i++)
matrix[i][j] = 'O';
break;
case 'L':
sscanf(inst,"%*c %d%d %c",&x1,&y1,&c);
if(isValid(x1,y1))
matrix[x1-1][y1-1] = c;
break;
case 'V':
sscanf(inst,"%*c%d%d%d %c",&x1,&y1,&y2,&c);
if ((isValid(x1,y1) + isValid(x1,y2)) == 2){
for (i=getMenor(y1,y2)-1;i<getMayor(y1,y2);i++)
matrix[x1-1][i] = c;
}
break;
case 'H':
sscanf(inst,"%*c%d%d%d %c",&x1,&x2,&y1,&c);
if ((isValid(x1,y1) + isValid(x2,y1)) == 2){
for (i=getMenor(x1,x2)-1;i<getMayor(x1,x2);i++)
matrix[i][y1-1] = c;
}
break;
case 'F':
sscanf(inst,"%*c%d%d %c",&x1,&y1,&c);
if(isValid(x1,y1))
f_inst(matrix[x1-1][y1-1],c,x1-1,y1-1);
break;
case 'K':
sscanf(inst,"%*c%d%d%d%d %c",&x1,&y1,&x2,&y2,&c);
if ((isValid(x1,y1) + isValid(x2,y2)) == 2){
for (j=getMenor(y1,y2)-1;j<getMayor(y1,y2);j++)
for (i=getMenor(x1,x2)-1;i<getMayor(x1,x2);i++)
matrix[i][j] = c;
}
break;
case 'S':
sscanf(inst,"%*c %s",&name);
printf("%s\n",name);
for (j=0;j<N;j++){
for (i=0;i<M;i++)
printf("%c",matrix[i][j]);
printf("\n");
}
break;
default:
break;
}
fgets(inst,256,stdin);
}
return 0;
}