15/02/10 20:24
matteog
ho provato ad implementare questo albero ma non mi funziona e mi dà i seguenti errori:
pp(66) : error C3861: 'trovadato': identifier not found
1>c:\documents and settings\falco\documenti\visual studio 2008\projects\alberon\alberon\alberon.cpp(76) : error C2059: syntax error : '('
1>c:\documents and settings\falco\documenti\visual studio 2008\projects\alberon\alberon\alberon.cpp(77) : error C2039: 'p' : is not a member of 'nodo'
1> c:\documents and settings\falco\documenti\visual studio 2008\projects\alberon\alberon\alberon.cpp(15) : see declaration of 'nodo'
1>c:\documents and settings\falco\documenti\visual studio 2008\projects\alberon\alberon\alberon.cpp(77) : error C2232: '->nodo::info' : left operand has '' type, use '.'
1>c:\documents and settings\falco\documenti\visual studio 2008\projects\alberon\alberon\alberon.cpp(83) : error C3861: 'confrontadati': identifier not found
error C2050: switch expression not integral
error C2051: case expression not constant
error C3861: 'trovanodo': identifier not found
error C2051: case expression not constant
error C3861: 'trovanodo': identifier not found
warning C4060: switch statement contains no 'case' or 'default' labels
error C2664: 'stamparicorsiva' : cannot convert parameter 1 from 'dati' to 'nodo *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Aiutatemi!!!!!!!!!
pp(66) : error C3861: 'trovadato': identifier not found
1>c:\documents and settings\falco\documenti\visual studio 2008\projects\alberon\alberon\alberon.cpp(76) : error C2059: syntax error : '('
1>c:\documents and settings\falco\documenti\visual studio 2008\projects\alberon\alberon\alberon.cpp(77) : error C2039: 'p' : is not a member of 'nodo'
1> c:\documents and settings\falco\documenti\visual studio 2008\projects\alberon\alberon\alberon.cpp(15) : see declaration of 'nodo'
1>c:\documents and settings\falco\documenti\visual studio 2008\projects\alberon\alberon\alberon.cpp(77) : error C2232: '->nodo::info' : left operand has '' type, use '.'
1>c:\documents and settings\falco\documenti\visual studio 2008\projects\alberon\alberon\alberon.cpp(83) : error C3861: 'confrontadati': identifier not found
error C2050: switch expression not integral
error C2051: case expression not constant
error C3861: 'trovanodo': identifier not found
error C2051: case expression not constant
error C3861: 'trovanodo': identifier not found
warning C4060: switch statement contains no 'case' or 'default' labels
error C2664: 'stamparicorsiva' : cannot convert parameter 1 from 'dati' to 'nodo *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
#include "stdafx.h" #include <string> #include <iostream> using namespace std; struct campi { int codice; char descrizione[20]; }; typedef struct campi dati; struct nodo { dati info; struct nodo *dx, *sx; }; int uguale=0; int segue=1; int precede=-1; struct nodo *radice; void operazione(char testata[]) { printf("\n%s\n",testata); return; } int confrontodati(dati dato1, dati dato2) { int c; if(strcmp(dato1.descrizione,dato2.descrizione)==0) c = uguale; else c = segue; return c; } int leggidato(struct campi *D){ int cod; printf("codice (0=fine): "); cin>>cod; if(cod !=0) { D->codice = cod; printf("descrizione: "); cin>>D->descrizione; } return cod; } void inizializza(void) { radice= NULL; return; } struct nodo *generando(void) { struct nodo *p = NULL; dati D; int fine; fine = leggidato(&D); while(fine != 0) { p=trovadato(D,p); fine = leggidato(&D); } return p; } struct nodo *trovadato(dati dato, struct nodo *p) { if(p==NULL) { p->(struct nodo *) malloc (sizeof(struct nodo)); p->info = dato; p-> sx = NULL; p-> dx = NULL; } else { switch(confrontadati(dato, p->info)) { case precede: p->sx = trovanodo(dato, p->sx); break; case segue: p->dx = trovanodo(dato,p->dx); break; } } return p; } void stamparicorsiva(struct nodo*p) { if (p!=NULL) { stamparicorsiva(p->sx); stamparicorsiva(p->info); stamparicorsiva(p->dx); } return; } void creaalbero(void) { operazione ("inserimento dei dati"); radice = generando(); return; } void stampaalbero(void) { operazione("stampa lista ordinata\n"); printf("\n"); return; } void main() { int scelta; inizializza(); do { do { printf("\n --------------------------\n"); printf("1.creazione albero"); printf("2. stampa ordinata"); printf("3.fine"); printf("\n --------------------------\n"); scanf("%d",&scelta); } while(scelta < 1 || scelta >2); switch (scelta) { case 1: creaalbero(); break; case 2: stampaalbero(); break; } } while(scelta !=3); }
Aiutatemi!!!!!!!!!
aaa