Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Консольный морской бой. Расстановка кораблей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Даны массивы целых чисел A[25] и B[25] http://www.cyberforum.ru/cpp-beginners/thread680722.html
Даны массивы целых чисел A и B.Сформировать третий массив, в который включить все положительные элементы обоих массивов, меньших 10. Нужно решить в C++.
C++ Конечный автомат Здравствуйте! Возникли проблемы с задачей: дан набор правил q0 -> aq1, q1 -> bq2, q1 -> q2, q1 -> cq2, q2 -> aq3 и др. Нужно написать программу, которая считывает количество символов в слове и... http://www.cyberforum.ru/cpp-beginners/thread680716.html
C++ не отображается робота программы
Начал изучать С++, и сталкиваюсь каждый раз с новыми проблемами в изучении.. Вот уже книгу нашел подходящую(Брюс Эккель - Филосовия С++ 1 том) но опять же столкнулся с проблемой вывода роботы...
C++ warning: ISO C++ says that these are ambiguous
Вечер добрый. Помогите раскрыть причину неоднозначности: Действие: Matrix1 &Matrix1::mult(const Matrix1 &other) { Matrix1 m; m.setRow1(mult(other.column1())); ...
C++ Создание динамического массива http://www.cyberforum.ru/cpp-beginners/thread680703.html
Как объявить вот так вот : int blocks = { {0,0,0,0,0,0}, {0,0,0,0,0,0}, {0,0,0,0,0,0}}; Мне пишет ошибку : массив не может содержать элементы этого типа
C++ Палиндром нужно чтобы в текстовом файле ab.txt находило палиндромы и выводило их на экран.#include<iostream> #include<stdio.h> #define N 2; using namespace std; void main() { FILE *File; ... подробнее

Показать сообщение отдельно
we2seek
79 / 79 / 17
Регистрация: 25.01.2010
Сообщений: 385
01.11.2012, 03:25  [ТС]
Цитата Сообщение от MrGrig Посмотреть сообщение
Укажите пожалуйста что получается сделать и что должно происходить на том месте программы где у вас виснет?
Сори, что так долго не отвечал - небыло времени из-за работы
Программа зависает, когда пытается разместить корабль в ограниченном пространстве, как, например на рисунке:
Консольный морской бой. Расстановка кораблей

За проверку возможности размещения корабля отвечает функция IsEmpty, которую я безрезультатно модифицировал по сравнению с предыдущим листингом:
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
bool IsEmpty (char **field, int x, int y, int DECKS)
{
    if ( field[y][x] == default_symb )
    {
        // Счетчик пустых клеток вокруг заданной
        size_t counter = 0;
        
        // Look around
        if ( (y+1 <= field_size-1) && (field[y+1][x] == default_symb) )
            counter++;
        if ( (x+1 <= field_size-1) && (field[y][x+1] == default_symb) )
            counter++;
        if ( (y-1 >= 1) && (field[y-1][x] == default_symb) )
            counter++;
        if ( (x-1 >= 1) && (field[y][x-1] == default_symb) )
            counter++;
        
        switch (DECKS)
        {
            case 1:
                return true;
                break;
            case 2:
                if ( counter >= 1 )
                    return true;
                else
                    return false;
            case 3:
                if ( counter >= 2 )
                    return true;
                else
                    return false;
        }
    }
    else 
        return false;
}


Принцип работы следующий:
  1. Если клетка {x;y} занята символом по умолчанию, т.е. в ней нет корабля и она не соприкасается с другим кораблем, тогда проверяем рядомстоящие клетки по 4 направлениям: вверх, вниз, влево и вправо.
  2. если рядомстоящие клетки не заняты - увеличиваем счетчик на 1
  3. сравниваем счетчик с количеством палуб корабля, который хотим разместить и если счетчик меньше или равен количеству палуб, возвращаем TRUE.

Посмотрите, пожалуйста, что я упускаю?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru