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

Нарушение прав доступа при чтении - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа закрывается после решения первого уравнения. Как продолжить ее выполнение? http://www.cyberforum.ru/cpp-beginners/thread1227321.html
Здравствуйте форумчани! Нужна ваша помощь... Задача простая, начал изучать С++ не так давно, но хз как реализовать, вообщем суть: Есть система уровнений, нада ее решить, через операторы if, else ...
C++ Подключение MPI в VS2010 - В процессе линковки выдаются ошибки Здравствуйте, нужно скомпилировать проект с mpi. Писался он под линуксом, но я хочу под виндой. VS2010, скачал Microsoft HPC Pack 2008. Указал как сказано пути - C:\Program Files\Microsoft HPC Pack... http://www.cyberforum.ru/cpp-beginners/thread1227283.html
C++ Зачем нужно добавлять файлы в файлы исходного кода
Зачем нужно добавлять файлы в файлы исходного кода (кроме main.cpp)? И как вызвать из main.cpp другой файл?
Организация вызовов функций C++
Добрый день! У меня следующий вопрос. Есть функция foo(x, y, z, type1, type2), которая в свою очередь последовательно вызывает другие функции внутри себя в зависимости от значений аргументов type1 и...
C++ Какой вариант оформления функции лучше? http://www.cyberforum.ru/cpp-beginners/thread1227233.html
Допустим, есть функция, которая что-то делает и, возвращает булево значение, в зависимости от того, получилось это сделать или нет. //Вариант 1 bool func(int a) { if (a != 0) { /*...
C++ Составить функцию, принимающую переменное количество параметров Напишите и протестируйте шаблонную функцию с переменным числом аргументов sum_values(), которая принимает список произвольной длины с аргументами, имеющими числовые значения (смешанных типов), и... подробнее

Показать сообщение отдельно
ASCII
90 / 62 / 10
Регистрация: 15.12.2013
Сообщений: 403
Завершенные тесты: 2

Нарушение прав доступа при чтении - C++

14.07.2014, 20:39. Просмотров 517. Ответов 4
Метки (Все метки)

Вот пишу игру морской бой, решил написать функцию, которая расставляет корабли, при это необходимо их расставлять через одну клетку друг от друга, иначе выдавала бы ошибку, мол тут поставить корабль нельзя, слишком близко к другому, написал вроде, но вылезла ошибка при запуске, нарушение прав доступа при чтении...

Скрин сделал вложением.

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
#include <stdio.h>
#include <stdlib.h>
#include "data.h"
 
 
int PositionShips(int string[4], int column[4], int *Arr[10])
{
    register int i, freeCell, lenShip;
 
    // Если корабль однопалубный
 
    if( !column[1] && !string[1] )
    {
        if( !Arr[string[0] - 1][column[0] - 1] )
            Arr[(string[0] - 1)][(column[0] - 1 )] = 1;
 
        // Выставляем запретную зону для расстановки кораблей вблизи только что установленного.
        
        /*for( i = 2; i > 0; i-- )
            for( freeCell = 2; freeCell > 0; freeCell-- )
                if( Arr[( string[0] - i )][(column[0] - freeCell)] != 1 )
                    Arr[( string[0] - i )][(column[0] - freeCell)] = -1;
*/
        // ..........................
    }
 
    // #############################
 
    // Если корабль вертикальный
 
    if( column[0] && !column[1] )
    {
        // Проверка длины корабля
 
        lenShip = 0;
        while(string[lenShip]) lenShip++;
 
        for( i = 0, freeCell = 0; i < 4; i++ )
        {
            if( !Arr[ ( string[i] - 1 ) ][ ( column[0] - 1 ) ] ) freeCell++;
        }
 
        if( freeCell == lenShip)
        {
            for( i = 0; i < 4; i++ ) Arr[ ( string[i] - 1 ) ][ ( column[0] - 1 ) ] = 1;
            return 1;
        }
        else
            return -1;
 
        // Выставляем запретную зону для расстановки кораблей вблизи только что установленного.
 
        /*for( i = lenShip + 2; i > 0; i-- )
            for( freeCell = 2; freeCell > 0; freeCell-- )
                if( Arr[( string[0] - i )][(column[0] - freeCell)] != 1 )
                    Arr[( string[0] - i )][(column[0] - freeCell)] = -1;
                    */
        // ..........................
    }
 
    // #############################
 
 
    // Если корабль горизонтальный
 
    if( string[0] && !string[1] )
    {
        lenShip = 0;
        while(column[lenShip]) lenShip++;
 
        for( i = 0, freeCell = 0; i < 4; i++ )
        {
            if( !Arr[ ( string[0] - 1 ) ][ ( column[i] - 1 ) ] ) freeCell++;
        }
 
        if( freeCell == lenShip)
        {
            for( i = 0; i < 4; i++ ) Arr[ ( string[0] - 1 ) ][ ( column[i] - 1 ) ] = 1;
            return 1;
        }
        else
            return -1;
 
        // Выставляем запретную зону для расстановки кораблей вблизи только что установленного.
 
        /*for( i = 2; i > 0; i-- )
            for( freeCell = lenShip + 2; freeCell > 0; freeCell-- )
                if( Arr[( string[0] - i )][(column[0] - freeCell)] != 1 )
                    Arr[( string[0] - i )][(column[0] - freeCell)] = -1;
*/
        // ..........................
    }
 
    // #############################
 
}
0
Миниатюры
Нарушение прав доступа при чтении  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru