#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;
}
配列やポインタのタイプを必要とします。 MATRICE [NBR1] [NBR2] = 1; 私は、テキストファイルから隣接リストを作成しようとしています。私は何が間違っているのか分かりません。ありがとうございました。エラーC2109:添字は、だから私は、この行のエラーを取得しています
EDIT:人々はそれについて尋ねるので、これは私のグラフファイルです。最初の行は頂点の数と辺の数です(有用ではありません) 次の行は私の端です。最初の行は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
あなたのテクニックを使って私のマトリックスを手に入れました。多次元の動的配列に[] []構文を使用できないのは残念です!私はそれができることを本当に望んでいた。 – toto
それがうまくいって聞いてよかった!あなたの質問に答えるために、newは自動的にsizeof(type)に要素の数を乗じて割り当てます。 Cの 'malloc()'を使用する場合、sizeof()を使用する必要があります。 – EboMike