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

Ввод матрицы вручную - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Взаимодействие сайтов и VC++ http://www.cyberforum.ru/cpp-beginners/thread223094.html
Добрый вечер. Всех с наступившим! Нужна подсказка: где можно почитать про взаимодействие приложения с вебсайтом (получение куки, парсинг кода, отправка форм и тд). Буду благодарен за любую...
C++ Определить три соседних дня с максимальной средней температурой Помогите решить полностью следующие задачи. 1.Начиная с понедельника, 1-го сентября, в течение 3-х недель один раз в день измеряется значение температуры. Таким образом, формируется двумерный массив... http://www.cyberforum.ru/cpp-beginners/thread223089.html
Ошибка в char... C++
Делаю программу. Одна из функций - открытие заданого файла: char *aud="magazine/"+ThisClass.c_str()+".xls"; char *path="magazine/"; ShellExecute(NULL,NULL,aud,path,NULL,SW_SHOW); ThisClass...
C++ дескрипторы у пайпов
Во- первых, хочу поздравить всех с новым годом)))) итак, проблема в следующем: пишу чат на пайпах, использующий аутентификацию по керберосу... при создании сервером пайпа - клинет не может...
C++ Стандарты и стили языков программирования http://www.cyberforum.ru/cpp-beginners/thread223045.html
Занимаясь программирование, например С++, иногда задумываешься, читая различную литературу и разбирая чужие коды программ, что большинство программистов, как начинающих, так и уже вполне опытных,...
C++ компиляция программы на с Привет всем. У меня такая проблема. Я написал программу на С именно на С а не на С++. Написал я её в notepad++ а вот скомпилировать немогу. Есть у меня Visual Studio 2005, но как скомпилировать на... подробнее

Показать сообщение отдельно
apachan
13 / 13 / 2
Регистрация: 07.12.2010
Сообщений: 127
04.01.2011, 12:54  [ТС]
Теперь программа иногда крашится при выборе поиска выхода из лабиринта (0)

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
#include <iostream>
#include <ctime>
#include <iomanip>
 
using namespace std;
 
#define MAX(a, b) (a > b ? a : b)
#define MIN(a, b) (a < b ? a : b)
 
const int N = 8,        // ?enei no?ie e
          M = 8;        // noieaoia a iao?eoa
 
int Matr[N][M];         // enoiaiay iao?eoa
int rowS, colS,         // eii?aeiaou ia?aeuiie e
    rowE, colE;         // eiia?iie oi?ae
       
void OutMatr(int Matrix[N][M]);                                                 
 
