#include <stdio.h>#include <iostream>using namespace std; int main(void) {bool premiereLignefaite = false;//Lire le fichierFILE * graphe = fopen("graphe.txt", "r");//Fichier de sortieFILE * resultat = fopen("resultat.txt", "w");int nbr1, nbr2;int *matrice; //pointeur vers la matrice d'adjacence//Ligne luestatic 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; }所以我在这条线上出现错误:matrice [nbr1] [nbr2] = 1;我只是想从文本文件构建邻接表。我不明白我在做什么错。谢谢。编辑:由于人们问这个,这是我的图形文件。第一行是顶点数和边数(不适用于imo)以下几行是我的边缘,我使用第一行为NxN图分配内存,并使用以下几行填充邻接矩阵。9 200 10 21 01 21 31 52 02 12 33 13 23 44 35 15 65 76 56 87 58 6 最佳答案 int *matrice;表示矩阵是指向一个int(或多个int)的指针,因此matrice[a]将为您提供一个int。指针没有有关数组维数的任何信息,因此您不能进行二维访问。您想要存储数组的尺寸,然后执行matrice[nbr1 * numberOfColumns + nbr2] = 1;旁注:如果您不小心进行边界检查,则通过指针进行原始数组访问可能非常危险。考虑std::vector 。 您可能是说new int[nbr1 * nbr2]吗?
09-11 06:05