Lista Utenti taggati

Risultati da 1 a 3 di 3

Discussione: [c]LISTE....URGENTE

  1. #1
    Utente Attivo
    Data Registrazione
    14-11-11
    Messaggi
    24
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito [c]LISTE....URGENTE

    Dovrei portare questo esercizio a breve e necessito di una mano...


    prendere in input da un file i dati relativi a degli scrittori inserirli in una lista e fare in modo
    che il campo id sia incrementato ad ogni inserimento;
    Scrivere una funzione per creare un nuovo elemento di tipo scrittore.
    Mettere l'elemento creato nella lista creata nel main e passata alla funzione insieme al puntatore
    alla lista e rispettare l'ordine del contatore.
    Stampare nel file output il primo record della lista maggiore di 5.

    Devo attenermi alle seguenti funzioni:

    void crea(FILE *, data**);
    void scrivi_file(head,out);

    e alla seguente struttura:
    typedef struct lista{
    int id;
    char nome[20];
    char cognome[20];
    int numero_opere;
    next successivo;
    }lista;

    typedef struct lista *next;

    all'interno del main il prof ha creato la testa della struttura:
    lista *head;

    ora quello che non capisco io è come creare la struttura usando quei due ** nella funzione...aiuto.. grazie 1000

    ---------- Post added at 18:35 ---------- Previous post was at 18:16 ----------

    ho provato a buttare giu un po di codice:
    Codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    
    typedef struct autore{
           int id;
           char nome[20];
           char cognome [20];
           int brani;
           struct autore *next;
           }autore;
    
    
    
    
    void crea_l(FILE *,autore **);
    
    
    int main(){
    
    
        autore *start;
        FILE *fp;
        
        fp=fopen("01_ex.txt","w");
        
        crea_l(fp,&start);
        fclose(fp);
    system("PAUSE");
    return 0;
    }
    
    
    void crea_l(FILE *fp,autore **p){
        autore nuovo,corr,prec;
         char n[10];
         int i;
         printf("nome: ");
         scanf("%s",n);
         nuovo=malloc(sizeof(autore));
         if(nuovo!=NULL){
                         for(i=0;i<3;i++){
                         nuovo->id=i;
                         nuovo->nome=n;
                         nuovo->next=NULL;
                         
                         prec=NULL;
                         corr=*p;
                         
    while(prec!=NULL){
                     prec=corr;
                     corr=corr->next;
                     }
    if(prec == NULL){
            nuovo->next=*p;
            *p=nuovo;
            }
    else{
         prec->next=nuovo;
         nuovo->next=corr;
         }
         }
         }
    
    
    41 C:\Users\Daniele\Desktop\prova esame2.c invalid type argument of `unary *' 
    42 C:\Users\Daniele\Desktop\prova esame2.c invalid operands to binary != 
    44 C:\Users\Daniele\Desktop\prova esame2.c invalid type argument of `->' 
    55 C:\Users\Daniele\Desktop\prova esame2.c invalid operands to binary == 
    
    mi da i seguenti errori...potreste aiutarmi, cortesemente???

  2.  
    Stanco della Pubblicità? Registrati

  3. #2
    Utente Attivo
    Data Registrazione
    14-11-11
    Messaggi
    24
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: [c]LISTE....URGENTE

    Ho riscritto il programma questa volta sembra andar un pò meglio ma mi da un problema...quando inserisco piu di 2 autori si chiude il terminal, ma nella compilazione non mi da nessun errore.. se qualcuno di buona volontà più aiutarmi li ringrazio ho un esame a breve..

    Codice:
    #include<stdio.h>#include<stdlib.h>
    
    
    typedef struct autore{
           int id;
           char nome[20];
           
           struct autore *next;
           }autore;
    
    
    typedef struct autore a;
    typedef a *nodo;
    void crea_l(FILE *,autore **);
    
    
    void stampa(nodo );
    int main(){
    int scelta=0;
        autore *start=NULL;
        FILE *fp;
        
        fp=fopen("01_ex.txt","w");
       while(!scelta){
        crea_l(fp,&start);
        printf("FINE? 1=SI 0=N0");
        scanf("%d",&scelta);
    }
       
        fclose(fp);
       stampa(start);
    system("PAUSE");
    return 0;
    }
    
    
    void crea_l(FILE *fp,autore **p){
       nodo nuovo,corr,prec;
         char n[10];
         int num;
         int scelta=0;
         printf("Id: ");
         scanf("%d",&num);
         printf("nome: ");
         scanf("%s",n);
         
         
       
        nuovo=(struct autore *) malloc(sizeof(struct autore*));
        
         if(nuovo!=NULL){
                       
                          nuovo->id=num;
                          strcpy(nuovo->nome,n);
                          
                          nuovo->next=NULL;
                         
                         prec=NULL;
                         corr=*p;
                         
                         
    while(corr!=NULL && num> corr->id){
                     prec=corr;
                     corr=corr->next;
                     }
    if(prec == NULL){
            nuovo->next=*p;
            *p=nuovo;
            }
    else{
         prec->next=nuovo;
         nuovo->next=corr;
         }
         }
         }
         
    void stampa(nodo p){
         
         if(p!= NULL){
         printf("%d\n",p->id);
         printf("%s\n\n",p->nome);
         
         stampa(p->next);
                                    }
                                   
                                    }

  4. #3
    Utente Attivo
    Data Registrazione
    14-11-11
    Messaggi
    24
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: [c]LISTE....URGENTE

    ho quasi finito ultimo problema la lettura dal file..il programma funziona solo che quando legge il file dopo aver letto tutto si blocca chiudendosi
    Codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    
    typedef struct autore{
           int id;
           char nome[20];
           char cognome[20];
           int brani;
           struct autore *next;
           }autore;
    
    
    typedef struct autore a;
    typedef a *nodo;
    void crea_l(FILE *,autore **);
    int stampaINfile(FILE *fpOUT,autore *);
    
    
    void stampa(nodo );
    
    
    int main(){
    
    
            int scelta;
            autore *start=NULL;
            FILE *fpIN, *fpOUT;
         
         fpIN=fopen("ex02.txt","w");     // creo il file con le liste inserite dall'utente e incremento l'id
         crea_l(fpIN,&start);
         fclose(fpIN);
       
       
         printf("La lista.\n");
         stampa(start);     
      
         fpOUT=fopen("ex02.txt","r"); 
         stampaINfile(fpOUT,start);   
         
                             
         printf("FINE.\n");
                                               
     
    system("PAUSE");
    return 0;
    }
    
    
    void crea_l(FILE *fp,autore **p){
         nodo nuovo,corr,prec;
         char n[10];
         char c[10];
         int num,brani,scelta;
         int cont=1;
        
        while(scelta!=1){
         printf("nome: ");
         scanf("%s",n);
         printf("cognome: ");
         scanf("%s",c);
         printf("Brani: ");
         scanf("%d",&brani);
         
       
        nuovo=malloc(sizeof(struct autore));
        
         if(nuovo!=NULL){
                       
                          nuovo->id=cont++;
                          strcpy(nuovo->nome,n);
                          strcpy(nuovo->cognome,c);
                          nuovo->brani=brani;
                          nuovo->next=NULL;
                         
                          prec=NULL;
                          corr=*p;
                         
                         
    while(corr!=NULL && cont > corr->id){
                     prec=corr;
                     corr=corr->next;
                     }
    if(prec == NULL){
            nuovo->next=*p;
            *p=nuovo;
            }
    else{
         prec->next=nuovo;
         nuovo->next=corr;
         }
          fprintf(fp,"**Autore**\n");
          fprintf(fp,"Id:%d\n",nuovo->id);
          fprintf(fp,"Nome:%s\n",nuovo->nome);
          fprintf(fp,"Cognome:%s\n",nuovo->cognome);
          fprintf(fp,"Brani:%d\n\n",nuovo->brani);
         }
         printf("\nFINE? 1=SI 0=N0  ");
                    scanf("%d",&scelta);
                    printf("\n");
                    }
          
          
          }
         
    void stampa(nodo p){
         
         if(p!= NULL){
         printf("\n*** Autore ***\n");
         printf("Id: %d\n",p->id);
         printf("Nome: %s\n",p->nome);
         printf("Cognome: %s\n",p->cognome);
         printf("Brani: %d\n\n",p->brani);
         stampa(p->next);
                                    }
                                   
                                    }
                                    
    int stampaINfile(FILE *fpOUT,nodo p){
        int scan=0; 
        printf("STAMPA DA FILE\n");
       
       while(!feof(fpOUT)){
          fscanf(fpOUT,"%d",&p);
          printf("Id: %d\nNome: %s\nCognome: %s\nNumero brani: %d\n\n",p->id,p->nome,p->cognome,p->brani);
        
    }
    
    
        
       fclose(fpOUT);   
       return 0;
    }

  5.  
    Stanco della Pubblicità? Registrati

Informazioni Discussione

Utenti che Stanno Visualizzando Questa Discussione

Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)

Discussioni Simili

  1. Liste
    Di davide84 nel forum Programmazione
    Risposte: 3
    Ultimo Messaggio: 31-01-2012, 12:32
  2. [C] liste e file
    Di Trigun86 nel forum Programmazione
    Risposte: 1
    Ultimo Messaggio: 18-01-2012, 16:09
  3. ordinare liste contenute in file [C]
    Di Trigun86 nel forum Programmazione
    Risposte: 6
    Ultimo Messaggio: 11-01-2012, 13:38
  4. Risposte: 0
    Ultimo Messaggio: 04-02-2006, 00:52
  5. Problema Liste Nere
    Di Sany nel forum Banda Larga
    Risposte: 0
    Ultimo Messaggio: 26-10-2005, 11:26

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
Torna Su