Форум программистов, компьютерный форум 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())); m.setRow2(mult(other.column2())); m.setRow3(mult(other.column3())); m.setRow4(mult(other.column4()));
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; File=fopen("D:/ab.txt", "r"); подробнее

Показать сообщение отдельно
we2seek
 Аватар для we2seek
61 / 61 / 13
Регистрация: 25.01.2010
Сообщений: 313
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.

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