allora ho preso un problema da fare, per ora non mi interessa la parte di algoritmica. Devo leggere da un file .txt dei valori scritti in questo modo:
1 2 -2
3 -2
3 -2
4 5 -2
...
...
-1
La prima riga rappresenta il nodo 0, che è collegato ai nodi 1 e 2 (-2 è un terminatore), la seconda il nodo 1, che è collegato solo al nodo 3, ecc... l'ultima riga rappresenta l'ultimo nodo che non è collegato a nessun altro (per questo c'è -1).
Questo è il mio codice
#include "stdafx.h"
#include <iostream>
using namespace std;
#define MAX_PUNTI 50
#define MAX_FRECCE 100
struct nodo
{
int dato;
nodo* v[MAX_FRECCE];
}NODO;
typedef struct nodo* vertice;
vertice NewVertex(int dato)
{
vertice Vertex;
Vertex = (nodo*)malloc(sizeof(NODO));
Vertex->dato = dato;
return (Vertex);
}
void AddVertex(vertice Origine,vertice Nuovo)
{
int i;
for (i=0;i<=MAX_FRECCE;i++)
{
if (Origine->v[i]==NULL)
{
Origine->v[i] = Nuovo;
break;
}
}
}
vertice TotNodi[MAX_PUNTI];
int main(array<System::String ^> ^args)
{
FILE *f;
int n,i;
f = fopen("...percorso\\INPUT.TXT","r");
i = 0;
while(!feof(f))
{
TotNodi[i] = NewVertex(i);
fscanf(f,"%d",&n);
if(n != -2 && n!=-1 )
AddVertex (TotNodi[i],NewVertex(n));
else
i++;
}
fclose(f);
system("PAUSE");
Al momento di aggiungere un vertice non aggiunge nulla, e con il debug ho visto che la condizione
if (Origine->v[i]==NULL)
è sempre falsa.
(so che in quel punto lì è meglio un while, o simili ma ho scombinato un pò per vedere dov'era il problema)

Rispondi quotando