Skip to content

Commit 128e134

Browse files
committed
MineSweeper
Problema Minesweeper del UVa Online Judge. Problem ID: 10189
1 parent e5c53ab commit 128e134

File tree

3 files changed

+94
-0
lines changed

3 files changed

+94
-0
lines changed

MineSweeper.cpp

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#include<iostream>
2+
#include<cstdlib>
3+
4+
int contar (int** campo, int i, int j, int x, int y){
5+
int cont = 0;
6+
if (i!=0 && campo[i-1][j] == 9){cont++;}
7+
if (i!=0 && j!=0 && campo[i-1][j-1] == 9){cont++;}
8+
if (j!=0 && campo[i][j-1] == 9){cont++;}
9+
if (i!=x-1 && j!=0 && campo[i+1][j-1] == 9){cont++;}
10+
if (i!=x-1 && campo[i+1][j] == 9){cont++;}
11+
if (i!=x-1 && j!=y-1 && campo[i+1][j+1] == 9){cont++;}
12+
if (j!=y-1 && campo[i][j+1] == 9){cont++;}
13+
if (i!=0 && j!=y-1 && campo[i-1][j+1] == 9){cont++;}
14+
15+
return cont;
16+
}
17+
18+
void imprimir (int x, int y, int** mat){
19+
int i, j;
20+
21+
for (i = 0; i < x; i++){
22+
for (j = 0; j < y; j++){
23+
if(mat[i][j]!=9){std::cout << mat[i][j] << " ";}
24+
else{std::cout << "*" << " ";}
25+
}
26+
std::cout << "\n";
27+
}
28+
std::cout << "\n\n";
29+
}
30+
31+
int main (){
32+
int x, y, i, j, a;
33+
char mina;
34+
int** mat;
35+
while (std::cin >> x){
36+
std::cin >> y;
37+
if (x==0 || y==0){
38+
continue;
39+
}
40+
41+
mat = (int**)std::malloc(x * sizeof(int*));
42+
for (i = 0; i < x; i++) {
43+
mat[i] = (int*)std::malloc(y * sizeof(int));
44+
}
45+
46+
std::cout << "\n->" << x << " " << y << "\n";
47+
for (i = 0; i < (y*2 -1); i++){std::cout << "_";}
48+
std::cout << "\n";
49+
// Creamos la matriz con las minas
50+
for (i = 0; i < x; i++){
51+
for (j = 0; j < y; j++){
52+
std::cin >> mina;
53+
if (mina == '*'){
54+
mat[i][j] = 9;
55+
} else {
56+
mat[i][j] = 0;
57+
}
58+
}
59+
}
60+
61+
imprimir(x, y, mat);
62+
63+
// Modificamos la matriz
64+
for (i = 0; i < x; i++){
65+
for (j = 0; j < y; j++){
66+
if(mat[i][j] == 0){
67+
a = contar(mat, i, j, x, y);
68+
mat[i][j] = a;
69+
}
70+
}
71+
}
72+
imprimir(x, y, mat);
73+
}
74+
}

MineSweeper.out

13.3 KB
Binary file not shown.

entradaMineSweeper

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
6 6
2+
.*.*.*
3+
*.*.*.
4+
.*.*.*
5+
*.*.*.
6+
.*.*.*
7+
*.*.*.
8+
7 7
9+
.......
10+
.......
11+
..***..
12+
..*.*..
13+
..***..
14+
.......
15+
.......
16+
4 3
17+
..*
18+
.*.
19+
.**
20+
**.

0 commit comments

Comments
 (0)