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

Морской бой. Ф-ция автоматической рассатновки кораблей. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить программу, которая оп- ределяет наименьшую и наибольшую цифру этого числа http://www.cyberforum.ru/cpp-beginners/thread246343.html
1)Дано трехзначное целое число. Составить программу, которая определяет наименьшую и наибольшую цифру этого числа. Число вводить с клавиатуры. 2)Составить программу приближенного вычисления площади фигуры, ограниченной заданными линиями.использовать метод прямоугольников. Для построения прямоугольника использовать правый конец отрезка. y = −2x2 + 3x + 6, y = x + 2. 3)Даны три массива....
C++ НОК Люди, нужно найти НОК n-го количества чисел, числа записаны в массив. НОД я уже написал, но НОК как-то не выходит. Кто-нибудь мог бы написать мне на C (не C++ и C#) очень важно чтобы на чистом С. http://www.cyberforum.ru/cpp-beginners/thread246333.html
Сколько битов потребуется? C++
Сколько битов потребуется для адресации 64560 байтов, 2 мегабайтов, 17 мегабайтов, 5 гигабайтов?
ошибка C++
подскажите где ошибка: Вот задание: Сформировать текстовый файл, записав в него 20 слу- чайных чисел от –10 до +10, по одному на строке. #include <fstream> #include <iostream> #include <time.h> using namespace std;
C++ Найти максимальную сумму цифр числа http://www.cyberforum.ru/cpp-beginners/thread246279.html
Составить функцию, аргументом которой является длинное целое число. Возращаемое значение должно быть равно сумме десятичных цифр числа n. Найти максимальную сумму цифр числа среди элементов одномерного массива. Если таких сумм несколько, то вывести элементы с данной максимальной суммой цифр. Вот я начал писать листинг, функцию составил, ввел массив, а дальше не могу... Помогите закончить!...
C++ посмотрите Подскажите пожалуйста,правильно-ли составлена блок схема по этой программе? программа: #include <iostream> using namespace std; struct pas подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2801 / 1577 / 247
Регистрация: 03.05.2010
Сообщений: 3,664
22.02.2011, 01:06     Морской бой. Ф-ция автоматической рассатновки кораблей.
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/////////////////////////////////////////////////////////////////////////////////////////
//Есть задача расстановки кораблей компьютера случайным образом. Массив [10][10], 
//заполненный '0' - игровое поле. 'X' - корабль.
//В ф-ции расстановки кораблей перед заполнением 'Х' идет проверка на наличие кораблей 
//в случайно выбранном элементе и вокруг него(чтобы корабли не соприкасались). 
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <ctime>
#include <iostream>
#include <cstdlib>
/////////////////////////////////////////////////////////////////////////////////////////
const int  FIELD_DIM   = 10;
const char WATER_SYMB  = ' ';
const char SHIP_SYMB   = 'X';
/////////////////////////////////////////////////////////////////////////////////////////
bool  ship_is_good
    (
        int         size, 
        bool        is_horiz, 
        int         row_top, 
        int         col_left, 
        const char  field[][FIELD_DIM]
    )
{
    if(is_horiz)
    {
        for(int i =   std::max(0,              row_top - 1); 
                i <=  std::min(FIELD_DIM - 1,  row_top + 1); 
                ++i)
        {
            for(int j =   std::max(0,              col_left - 1); 
                    j <=  std::min(FIELD_DIM - 1,  col_left + size); 
                    ++j)
            {
                if(field[i][j] == SHIP_SYMB) return false;
            }        
        }
        return  true;
    }
    else//вертикальный
    {
        for(int i =   std::max(0,             row_top - 1); 
                i <=  std::min(FIELD_DIM - 1, row_top + size); 
                ++i)
        {
            for(int j =   std::max(0,             col_left - 1); 
                    j <=  std::min(FIELD_DIM - 1, col_left + 1); 
                    ++j)
            {
                if(field[i][j] == SHIP_SYMB) return false;
            }        
        }
        return  true;
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
void  set_ship_with_size(int  size, char  field[][FIELD_DIM])
{
    bool  is_horiz  = rand() % 2 == 0;
    int   row_top   = 0;
    int   col_left  = 0;
 
    do
    {
        do
        {
            row_top = rand() % FIELD_DIM;
        }while(   !is_horiz 
               && row_top > FIELD_DIM - size);
 
        do
        {
            col_left = rand() % FIELD_DIM;
        }while(   is_horiz 
               && col_left > FIELD_DIM - size);        
    }while(!ship_is_good(size, is_horiz, row_top, col_left, field)); 
 
    if(is_horiz)
    {
        for(int j = col_left; j < col_left + size; ++j)
        {
            field[row_top][j] = SHIP_SYMB;
        }
    }
    else//вертикальный
    {
        for(int i = row_top; i < row_top + size; ++i)
        {
            field[i][col_left] = SHIP_SYMB;
        }    
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
void  set_ships(char  field[][FIELD_DIM])
{
    for(int i = 0; i < 1; ++i)
    {
        set_ship_with_size(4, field);
    }
 
    for(int i = 0; i < 2; ++i)
    {
        set_ship_with_size(3, field);
    }
 
    for(int i = 0; i < 3; ++i)
    {
        set_ship_with_size(2, field);
    }
 
    for(int i = 0; i < 4; ++i)
    {
        set_ship_with_size(1, field);
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
void  print_field(const char  field[][FIELD_DIM])
{
    for(int  i = 0; i < FIELD_DIM; ++i)
    {
        for(int  j = 0; j < FIELD_DIM; ++j)
        {
            std::cout << field[i][j]
                      << ' ';
        }    
        std::cout << std::endl;
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
void  set_water(char  field[][FIELD_DIM])
{
    for(int  i = 0; i < FIELD_DIM; ++i)
    {
        for(int  j = 0; j < FIELD_DIM; ++j)
        {
            field[i][j] = WATER_SYMB;
        }            
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    srand(static_cast<unsigned>(time(0)));
    
    char  field[FIELD_DIM][FIELD_DIM];  
    set_water    (field);
    set_ships    (field);
    print_field  (field);
}
 
Текущее время: 15:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru