Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define MAXLEN 100
- int count_ships(char array[MAXLEN][MAXLEN], int, int);
- void print_field(char array[MAXLEN][MAXLEN], int, int);
- int main()
- {
- int height, width;
- scanf("%d %d", &height, &width);
- char field[MAXLEN][MAXLEN];
- int i, j, c;
- /* scanning field */
- for (i = 0; i < height+2; i++) {
- for (j = 0; j < width+2; j++) {
- field[i][j] = (i == 0 || i == height+1 ||
- j == 0 || j == width+1)
- ? '*' /* field's border : needed for debugging */
- : ((c = getchar()) != '\n') ? c : getchar() ;
- }
- }
- print_field(field, height, width); /* field before removing ships */
- printf("%d\n", count_ships(field, height, width));
- print_field(field, height, width); /* field after removing ships */
- return 0;
- }
- #define VERTICAL 1
- #define HORIZONTAL 0
- /* Notice: ships must be placed under the rules of The Sea Fight game */
- int count_ships(char field[MAXLEN][MAXLEN], int height, int width)
- {
- int ships_number, i, j, k, type;
- ships_number = 0;
- type = HORIZONTAL;
- for (i = 1; i < height+1; i++)
- for (j = 1; j < width+1; j++) {
- if (field[i][j] == '#') {
- if (field[i+1][j] == '#')
- type = VERTICAL;
- else
- type = HORIZONTAL;
- if (type == VERTICAL) {
- k = i;
- while (field[k][j] == '#')
- field[k++][j] = ' ';
- } else {
- k = j;
- while (field[i][k] == '#')
- field[i][k++] = ' ';
- }
- ships_number++;
- }
- }
- return ships_number;
- }
- /* needed for debugging : not required for solution */
- void print_field(char field[MAXLEN][MAXLEN], int height, int width)
- {
- int i, j;
- for (i = 0; i < height+2; i++) {
- for (j = 0; j < width+2; j++)
- printf("%c", field[i][j]);
- putchar('\n');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment