Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [C] liste

  1. #1
    Utente di HTML.it L'avatar di dodora
    Registrato dal
    Oct 2012
    Messaggi
    11

    [C] liste

    Dovrei scrivere un programma in c che legge da un file dei dati e li memorizza in una lista.
    il file contiene un elenco con nome cognome ed età di alcuni studenti.

    Se non erro dovrei creare una struttura record con i campi nome cognome ed età...ma la cosa che non riesco proprio a fare è prelevare i dati dal file e memorizzarli nella lista come record.

    è giusto definire la lista con il campo info di tipo record, dove record è definito con i campi nome cognome ed età?

  2. #2
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Ogni nodo della lista contiene l' informazione, ed un puntatore al nodo successivo.
    La lista si riferisce indirettamente a un nodo, attraverso il quale può andare a reperire tutti gli altri nodi, più informazioni aggiuntive come la lunghezza.

  3. #3
    Utente di HTML.it L'avatar di dodora
    Registrato dal
    Oct 2012
    Messaggi
    11
    Ho scritto una cosa del genere..ovviamente non funziona ma mi dite come correggere

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    #include <malloc.h>
    typedef char stringa[20];
    typedef struct
        { char nome[20];
          char cognome[20];
          int eta;
          int altezza;
        } record;
        
    typedef struct EL
    	{record info;
    	 struct EL *prox;
    	}elemlista;
    typedef elemlista *listaelementi;
    
    
    
    void visualizza(listaelementi );
    listaelementi inserisci(listaelementi, record);
        	
    int main(int argc, char *argv[])
    {
      listaelementi lista;
      lista=NULL;
      FILE *fl;
      record elemento;
      
       /*memorizza elenco dal file alla lista*/
      if ((fl=fopen("elenco.txt", "r")) == NULL)
      	  printf("impossibile aprire il file");
      else 
      {   
       	 while(!feof(fl))
       	 { fscanf(fl, "%s %s %d %d", elemento.nome, elemento.cognome, &elemento.eta, &elemento.altezza);
       	 
       	 /*solo per controllare che i dati vengano presi in modo corretto*/
      	   printf("%s %s %d %d ", elemento.nome, elemento.cognome, elemento.eta, elemento.altezza);
      	   
    	 
    	 inserisci(lista, elemento);
    	 
    	 }	  
      } 
    
     
    visualizza(lista);
    
      
      system("PAUSE");	
      return 0;
    }
    
    listaelementi inserisci(listaelementi lista, record elemento)
    { elemlista *punt;
      punt = malloc(sizeof(elemlista));
      punt->info= elemento;
      punt->prox = lista;
      return punt;
    }
    
    void visualizza(listaelementi lista)
    { 
    if (lista!=NULL)
      { 
      printf("%s", lista->info);
      visualizza(lista->prox);
       
      } 
      else printf("lista vuota");
    }

  4. #4

    Moderazione

    Il codice va inserito tra tag [code] ... [/code], altrimenti perde l'indentazione; qui ho sistemato io, in futuro ricordatene.

    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    E tra l' altro devi di preciso cos'è che non funziona.

  6. #6
    Utente di HTML.it L'avatar di dodora
    Registrato dal
    Oct 2012
    Messaggi
    11
    in realtà non funziona niente, l'unica cosa che riesco a fare è prelevare i dati dal file ed inserirli in una struttura record..
    il vero problema è trasferire il contenuto del record nel file...come si fa??

  7. #7
    Utente di HTML.it L'avatar di dodora
    Registrato dal
    Oct 2012
    Messaggi
    11
    Scusate ho sbagliato a scrivere..volevo dire che non riesco a trasferire il record in una lista..non so se é corretto definire la lista con il campo di tipo record oppure inserire diversi campi x nome, cognome, età., altezza..
    Sono giorni che giro su internet, libri, ecc ma non riesco a trovare una soluzione

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    In realtà non riesci neanche a spiegare cosa non sai fare ... e questo è perfettamente possibile per chi inizia, ma non aiuta a darti una mano.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di dodora
    Registrato dal
    Oct 2012
    Messaggi
    11
    forse non riesco a spiegarmi..

    in pratica ho un file con un elenco di nome, cognome, eta e altezza del tipo:
    rossi mario 34 170
    lupo alberto 34 160
    magno carlo 45 174

    devo leggere da questo file M record distinti contenente nome, cognome, età e altezza e memorizzare questi M record in una lista.

    Non so fare proprio questo...inserire questi dati di tipo record nella lista, non so come definire questa lista..potreste indicarmi che struttura dare a questa lista??

    Per iniziare, in pratica la lista va definita così

    codice:
    typedef struct elemlista {char nome[20]; char cognome[20]; int eta; int altezza; struct EL *prox; }elemlista;
    oppure

    codice:
    typedef struct elemlista {record info; struct EL *prox; }elemlista;
    Almeno per farmi iniziare potreste darmi una dritta, i casi li ho provati entrambi ma non funzionano nel momento dell'inserimento dei dati...ditemi almeno che forma sarebbe opportuna..

  10. #10
    Utente di HTML.it L'avatar di dodora
    Registrato dal
    Oct 2012
    Messaggi
    11
    ah dimenticavo nel secondo codice record è definito come

    codice:
    typedef struct 
    {  char nome; 
        char cognome[20]; 
        int eta; int altezza; 
    } 
     record;

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.