errori col dev c++

Pubblicità

Tony Hak

Nuovo Utente
Messaggi
15
Reazioni
0
Punteggio
25
ciao raga!
Ho le seguenti strutture che vanno ad implementare due type. Dunque:


Codice:
typedef struct edge 
{ 
      int key; 
      struct edge *next; 
} edge;
 
typedef struct graph 
{ 
     int nv; /* numero di vertici del grafo */ 
     edge **adj; /* vettore con le liste delle adiacenze */ 
} graph;

Ho una funzione

Codice:
graph *g_empty(int n);

gli errori che ne nascono sono:

parse error before `*'
warning: data definition has no type or storage class
conflicting types for `g_empty'
previous declaration of `g_empty'

aiutatemi vi prego..sto perdendo la testa...
 
strano come errore ... hai provato a definire il corpo della funzione quando la pre-dichiari? provato a usare il "nome" del typedef diverso da quello della struct? non vorrei che dev-c++ facesse casini strani
 
questo è tutto il codice :

Codice:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>


typedef struct edge
        {
           int key;
           struct edge *next;
        } edge;

typedef struct graph
        {
           int nv; /* numero di vertici del grafo */
           edge **adj; /* vettore con le liste delle adiacenze */
        } graph;


struct rec
        {
           int numero;
           char nome;
           int ore;
           int fatturato;
           struct rec *next;
        }

graph *g_empty(int n);
int is_empty(graph *G);
void g_add(graph *G, int u, int v);
struct rec *crea_lista(int nume);

graph *g_empty(int n)
{
      graph *G;
      int i;

      G = (graph*)malloc(sizeof(graph));
      if (G==NULL)
         printf("ERRORE: impossibile allocare memoria per il grafo\n");
      else
      {
         G->adj = (edge**)malloc(n*sizeof(edge*));
         if ((G->adj==NULL) && (n>0))
         {
            printf("ERRORE: impossibile allocare memoria per la lista del grafo\n");
            free(G);
            G=NULL;
         }
         else
         {
            G->nv = n;
            for (i=0; i<n; i++)
            G->adj[i]=NULL;
         }
      }
return(G);
}

dal main:

Codice:
main()
{
      int num;
      struct rec *listarec;
      graph *g;
      printf ("\nQuante citta' vuoi inserire");
      scanf ("%d",&num);
      g = g_empty(num);
      listarec = crea_lista(num);
}

???
 
ciao ! .. ora ho altri errori .. eccovi la funzione:
Codice:
int g_add(graph *G, int u, int v, int d)
{
     edge *new,*e;
     int trovato =0;
     /*code*/
     new = (edge*)malloc(sizeof(edge));
     if (new==NULL)
        printf("ERRORE: impossibile allocare memoria \n");
     else
     {
        new->key=v;
        new->dist=d;
        new->next=NULL;
        if (G->adj[u] == NULL) /*il nodo u non ha archi */
           G->adj[u] = new;
        else
        {
           e=G->adj[u];
           if (e->key != v) /*controllo sul primo nodo*/
           {
              while ((e->next!=NULL) && (trovato == 0))
                 {
                    if (e->next->key == v)
                       {   /*controllo dal secondo nodo*/
                          trovato =1;
                          distanza = e->next->dist;
                       }
                       else
                       e=e->next;
                 }
              if (trovato == 0)
                 e->next=new;
           }
           else trovato =1;
        }
     }
return trovato;
}
e questi errori che non so a cosa sono dovuti ...
In function `int g_add(graph *, int, int, int)':
116: parse error before `new'
119: parse error before `='
120: parse error before `=='
128: parse error before `;'
132: `e' undeclared (first use this function)
132: (Each undeclared identifier is reported only once
132: for each function it appears in.)
145: parse error before `;'
149: confused by earlier errors, bailing out
le strutture sono
Codice:
typedef struct edge
        {
           int key;
           int dist;
           struct edge *next;
        } edge;
typedef struct graph
        {
           int nv; /* numero di vertici del grafo */
           edge **adj; /* vettore con le liste delle adiacenze */
        } graph;
 
struct rec
        {
           int key;
           int numero;
           char nome [70];
           int ore;
           int fatturato;
           struct rec *next;
        };
aiuto :( ...
 
new è superpericoloso...perchè in realtà dovrebbe essere un comando per istanziare un oggetto di una classe.... occhio ai nomi delle variabili!!
 
infatti era pericolossissimo :D scusate se ris solo adesso ma ieri so tornato tardi dall'uni .. e stamane ho un altro problema..spero che non perdiate la pazienza con me :) ... voglio evitare di aprire altri post .. quindi quest'altro problema che ho riscontrato lo posto qui ...
in pratica quando passo un puntatore al primo elemento di una lista in una funzione mi viene restituito lo stasso puntatore che pero' non punta piu' al primo elemento .. com'e' possibile ???? ora vi spiego meglio :
ho il seguente codice
Codice:
switch (sceltamenu)
      {
          case 1:
                  {
                    printf ("\nQuante citta' vuoi inserire? ");
                    scanf ("%d",&numc);
                    grafo = g_empty(numc);
                    lista = crea_lista(numc);
                    p=lista;
                    collegamenti (grafo,numc,p);
                  }break;
          case 2:
                  {
                    aggiuntacoll (grafo,numc,p);
                  }break;
       }
come potete notare per per evitare che il puntatore "lista" si sposti dal primo elemento della lista ho usato un'altro puntatore .. "P"..pero' cmq il puntatore lista si spota dal primo nodo ! ..com'e' possibile ? ..grazie del generoso aiuto ! :)
ecco ...
 
senza avere sott'occhio le funzioni coinvolte è dura aiutarti .... metti un po' di codice please ;-)
 
infatti era pericolossissimo :D scusate se ris solo adesso ma ieri so tornato tardi dall'uni .. e stamane ho un altro problema..spero che non perdiate la pazienza con me :) ... voglio evitare di aprire altri post .. quindi quest'altro problema che ho riscontrato lo posto qui ...
in pratica quando passo un puntatore al primo elemento di una lista in una funzione mi viene restituito lo stasso puntatore che pero' non punta piu' al primo elemento .. com'e' possibile ???? ora vi spiego meglio :
ho il seguente codice
Codice:
switch (sceltamenu)
      {
          case 1:
                  {
                    printf ("\nQuante citta' vuoi inserire? ");
                    scanf ("%d",&numc);
                    grafo = g_empty(numc);
                    lista = crea_lista(numc);
                    p=lista;
                    collegamenti (grafo,numc,p);
                  }break;
          case 2:
                  {
                    aggiuntacoll (grafo,numc,p);
                  }break;
       }
come potete notare per per evitare che il puntatore "lista" si sposti dal primo elemento della lista ho usato un'altro puntatore .. "P"..pero' cmq il puntatore lista si spota dal primo nodo ! ..com'e' possibile ? ..grazie del generoso aiuto ! :)
ecco ...

Ma il puntatore lo hai passato per riferimento???
 
Pubblicità
Pubblicità
Indietro
Top