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

Путешествие коня. Почему конь не хочет пробежать все возможные варианты? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача на создание символьного файла http://www.cyberforum.ru/cpp-beginners/thread519721.html
Дан текстовый файл. Создать символьный файл, содержащий все сим-волы, встретившиеся в тексте, включая пробел и знаки препинания (без повторений). Символы располагать в порядке их первого появления в тек-сте.
C++ Кусочно-линейная аппроксимация Добрый времени суток всем. Необходима помощь в написание алгоритма кусочно-линейной аппроксимации. У меня дана таблица зависимости, грубо говоря градуировка сигнала x(Вход) и y(Выход). Например: x y 4 10 5 15 10 30 К примеру при входном сигнале 7, нужно определить в какой диапазон X-a попадает данное число, а потом применив алгоритм кусочно-линейной аппроксимации... http://www.cyberforum.ru/cpp-beginners/thread519713.html
Найти и вывести номера структур, содержащих числа больше заданного C++
Имеется база данных, содержащая числители и знаменатели дробных чисел. Например, последовательность чисел 5/18, 7/13, 9/8, … хранится в виде: Номер структуры 1 2 3 … Числитель 5 7 9 … Знаменатель 18 13 8 … Найти и вывести номера структур, содержащих числа больше заданного (оно вводится с клавиатуры в десятичной форме), и сами числа (тоже в десятичной форме).
C++ помогит пожалуйста с программой «Обработка массивов в С++»
Тема «Обработка массивов в С++» Задание: Необходимо написать и отладить программу в среде Borland C++ 3.1 по задан- ному варианту с обязательным применением массивов. В массивах вещественных чисел X и Y записаны координаты точек на плоскости. Найти длины отрезков Ri=((xi+1-xi)2+(yi+1-yi)2)1/2 и определить отрезок наибольшей и наименьшей длины.
C++ Созадать/записать в файл, из под другой учетки. http://www.cyberforum.ru/cpp-beginners/thread519673.html
Приветствую, не подскажите как произвести данную манипуляцию? Даже копать в какую сторону не знаю, была мысль создать доп. программу, запускать с помощью CreateProcessWithLogonW() и передавать ей параметры.
C++ Динамическая память, проблемы с освобождением Всем привет! Проблема стара как этот мир, но есть некая отличительная черта по которой я создал эту тему. Задача следующая. Создаю файл и кидаю в него строку, закрываю файл. Далее открываю этот файл и помещаю содержимое файла в динамическую строку. Так вот проблема возникает на третьей итерации при освобождении памяти. Почему так происходит, почему ошибка не выскакивает при первом удалении.... подробнее

Показать сообщение отдельно
alkagolik
Заблокирован
02.04.2012, 23:05
fasked, не отрабатывает. Попробуй на доске 8х8, x = 7, y = 7. Ждал пока закончится минут 50, потом просто оборвал. Сел за реализацию, но порывшись в сети тырнэта нашел уже "изобретённый велик", который тут и представляю.
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
#include <iostream>
#include <iomanip>
 
using namespace std;
 
const int hor = 8, ver = 8;
 
void print_board( int array[][ver] ) {
    
    cout << endl;
    
    for(int j = 0; j < ver; j++) {
        for(int i = 0; i < hor; i++)
            cout << setw(4) << array[i][j];
        cout << endl << endl;
    }
}
 
int main() {
    
    int board[ hor ][ ver ] = { 0 };
    int horizont[ hor ] = { 2, 1, -1, -2, -2, -1, 1, 2};
    int vertical[ ver ] =   { -1, -2, -2, -1, 1, 2, 2, 1};
    
    int access[ hor ][ ver ] = {
        { 2, 3, 4, 4, 4, 4, 3, 2},
        { 3, 4, 6, 6, 6, 6, 4, 3},
        { 4 ,6 ,8 ,8 ,8, 8, 6, 4},
        { 4 ,6 ,8 ,8 ,8, 8, 6, 4},
        { 4 ,6 ,8 ,8 ,8, 8, 6, 4},
        { 4 ,6 ,8 ,8 ,8, 8, 6, 4},
        { 3, 4, 6, 6, 6, 6, 4, 3},
        { 2, 3, 4, 4, 4, 4, 3, 2},
    };
    
    int current_row, current_col;
    int mov_num;
    int count = 0;                                 
 
    cout << "Enter a horizontal coordinate(0 - 7): ";
    cin >> current_row;
    cout << "Enter a vertical coordinate(0 - 7): ";
    cin >> current_col;
 
    int main_row = current_row, main_col = current_col;
    int row, col;
 
    for( int i = 0; i < 64; ++i ) {
        board[ main_row ][ main_col ] = ++count;
        
        int min_access = 8;
        int minA = 8, minB = 8; 
 
        for( mov_num = 0; mov_num <= 7; ++mov_num ) {
            
            current_row = main_row;
            current_col = main_col;
            
            current_row += horizont[ mov_num ]; 
            current_col += vertical[ mov_num ];
            
            if( current_row >= 0 && current_row <= 7 && current_col >= 0 && current_col <= 7 ) {
                
                --access[ current_row ][ current_col ];
                
                if( min_access > access[ current_row ][ current_col ] && board[ current_row ][ current_col ] == 0) {
                    
                    min_access = access[ current_row ][ current_col ];
                    
                    if( board[ current_row ][ current_col ] == 0 ) {
                        row = current_row;
                        col = current_col;
                    }
                    
                    int RowA = current_row, ColumnA = current_col;
                    
                    for( int moveA = 0; moveA <= 7; ++moveA ) {
                        
                        RowA += horizont[ moveA ];
                        ColumnA += vertical[ moveA ];
                        
                        if( RowA >= 0 && RowA <= 7 && ColumnA >= 0 && ColumnA <= 7 ) {
                            if( minA >= access[ RowA ][ ColumnA ] && board[ RowA ][ ColumnA ] == 0 )
                                minA = access[ RowA ][ ColumnA ];
                        }
                    }
                }
                if( min_access == access[ current_row ][ current_col ] && board[ current_row ][ current_col ] == 0) {
                    
                    min_access = access[ current_row ][ current_col ];
                    
                    int RowB = current_row, ColumnB = current_col;
                    
                    for( int moveB = 0; moveB <= 7; ++moveB ) {
                        
                        RowB += horizont[ moveB ];
                        ColumnB += vertical[ moveB ];
                        
                        if( RowB >= 0 && RowB <= 7 && ColumnB >= 0 && ColumnB <= 7 ) {
                            if(minB >= access[ RowB ][ ColumnB ] && board[ RowB ][ ColumnB ] == 0)
                                minB = access[ RowB ][ ColumnB ];
                        }
                    }
                    
                    if( board[ current_row ][ current_col ] == 0 && minB < minA ) {
                        row = current_row;
                        col = current_col;
                    }
                }
            }
        }
 
        main_row = row;
        main_col = col;
    }
 
    print_board( board );
    print_board( access );
 
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru