vbextreme ha scritto:
1 apro un file in lettura
fp = fopen("lista.txt", "r");
2 creo un nodo
Lista n;
n = (Nodo*)malloc(sizeof(Nodo));
3 leggo dal file i valori del nodo
while(fscanf(fp, "%s %lg %lg", id, &reale, &immaginario) != EOF ){
nodo = (Nodo *)malloc(sizeof(Nodo));
strcpy( nodo->id, id );
nodo->reale = reale;
nodo->immaginario = immaginario;
nodo->next = elem_succ;
elem_succ = nodo;
}
4 inserisco nella lista il nodo già ordinato
questo passaggio non so come farlo..
ho provato così ma non mi convince..
if(nodo->reale > nodo->next->reale){
strcpy( nodo->next->id, n->id );
nodo->next->reale = n->reale;
nodo->next->immaginario = n->immaginario;
nodo = nodo;
nodo->next = nodo->next->next;
}
else if(nodo->reale < nodo->next->reale){
strcpy( nodo->id, n->id );
nodo->reale = n->reale;
nodo->immaginario = n->immaginario;
nodo = nodo->next;
nodo->next = nodo->next->next;
}
5 fintanto che ho dati goto 2
while(fscanf(fp, "%s %lg %lg", id, &reale, &immaginario) != EOF ){
n = (Nodo*)malloc(sizeof(Nodo));
}
6 chiudo il file
fclose(fp);
7 apro un file in scrittura
fn= fopen("secondo.txt", "w+");
8 scorro la lista dal primo elemento
while(fscanf(fp, "%s %lg %lg", id, &reale, &immaginario) != EOF )
9 salvo i dati del nodo
fprintf(fn, "%s %g %g", n->id, n->reale, n->immaginario);
10 chiudo
fclose(fn);
remove("lista.txt");
rename("secondo.txt", "lista.txt");
Ora che hai i punti procedi cosi, quota ogni punto e per ognuno fai la conversione nel linguaggio c.
Non preoccupati se così avrà poco senso il codice che scriversi, ci penseremo al passaggio successivo.
Su alcuni punti non sono sicuro. Però è come ho impostato il codice..