#include <stdio.h>
#include <iostream>
using namespace std;
int main(void)
{
bool premiereLignefaite = false;
//Lire le fichier
FILE * graphe = fopen("graphe.txt", "r");
//Fichier de sortie
FILE * resultat = fopen("resultat.txt", "w");
int nbr1, nbr2;
int *matrice; //pointeur vers la matrice d'adjacence
//Ligne lue
static char ligne[50];
while (fgets(ligne, 50, graphe) != NULL) //retourne 0 quand on a end-of-file
{
//La premiere ligne est différente
if (premiereLignefaite == false) {
//Initialiser une matrice d'adjacence NxN
sscanf(ligne, "%d %d", &nbr1, &nbr2);
matrice = new int(nbr1 * nbr1); //Memoire dynamique pour la matrice dadjacence n x n
premiereLignefaite = true;
continue;
}
//On construit notre matrice d'adjacence
sscanf(ligne, "%d %d", &nbr1, &nbr2);
matrice[nbr1][nbr2] = 1;
}
int u = 2+2;
return 0;
}
所以我在这条线得到一个错误: 矩阵的计算[NBR1] [NBR2] = 1; 我只是试图从文本文件建立一个邻接列表。我不明白我做错了什么。谢谢。错误C2109:下标要求数组或指针类型
编辑:由于人们询问它,这是我的图形文件。第一行是顶点的数量和边的数量(不是有用的imo) 以下几行是我的边,我使用第一行为NxN图分配内存,下面几行填充我的邻接矩阵。
9 20
0 1
0 2
1 0
1 2
1 3
1 5
2 0
2 1
2 3
3 1
3 2
3 4
4 3
5 1
5 6
5 7
6 5
6 8
7 5
8 6
我不需要添加* sizeof(int),因为C++会自动对它进行调整吗? – toto 2010-12-11 22:58:07
我得到了我的矩阵与您的技术。对于多维动态数组,不能使用[] []语法太糟糕了!我真的希望我能做到这一点。 – toto 2010-12-11 23:00:57
很高兴听到它的工作!要回答你的问题 - 是的,新会自动分配sizeof(type)乘以元素的数量。如果你使用C的'malloc()',你将不得不使用sizeof()。 – EboMike 2010-12-12 17:58:34