Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C] problema lista

    ho una strottura di questo tipo:

    typedef struct lemma_cell{
    struct lemma_cell *next;
    char *lemma;
    int (*rows)[2];
    } lemma_cell;
    Dopo aver creato un nuova cella per la lista:

    struct lemma_cell *new_cell;

    Vorrei aggiungerci i dati...

    new_cell->lemma = lemma1;

    funziona ma per assegnare a rows[0] e rows[1] due interi non ci riesco...

    cioè: new_cell->rows[1] = n;

    non funziona!!

  2. #2
    Utente di HTML.it L'avatar di torejx
    Registrato dal
    May 2005
    Messaggi
    301

    Re: [C] problema lista

    Originariamente inviato da hurricane86
    ho una strottura di questo tipo:



    Dopo aver creato un nuova cella per la lista:

    struct lemma_cell *new_cell;

    Vorrei aggiungerci i dati...

    new_cell->lemma = lemma1;

    funziona ma per assegnare a rows[0] e rows[1] due interi non ci riesco...

    cioè: new_cell->rows[1] = n;

    non funziona!!
    se nella struttura metti

    int rows[2];

    ???
    io: "cosa vorresti fare da grande?"
    bambino di sei anni: "il coglione"
    io: "come mai?"
    bambino di sei anni: "perchè ogni volta che passa uno con una bella auto papà dice <<guarda quel coglione che bella macchina che c'ha>>"

  3. #3
    in realtà ci ho pensato ma il progetto dell'uni chiede quello che ti ho fatto vedere...certo se non ci sono differenze...

    EDIT: in quell'array di dimensione variabile devo memorizzare due differenti valori!

  4. #4
    Utente di HTML.it L'avatar di torejx
    Registrato dal
    May 2005
    Messaggi
    301
    Originariamente inviato da hurricane86
    EDIT: in quell'array di dimensione variabile devo memorizzare due differenti valori!
    ehm... una cosa è l'array di dimensioni variabili (che poi l'array ha una dimensione fissa e quindi devi risolvere con una lista) e una cosa è dire che devi memorizzare 2 differenti valori... perchè nell'ultimo caso è necessario un array del tipo int nome_array[2]...

    o forse sono io che non ho capito niente
    io: "cosa vorresti fare da grande?"
    bambino di sei anni: "il coglione"
    io: "come mai?"
    bambino di sei anni: "perchè ogni volta che passa uno con una bella auto papà dice <<guarda quel coglione che bella macchina che c'ha>>"

  5. #5
    ciao grazie per le risp, cmq ho risolto quel problema mettendo due campi come hai detto te ma mi sono inbattuto in un'altro probelma:

    Codice PHP:
    /* Metodo che preleva dal file in input tutti i lemmi e li stampa a video*/
    struct lemma_cell *read_file(FILE *streamlemma_cell *lista){
        
    char ch;
        
    char *lemma NULL;
        
    int i=0;
        
    int row=1;
        
    lemma = (char *)malloc(sizeof(char));
        
    printf("I lemmi del file che inserisco nella lista e nel database:\n");
        while((
    ch fgetcstream )) != EOF){
              if((
    ch != ' ')&&(ch != '\n')){
                    
    lemma = (char*)realloc(lemma,(i+1)*sizeof(char));
                    
    lemma[i]=ch;
                    
    i++;
              }else{
                 if(
    ch == '\n'row++;
                 
    lemma[i]='\0';
                 
    lista add(lista,lemma,i,row);
                 
    printf("->%s\n"lemma);
                 
    free(lemma);
                 
    i=0;
              }
        }
        
    /* Ultimo lemma del file che rimane fuori dal ciclo */
        
    lemma[i]='\0';
        
    lista add(lista,lemma,i,row);
        
    printf("->%s\n"lemma);
        return(
    lista);

    questo metodo, passatogli il file mi "estare" ongi lemma e li dovrebbe aggiungere alla mia lista con quasto altro metodo:

    Codice PHP:
    /* Metodo per aggiungere un lemma e le sue statistiche alla lista */
    struct lemma_cell *add(struct lemma_cell *listachar *lemmaint lint row){
         
    struct lemma_cell *new_cell;
         if (
    lista != NULL){
            
    new_cell = (struct lemma_cell *)malloc(sizeof(struct lemma_cell));
            
    new_cell->row row;
            
    new_cell->1;
            
    new_cell->l;
            
    new_cell->lemma lemma;
            
    new_cell->next lista;
         }else{
            
    lista = (struct lemma_cell *)malloc(sizeof(struct lemma_cell));
            
    lista->row row;
            
    lista->1;
            
    lista->l;
            
    lista->lemma lemma;
            
    lista->next NULL;
            
    new_cell lista;
         }
         return(
    new_cell);

    quando vado a controllare la mia lista, tutti i lemmi di ogni cella sono uguali tra loro e più precisamente all'ultimo lemma estratto! cosa sto sbgliando?

    nb questo problema non accade per gli altri campi della lista di tipo int

    grazie

  6. #6
    ho risolto da solo. il problema è che memorizzavo i puntatori e quindi rimaneva sempre il solito:

    ecco il codice aggironato se servisse a qualcuno:

    Codice PHP:
    /* Metodo per aggiungere un lemma e le sue statistiche alla lista */
    struct lemma_cell *add(struct lemma_cell *listachar *lemmaint lint row){
         
    struct lemma_cell *new_cell;
         if (
    lista != NULL){
            
    new_cell = (struct lemma_cell *)malloc(sizeof(struct lemma_cell));
            
    new_cell->row row;
            
    new_cell->1;
            
    new_cell->l;
            
    new_cell->lemma = (char *)malloc(l*sizeof(char));
            
    strcpy(new_cell->lemmalemma);
            
    new_cell->next lista;
         }else{
            
    lista = (struct lemma_cell *)malloc(sizeof(struct lemma_cell));
            
    lista->row row;
            
    lista->1;
            
    lista->l;
            
    lista->lemma = (char *)malloc(l*sizeof(char));
            
    strcpy(lista->lemmalemma);
            
    lista->next NULL;
            
    new_cell lista;
         }
         return(
    new_cell);


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.