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

Ввод матрицы вручную - 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, но как скомпилировать на... подробнее

Показать сообщение отдельно
Минич
66 / 66 / 3
Регистрация: 26.11.2010
Сообщений: 123
03.01.2011, 12:59
apachan, не забудь вставить необходимые библиотеки.
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
#include <iostream>
#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,        // число строк и
          M = 8;        // столбцов в матрице
 
int Matr[N][M];         // исходная матрица
int rowS, colS,         // координаты начальной и
    rowE, colE;         // конечной точек
       
void OutMatr(int Matrix[N][M]);                                                 
 
void main()
{
        int Matrix[N][M] = {{0}};       // матрица с прохождением пути
 
        setlocale(LC_ALL, "Russian");
        srand(time(0));
 
        cout << "\t--- Лабиринт ---" << endl;
 
        for (int i = 0; i < N; i++)
                for (int j = 0; j < M; j++)
                        Matr[i][j] = rand() % 2;
 
        OutMatr(Matr);  // вывод исходной матрицы
        
        cout << "Введите координаты начальной и конечной точек:" << endl
             << "Начальная точка расположена" << endl
             << "В строке №";   cin >> rowS;
        cout << "В столбце №";  cin >> colS;
        cout << "Конечная точка расположена" << endl
             << "В строке №";   cin >> rowE;
        cout << "В столбце №";  cin >> colE;
        
        bool t;
        cout << "Будем исктать конечную точку?! 1/0: ";
        cin >> t;
        
        int n = 2;      // пройденное расстояние
        int offset[8] = {-1, 0, 1, 0, 0, -1, 0, 1};     // смещение относительно клетки
        bool endSearch;
        int startRow = rowS,    // координаты прямоугольника для поиска клеток со значением n
            endRow   = rowS,
            startCol = colS,
            endCol   = colS;
        int rowExit, colExit;
 
        Matr[rowS][colS] = n;
        if (rowS == rowE && colS == colE) // Если начальная является конечной точкой
                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)
                                                // если найдена конечная клетка
                                                if (i + offset[k] == rowE && j + offset[k + 1] == colE && t) {
                                                        Matr[i + offset[k]][j + offset[k + 1]] = ++n;
                                                        goto Finish;
                                                } else
                                                        // проверка что клетка не вышла за границы матрицы
                                                        // и что она пуста, т.е. равна 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 << "Путь не найден" << 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-- ? "Исходная матрица:\n" : "\nВывод путь:\n");
        for(int i = 0; i < N; i++) {
                for(int j = 0; j < M; j++)
                        cout << setw(3) << Matr[i][j];
                cout << endl;
        }
}
1
Миниатюры
Ввод матрицы вручную  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.