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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 4.77
apachan
13 / 13 / 2
Регистрация: 07.12.2010
Сообщений: 127
01.01.2011, 20:45     Ввод матрицы вручную #1
Возможно ли в данной программе сделать ввод матрицы ручным способом (или с помощью рандома, как-то удобнее будет) и введение пользователем координат начала пути и конца? Код пока для меня слишком сложный и сколько ни пытался - ни получилось...

Видимо, нужно добавить:

это и

C++
1
2
3
4
5
6
      {srand(time(0));
                
                cout<<" Labirint  "<<endl;
                for (int i=0; i<N; i++)
                        for (int j=0;j<M;j++)
                                Matr[i][j] = rand()%2;}
собственно, ввод

rowS
colS
rowE
colE


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
#include <iostream.h>
#include <iomanip.h>
#define    max_(a, b)  ((a)>(b)?(a):(b))
#define    min_(a, b)  ((a)<(b)?(a):(b))
const int  N =    8,         // число строк
           M =    8;         // и столбцов в матрице
const int  x =  1;         // численное значение клетки-"препятствия"
const int  E =    1,         // конечная
           S =   -1;         // и начальная точки
// исходная матрица: пустые клетки - нули, "препятствия" - x
// Конечная точка - E (coord: rowE,colE), исходная - S (rowS,colS)
int  Matr[N][M] = { 
    { x,  0,  0,  0,  x,  0,  E,  x },
    { 0,  0,  x,  0,  x,  0,  0,  0 },
    { 0,  x,  x,  0,  0,  0,  x,  0 },
    { 0,  0,  0,  x,  x,  x,  0,  0 },
    { 0,  0,  0,  0,  0,  0,  0,  0 },
    { 0,  x,  0,  x,  0,  x,  0,  0 },
    { 0,  0,  x,  0,  0,  0,  x,  0 },
    { x,  0,  S,  x,  0,  0,  0,  0 }
};
int    rowS  = 7,              // координаты начальной
       colS  = 2,    
       rowE  = 0,              // и конечной точки
       colE  = 6;
