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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Взаимодействие сайтов и VC++ http://www.cyberforum.ru/cpp-beginners/thread223094.html
Добрый вечер. Всех с наступившим! Нужна подсказка: где можно почитать про взаимодействие приложения с вебсайтом (получение куки, парсинг кода, отправка форм и тд). Буду благодарен за любую информацию.
C++ Определить три соседних дня с максимальной средней температурой Помогите решить полностью следующие задачи. 1.Начиная с понедельника, 1-го сентября, в течение 3-х недель один раз в день измеряется значение температуры. Таким образом, формируется двумерный массив T размерности 3x7. Найти: а) три соседних дня с максимальной средней температурой. б) два соседних дня, когда температура наиболее резко росла. в) периоды, когда температура понижалась. 2.... 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 типа AnsiString. Но при компиляции в первой строке ошибка "invalid pointer addition". Подскажите, какую мелочь надо исправить???
C++ дескрипторы у пайпов
Во- первых, хочу поздравить всех с новым годом)))) итак, проблема в следующем: пишу чат на пайпах, использующий аутентификацию по керберосу... при создании сервером пайпа - клинет не может подключить к нему, ошибка в безопасности. Порылся в инете: пишут, что надо установаить дескриптор у пайпа, в которм указать, что обращаться к пайпу могут все. Собственно, вопрос, как это сделать? ...
C++ Стандарты и стили языков программирования http://www.cyberforum.ru/cpp-beginners/thread223045.html
Занимаясь программирование, например С++, иногда задумываешься, читая различную литературу и разбирая чужие коды программ, что большинство программистов, как начинающих, так и уже вполне опытных, смешивают два разных языка С и С++ (одним языком их никак не назовешь, даже в самом начале изучения). Причем и в университетах (имею ввиду свой) существует дисциплина ЯП С/C++, в которых с самого начала...
C++ компиляция программы на с Привет всем. У меня такая проблема. Я написал программу на С именно на С а не на С++. Написал я её в notepad++ а вот скомпилировать немогу. Есть у меня Visual Studio 2005, но как скомпилировать на нём то что писал не в нем? И возможно ли вообще компилировать программы на С в Visual Studio? подробнее

Показать сообщение отдельно
Минич
 Аватар для Минич
66 / 66 / 3
Регистрация: 26.11.2010
Сообщений: 123
02.01.2011, 07:40     Ввод матрицы вручную
Позволил себе немного модернизировать код:
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
#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;
    
    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;
 
    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) {
                            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) {
                                    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 (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;
    }
}
Учтите, что строки и столбцы считаются начиная с 0!!!
 
Текущее время: 05:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru