Archived
70 lines
1.2 KiB
C
Executable File
70 lines
1.2 KiB
C
Executable File
/*
|
|
11.На поле 10х10 клеток установить 10 однопалубных кораблей. Корабли не соприкасаются.
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdbool.h>
|
|
#include <time.h>
|
|
#include <stdlib.h>
|
|
#include <math.h>
|
|
|
|
#define N 10
|
|
#define AMOUNT 10
|
|
|
|
const char SHIP = '#';
|
|
const char VOID = '.';
|
|
|
|
char matrix[N][N];
|
|
|
|
void fillMatrix() {
|
|
for (int i=0;i<N;i++) {
|
|
for (int j=0;j<N;j++) {
|
|
matrix[i][j] = VOID;
|
|
}
|
|
}
|
|
}
|
|
|
|
void printMatrix() {
|
|
for (int i=0;i<N;i++) {
|
|
for (int j=0;j<N;j++) {
|
|
printf("%2c", matrix[i][j]);
|
|
}
|
|
puts("");
|
|
}
|
|
}
|
|
|
|
bool isCanPlace(int x, int y) {
|
|
for (int i = -1; i <= 1; i++) {
|
|
for (int j = -1; j <= 1;j++) {
|
|
if (matrix[abs(x-i)][abs(y-j)] == SHIP)
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
void setShips() {
|
|
for (int i = 0; i < AMOUNT; i++) {
|
|
int x = rand() % N;
|
|
int y = rand() % N;
|
|
|
|
if (isCanPlace(x, y)) {
|
|
matrix[x][y] = SHIP;
|
|
} else {
|
|
i--;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
int main() {
|
|
srand(time(0));
|
|
|
|
fillMatrix();
|
|
setShips();
|
|
|
|
printMatrix();
|
|
return 0;
|
|
}
|