void   OutMatr();                                                 
void   OutWay(int matr[][M], int rS, int cS);
int    main()
{
          // копия исходной матрицы    
    int   Matrix[N][M];          
    int   i, j;
    for(i = 0; i < N; i++)
        for(j = 0; j < M; j++)
            Matrix[i][j] = Matr[i][j];
    int   n,
          Finish    = false,
          // координаты начала пути (если < 0 - пути нет)
          rS        = -1,      
          cS        = -1;
    
          // смещение
    int   offset[8] = { -1,0, 1,0, 0,-1, 0,1 };
    
          // координаты прямоугольника для поиска клеток со значением n
    int   startRow  = rowE,    
          endRow    = rowE,        
          startCol  = colE,
          endCol    = colE;
    // вывод исходного состояния матрицы
    OutMatr();                 
    // Цикл поиска клеток со значением n и заполнения соседних пустых (0) клеток
    // значением n + 1. Цикл завершается, когда нечего уже заполнять или достигнута
    // стартовая точка (со значением S)
    for(n = E; !Finish; n++)
    {
        Finish = true;
        for(i = startRow; i <= endRow; i++)
        {
            for(j = startCol; j <= endCol; j++)
            {
                if(Matrix[i][j] == n)
                {                      
                    for(int k = 0; k < 8; k += 2)
                    {
                        // проверяем значение клеток слева, справа, сверху и снизу
                        if( i + offset[k]     >= 0  && 
                            i + offset[k]     <  N  && 
                            j + offset[k + 1] >= 0  &&
                            j + offset[k + 1] <  M )
                        {
                            // и, если клетка существует и не занята (0), 
                            if(Matrix[i + offset[k]][j + offset[k + 1]] == 0)
                            {
                                // заносим n + 1
                                Matrix[i + offset[k]][j + offset[k + 1]] = n + 1;
                                Finish = false;
                            }
                            // если достигнута начальная точка (S) - запоминаем    координаты
                            // текущей точки(i, j), как начала пути(rS, cS)
                            else if(Matrix[i + offset[k]][j + offset[k + 1]] == S)
                            {
                                rS = i;
                                cS = j;
                                
                                // и выходим из всех циклов
                                goto Finish;
                            }
                        }
                    }  
                }
            }  
        }
        
        startRow   =   max_(0    , startRow - 1);
        endRow     =   min_(N - 1, endRow   + 1);
        startCol   =   max_(0    , startCol - 1);
        endCol     =   min_(M - 1, endCol   + 1);
    }  
Finish:
    if(rS >= 0)                                    // путь найден
    {
        OutWay(Matrix, rS, cS);
        OutMatr();
    }
    else
        cout << " \n\n\nbla - bla - bla \n\n";       // путь не найден, делай что хочешь
    cout << endl;
    return 0;
}
void OutMatr()
{
    static int k = 1;
    cout << (k-- ? "Source matrix:\n" : "\n\n\nOutput of the way:\n");
    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < M; j++)
            cout << setw(5) << Matr[i][j];
        cout << endl;
    }
}
// Вывод пути:
// от точки rS, cS - к ближайшей (со значением на 1 меньше),
// от нее-к следующей (на 1 меньше) и т.д.-до конечной (E)
void OutWay(int matr[][M], int rS, int cS)
{
    int   rW  = rS,
          cW  = cS;
    Matr[rW][cW] = -1;
    while(matr[rW][cW] != E)
    {
        if(rW > 0 && matr[rW - 1][cW] == matr[rW][cW] - 1)
            Matr[--rW][cW] = -1;
        else if(rW < M - 1 && matr[rW + 1][cW] == matr[rW][cW] - 1)
            Matr[++rW][cW] = -1;
        else if(cW < N - 1 && matr[rW][cW + 1] == matr[rW][cW] - 1)
            Matr[rW][++cW] = -1;
        else if(cW > 0 && matr[rW][cW - 1] == matr[rW][cW] - 1)
            Matr[rW][--cW] = -1;
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Минич
 Аватар для Минич
66 / 66 / 3
Регистрация: 26.11.2010
Сообщений: 123
03.01.2011, 01:14     Ввод матрицы вручную #21
Цитата Сообщение от apachan Посмотреть сообщение
и кстати, программа из 10-го поста не учитывает, что если начальная или конечная точка равна "1" (стена то есть)
Поставь проверку в начале при вводе координат точек, что точка не должна быть равной 1
Цитата Сообщение от apachan Посмотреть сообщение
либо программа просто ищет выход из лабиринта
а что будет выходом из лабиринта?! выход тоже вручную вводится, или случайным образом?!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
apachan
13 / 13 / 2
Регистрация: 07.12.2010
Сообщений: 127
03.01.2011, 12:00  [ТС]     Ввод матрицы вручную #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
//поиск пути
 
        mas[k][l]=-1;   
        for( int num=-1;num+N*N>0;num--)
                for(int i=1;i<N-1;i++)
                        for (int j=1;j<N-1;j++)
        if(mas[i][j]==num)
                        {{if(mas[i+1][j]==0)
                                mas[i+1][j]=num-1;}
                        {if(mas[i-1][j]==0)
                                mas[i-1][j]=num-1;}
                        {if(mas[i][j+1]==0)
                                mas[i][j+1]=num-1;}
                        {if(mas[i][j-1]==0)
                                mas[i][j-1]=num-1;}
                        }
                //нахождение максимума на границе
        int max=-N*N,mi=-1,mj=-1;
        for (  i=0;i<N;i++)
                {if((mas[i][0]>max)&&(mas[i][0]<0))
                        {max=mas[i][0];
                        mi=i;
                        mj=0;}
                if((mas[i][N-1]>max)&&(mas[i][N-1]<0))
                        {max=mas[i][N-1];
                        mi=i;
                        mj=N-1;}}
        for(int j=0;j<N;j++)
                {if ((mas[0][j]>max)&&(mas[0][j]<0))
                        {max=mas [0][j];
                        mi=0;
                        mj=j;}
                if ((mas[N-1][j]>max)&&(mas[N-1][j]<0))
                        {max=mas[N-1][j];
                        mi=N-1;
                        mj=j;}}
        //нахождение пути
 
        if(max==-N*N)
                cout<<"Prohoda net "<<endl;
        else 
        { cout<<"Iskomyj put"<<endl;
        for(int a=max-1;a<0;a++)
        {{if (mas[mi-1][mj]==a)
                mi=mi-1;}
        { if (mas[mi+1][mj]==a)
                mi++;}
        {if (mas[mi][mj-1]==a)
                mj--;}
        {if (mas[mi][mj+1]==a)
                mj++;}
        cout<<"[ "<<mi<<" ][ "<<mj<<" ]"<<endl;}}       
        return 0;
}
Выходом будет граничная точка, равная 0, он никак не вводится, просто ищется кратчайший путь к граничной точке, если есть.
Минич
 Аватар для Минич
66 / 66 / 3
Регистрация: 26.11.2010
Сообщений: 123
03.01.2011, 12:16     Ввод матрицы вручную #23
Предлагаю сделать вот так:
Если пользователь выбрал "выход из лабиринта", автоматически определяется точка выхода, путем пробега по пограничным точкам, и при нахождении пограничной точки она становится "искомой точкой"

Но учтите теперь матрица не будет случайным образом введена, ее нужно будет вводить вручную!
apachan
13 / 13 / 2
Регистрация: 07.12.2010
Сообщений: 127
03.01.2011, 12:19  [ТС]     Ввод матрицы вручную #24
Но учтите теперь матрица не будет случайным образом введена, ее нужно будет вводить вручную!
Почему же? Просто в рандомной матрице в большинстве случаев пути не будет, а так программа выполняет свою задачу.
Минич
 Аватар для Минич
66 / 66 / 3
Регистрация: 26.11.2010
Сообщений: 123
03.01.2011, 12:59     Ввод матрицы вручную #25
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;
        }
}
Миниатюры
Ввод матрицы вручную  
apachan
13 / 13 / 2
Регистрация: 07.12.2010
Сообщений: 127
04.01.2011, 12:54  [ТС]     Ввод матрицы вручную #26
Теперь программа иногда крашится при выборе поиска выхода из лабиринта (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;
        }
}
Минич
 Аватар для Минич
66 / 66 / 3
Регистрация: 26.11.2010
Сообщений: 123
04.01.2011, 14:43     Ввод матрицы вручную #27
apachan, конкретный пример можете привести?! что?! как?! где?!
Интересно, а для чего вам такая программа?!
apachan
13 / 13 / 2
Регистрация: 07.12.2010
Сообщений: 127
04.01.2011, 14:55  [ТС]     Ввод матрицы вручную #28
apachan, конкретный пример можете привести?! что?! как?! где?!
В том то и дело, что крашится она рандомно, раз на раз не приходится, в отладчике я ничерта не понимаю.
Интересно, а для чего вам такая программа?!
Мне? Незачем, задание такое
Минич
 Аватар для Минич
66 / 66 / 3
Регистрация: 26.11.2010
Сообщений: 123
04.01.2011, 14:58     Ввод матрицы вручную #29
apachan, что значит "что крашится она рандомно"
apachan
13 / 13 / 2
Регистрация: 07.12.2010
Сообщений: 127
04.01.2011, 15:00  [ТС]     Ввод матрицы вручную #30
Ну, допустим, когда дается выбор - найти путь до точки или найти выход, вводишь 0 и все, краш.

C++
1
2
3
 bool t;
                cout << "Najti vyhod iz labirinta ili najti put' do nuzhnoj tochki? 1/0: "; 
                cin >> t;
Минич
 Аватар для Минич
66 / 66 / 3
Регистрация: 26.11.2010
Сообщений: 123
04.01.2011, 16:17     Ввод матрицы вручную #31
Проблема: при отсутствии выхода из лабиринта, т.е. окруженный со всех сторон 1, параметры rowExit и colExit имеют случайные значения, т.к. инициализация их не проходит внутри циклов, так что их нужно инициализировать нулями при объявлении.
C++
1
int rowExit = 0, colExit = 0;
еще один нюанс, думаю его объяснять не стоит
C++
1
2
3
4
if (!t && (!rowS || rowS == N - 1 || !colS || colS == M - 1)) {
    cout << "Вы уже на выходе!!!" << endl;
    goto FullExit;
}
добавить это условие перед циклом do-while и метку FullExit перед паузой при выходе из программы
без этого условия программа выпадает в ошибку
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2011, 16:46     Ввод матрицы вручную
Еще ссылки по теме:

C++ Ввод с клавы размера целочисленной матрицы, а затем самой матрицы. Найти наибольший элемент. Разрешается использовать только один оператор цикла
Ввод матрицы C++
C++ Ввод координат вручную

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
apachan
13 / 13 / 2
Регистрация: 07.12.2010
Сообщений: 127
04.01.2011, 16:46  [ТС]     Ввод матрицы вручную #32
Да, все заработало, теперь не выпадает с ошибкой, спасибо
Yandex
Объявления
04.01.2011, 16:46     Ввод матрицы вручную
Ответ Создать тему
Опции темы

Текущее время: 00:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru