Ciao a tutti , scrivo un programma che preleva dei dati (numeri reali scritti con la seguente sintassi: z1 4 5.5) da un file e li mette in un albero per poi stamparli in modo ordinato ....purtroppo mi da l errore scritto nel titolo.... vi posto il codice
grazie mille
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct bin_tree {
char codice[4];
double reale;
double immaginaria;
struct bin_tree * right, * left;
};
typedef struct bin_tree node;
void insert(node **tree, char *cod_id, double val_reale, double val_immag );
void print_inorder(node *tree);
int main(void){
/*Dichiarazioni delle variabili locali alla funzione*/
FILE *file_numeri_reali;
node *root;
//node *temp;
/* Acquisire i dati dal file */
char buf[200];
char *res;
printf ("Lettura dati dal file e salvataggio dati nell albero binario \n");
/* apre il file */
file_numeri_reali=fopen("numeri_reali.txt", "r");
if( file_numeri_reali==NULL ) {
perror("Errore in apertura del file");
return 1;
}
/* legge e stampa ogni riga */
while(1) {
char cod[4];
double real=0;
double immag=0;
res=fgets(buf, 200, file_numeri_reali);
if( res==NULL )
break;
sscanf (buf, "%s %lf %lf", cod, &real, &immag);
printf("%s %lf %lf \n", cod, real, immag);
insert (&root, cod, real, immag);
}
/* chiude il file */
fclose(file_numeri_reali);
printf("In Order Display\n");
print_inorder(&root);
return (0);
}
/*Definizione della funzione per inserire i valori nell albero*/
void insert(node **tree, char *cod_id, double val_reale, double val_immag )
{
node *temp = NULL;
if(!(*tree))
{
temp = (node *)malloc(sizeof(node));
temp->left = temp->right = NULL;
strcpy(temp->codice, cod_id);
printf("codice %s \n", temp->codice);
temp->reale = val_reale;
temp->immaginaria = val_immag;
printf("parte reale %lf \n", temp->reale);
printf("parte immaginaria %lf \n", temp->immaginaria);
*tree = temp;
return;
}
if(val_reale < (*tree)->reale)
{
insert(&(*tree)->left, cod_id, val_reale, val_immag);
}
else if(val_reale > (*tree)->reale)
{
insert(&(*tree)->right, cod_id, val_reale, val_immag);
}
}
void print_inorder(node *tree)
{
if (tree)
{
print_inorder(tree->left);
printf("%s %lf %lf \n", tree->codice, tree->reale, tree->immaginaria);
print_inorder(tree->right);
}
}
edit :ho aggiornato il codide