Я делаю программу графика прямо сейчас, но она еще не закончена, это о моем вопросе раньше (о матрице края в графе с использованием c++), и это примерная программа
#include <iostream>
using namespace std;
int main()
{
int n, m = 0, i, j, k, l;
cout << "How many vertex in graph : ";
cin >> n;
cout << endl << endl;
int A[n][n], A1[n][n];
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
{
cout << "A[" << i << "][" << j << "] = ";
cin >> A[i][j];
if (A[i][j] == 1)
m++;
}
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
A1[i][j] = A[i][j];
m = m / 2;
int B[m][m];
cout << endl << "Adjacency Matrix A : " << endl;
/* Problem
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
{
cout << A[i][j] << " ";
if(j == n)
cout << endl;
}
*/
cout << endl;
/* Problem maker
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
if(A1[i][j] == 1)
{
for(k = 1; k <= n; k++)
for(l = 1; l <= n; l++)
if(A1[k][l] == 1)
{
if(k == i && l == j)
B[i][j] == 0;
else if (k == j && l == i)
A1[k][l] == 0;
else if(k == i || k == j || l == i || l == j)
B[i][j] == 1;
else
B[i][j] == 0;
}
}*/
и, если я вводим последовательно 0,1,1,1,0,0,1,0,0. Я абсолютно уверен, что результат:
0 1 1
1 0 0
1 0 0
но это дает:
0 1 1
1 0 0
1 0 8
Эта часть, где я понятия не имею, я думаю, что это вызывает /*Problem maker
. Я знаю, что я не понимаю c++ достаточно хорошо, но для /*Problem
части я уверен, что все правильно. Несмотря на то, что /*Problem maker
не прав по своим алгоритмам или что-то еще, он не связан с правой частью /*Problem
?
Если я удалил часть /*Problem maker
, выход будет хорошо и красиво.
В int A[n][n] ;
A
может быть пройден только для всех строк, начиная с i = 0 to n-1
для всех столбцов, начиная с j = 0 to n-1
Доступ к A[n][n]
вызывает неопределенное поведение
Конечно, вы можете исправить это разными подходами
A1[i][j] = A[i][j];