void main()
{
        int Matrix[N][M] = {{0}};       // iao?eoa n i?ioi?aaieai iooe
 
        setlocale(LC_ALL, "Russian");
        srand(time(0));
 
        cout << "\t--- Labirint  ---" << endl;
        cout << endl;
 
        for (int i = 0; i < N; i++)
                for (int j = 0; j < M; j++)
                        Matr[i][j] = rand() % 2;
 
        OutMatr(Matr);  // auaia enoiaiie iao?eou
        
                cout << "Vvedite koordinaty nachal'noj i konechnoj tochek:" << endl;
                cout << endl;
                     cout<< "Nachal'naja tochka raspolozhena" << endl;
                     cout << endl;
                     cout<< "V stroke # "; 
                     cin >> rowS;
                     cout << endl;
                cout << "V stolbce # "; 
                cin >> colS;
                cout << endl;
 
 while((rowS<0)||(colS<0)||(rowS>=N)||(colS>=N)||(Matr[rowS][colS]==1))
        {cout<<"Koordinaty zanjaty stenoj ili nahodjatsja vne labirinta. Vvedite koordinaty pravil'no "<<endl;
        cin>>rowS>>colS;}  
 
                cout << "Konechnaja tochka raspolozhena" << endl;
                cout << endl;
 
                     cout<< "V stroke # "; 
                     cin >> rowE;
                     cout << endl;
                cout << "V stolbce # "; 
                cin >> colE;
                cout << endl;
 
                 while((rowE<0)||(colE<0)||(rowE>=N)||(colE>=N)||(Matr[rowE][colE]==1))
        {cout<<"Koordinaty zanjaty stenoj ili nahodjatsja vne labirinta. Vvedite koordinaty pravil'no "<<endl;
        cin>>rowE>>colE;}  
        
                bool t;
                cout << "Najti vyhod iz labirinta ili najti put' do nuzhnoj tochki? 1/0: "; 
                cin >> t;
                
        int n = 2;      // i?ieaaiiia ?annoiyiea
        int offset[8] = {-1, 0, 1, 0, 0, -1, 0, 1};     // niauaiea ioiineoaeuii eeaoee
        bool endSearch;
        int startRow = rowS,    // eii?aeiaou i?yiioaieuieea aey iienea eeaoie ni cia?aieai n
            endRow   = rowS,
            startCol = colS,
            endCol   = colS;
                int rowExit, colExit;
 
        Matr[rowS][colS] = n;
        if (rowS == rowE && colS == colE) // Anee ia?aeuiay yaeyaony eiia?iie oi?eie
                goto Finish;
        do {            
                endSearch = false;
                for (int i = startRow; i <= endRow; i++)
                        for (int j = startCol; j <= endCol; j++)
                                if (Matr[i][j] == n)
                                        for (int k = 0; k < 8; k += 2)
                                                // anee iaeaaia eiia?iay eeaoea
                                                if (i + offset[k] == rowE && j + offset[k + 1] == colE && t) {
                                                        Matr[i + offset[k]][j + offset[k + 1]] = ++n;
                                                        goto Finish;
                                                } else
                                                        // i?iaa?ea ?oi eeaoea ia auoea ca a?aieou iao?eou
                                                        // e ?oi iia ionoa, o.a. ?aaia 0
                                                        if (i + offset[k]     >= 0 && i + offset[k]     <  N &&
                                                            j + offset[k + 1] >= 0 && j + offset[k + 1] <  M &&
                                                                Matr[i + offset[k]][j + offset[k + 1]] == 0) {
                                                                                                                                        if (!t && (i + offset[k]     == 0 || i + offset[k]     == N - 1 ||
                                                                                                                                                       j + offset[k + 1] == 0 || j + offset[k + 1] == M - 1)) {
                                                                                                                                                                   rowExit = i + offset[k];
                                                                                                                                                                   colExit = j + offset[k + 1];
                                                                                                                                                                   Matr[i + offset[k]][j + offset[k + 1]] = ++n;
                                                                                                                                                                   goto Finish;
                                                                                                                                        }
                                                                                                                                        Matr[i + offset[k]][j + offset[k + 1]] = n + 1;
                                                                                                                                        endSearch = true;
                                                        }
                n++;
                startRow = MAX(0    , startRow - 1);
                endRow   = MIN(N - 1, endRow   + 1);
                startCol = MAX(0    , startCol - 1);
                endCol   = MIN(M - 1, endCol   + 1);
        } while (endSearch);
Finish:
                if (!t) {
                        rowE = rowExit;
                        colE = colExit;
                }
        if (Matr[rowE][colE] != n)
                cout << "Put' ne najden" << endl;
        else {
                Matrix[rowE][colE] = --n;
                for (int i = n; i > 1; i--)
                        for (int k = 0; k < 8; k += 2)
                                if (Matr[rowE + offset[k]][colE + offset[k + 1]] == n) {
                                        Matrix[rowE + offset[k]][colE + offset[k + 1]] = --n;
                                        rowE += offset[k];
                                        colE += offset[k + 1];
                                        break;
                                }
                OutMatr(Matrix);
        }
        system("pause");
}
 
void OutMatr(int Matr[N][M])
{
        static int k = 1;
        cout << (k-- ? "Ishodnaja matrica:\n" : "\nVyvod puti::\n");
        cout << endl;
        for(int i = 0; i < N; i++) {
                for(int j = 0; j < M; j++)
                        cout << setw(3) << Matr[i][j];
                cout << endl;
                cout << endl;
        }
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru