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

Не завершается метод - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поэтапный вывод сортировки массива http://www.cyberforum.ru/cpp-beginners/thread1053527.html
C меня за помощь 100 рублей на webmoney. скайп komarov.deen icq 3556353 Нужно поэтапно вывести сортировку массива, код имеется: #include <stdio.h> #include <stdlib.h> #include <iostream> using...
C++ "~" - что это означает? Объясните, пожалуйста, значение этого символа "~" в этой строке. IntContainer::~IntContainer() Вот код всего файла #include "intcontainer.h" IntContainer::IntContainer() { contLength =... http://www.cyberforum.ru/cpp-beginners/thread1053521.html
C++ Матрица (двумерный массив)
Найти сумму элементов для каждой диагонали, параллельной побочной. Помогите найти ошибку (вычисляет неправильно). #include <cstdlib> #include <iostream> #include <iomanip> using namespace std;...
Ошибка в программе C++
Помогите запустить программу,а то пишет: C:\Users\Desktop\source\deykstra.cpp|4|fatal error: iostream.h: No such file or directory| Вот сама программа // deykstra.cpp : Defines the entry point for...
C++ Покажите http://www.cyberforum.ru/cpp-beginners/thread1053488.html
Не могу сделать программу,с таким выводом данных (см.миниатюра),дальше объявления переменных и и простых арифметических операций дело не зашло......+ еще неизвестные мне функции...
C++ упорядоченные строки напишите пожалуйста код программы В dev C++ Дана квадратная матрица порядка n. Найти номера строк, элементы которой образуют последовательность, убывающую или возрастающую желательно попроще... подробнее

Показать сообщение отдельно
Gomg
5 / 5 / 0
Регистрация: 28.06.2013
Сообщений: 116
23.12.2013, 18:22  [ТС]
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
const int N = 4;
bool field[N][N] = {false};
int acc[N][N];
 
int x_pos[] = {2, 1, -1, -2, -2, -1, 1, 2};
int y_pos[] = {1, 2,  2,  1, -1, -2,-2,-1};
int start_x_pos = 2, start_y_pos = 1;
int cur_x_pos = start_x_pos, cur_y_pos = start_y_pos;
int turns = 1;
int solutions = 0;
int x_min, y_min;
 
bool Check(int x, int y){
    if (x >= 0 && x < N && y >= 0 && y < N && !field[x][y])
        return true;
    else return false;
}
 
bool CheckSurround(){
    for (int i = 0; i < 8; i++){
        if (!field[cur_x_pos + x_pos[i]][cur_y_pos + y_pos[i]] && (cur_x_pos + x_pos[i]) >= 0 && (cur_x_pos + x_pos[i]) < N && (cur_y_pos + y_pos[i]) >= 0 && (cur_y_pos + y_pos[i]) < N)
            return false;
    }
    return true;
}
 
void Turn(int x, int y){
    field[x][y] = true;
    cur_x_pos = x; cur_y_pos = y;
    turns++;
    
}
 
void FindMinimum(){
    int min;
    int x, y;
    for (int j =0; j < 8; j++){
        if ((cur_x_pos+x_pos[j]) >=0 && (cur_x_pos+x_pos[j])<N && (cur_y_pos+y_pos[j])>=0 && (cur_y_pos+y_pos[j]) <N){
            min = acc[cur_x_pos+x_pos[j]][cur_y_pos+y_pos[j]];
            x = cur_x_pos+x_pos[j], y = cur_y_pos+y_pos[j];
            break;
        }
    }
    int i = 1;
    for (i = 1; i < 8; i++){
        if ((cur_x_pos+x_pos[i]) >=0 && (cur_x_pos+x_pos[i])<N && (cur_y_pos+y_pos[i])>=0 && (cur_y_pos+y_pos[i]) <N)
            if (min >= acc[cur_x_pos+x_pos[i]][cur_y_pos+y_pos[i]] && !field[cur_x_pos+x_pos[i]][cur_y_pos+y_pos[i]]){
                min = acc[cur_x_pos+x_pos[i]][cur_y_pos+y_pos[i]];
                x = cur_x_pos+x_pos[i];
                y = cur_y_pos+y_pos[i];
            }
    }
    x_min = x;
    y_min = y;
}
 
void Turning(){
    if (turns == N*N)
        solutions++;
    for (int i = 0; i < 8; i++){
        FindMinimum();
        Turn(x_min, y_min);
        if (CheckSurround()) 
            break;
        Turning();
    }   
}
 
void AccessibilityInit(){
    int count = 0;
    for (int i = 0; i < N; i++){
        for (int j = 0; j < N; j++){
            for (int h = 0; h < 8; h++){
                if (i + y_pos[h] >= 0 && i + y_pos[h] < N && j + x_pos[h] >= 0 &&  j + x_pos[h] < N)
                count++;
            }
            acc[i][j] = count;
            count = 0;
        }
    }
}
 
void ReInitialize(){
turns = 1;
    for (int i = 0; i < N; i++)
        for (int j = 0 ; j < N;j++)     
            field[i][j] = false;
}
 
 
 
void Draw(){
    for (int i = 0; i < N; i++){
        for (int j =0 ; j< N;j++){
            if (j == start_x_pos && i == start_y_pos)
                printf("S");
            else if (field[j][i])
                printf("X");
            else 
                printf("O");
        }
        printf("\n");
    }
    printf("\nNo turns. Total turns for %d(xpos) and %d(ypos) = %d; %dx%d(%d)", start_x_pos+1, start_y_pos+1, turns,N,N,N*N);
    printf("\n\n");
}
 
 
void Test(){
    AccessibilityInit();
    //for (int yp = 0 ; yp < N; yp++){
        //for (int xp = 0; xp < N; xp++){
            ReInitialize();
            start_x_pos = 1; start_y_pos = 1;
            field[start_x_pos][start_y_pos] = true;
            cur_x_pos = start_x_pos; cur_y_pos = start_y_pos;
            Turning();
            Draw();
        //}
    //}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru