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

    [C] Esercizio LISTE-inserimento n° primi

    Ciao a tutti,
    dovrei creare una funzione che inserisce in una lista (lintA) i numeri primi contenuti in un'altra lista (lintT). Come prototipo della funzione vorrei usare TABR *insNPrimi(TABR *lista). Di seguito la prima parte del programma:
    codice:
    #include<stdio.h> 
    #include<stdlib.h> 
    
    typedef struct nd{ 
      int val; 
      struct nd *next; 
    }TABR; 
    
    TABR *newLista(); 
    TABR *addLista(TABR *lista, int num); 
    void printLista(TABR *lista); 
    
    int main(){ 
      TABR *lintA; 
      TABR *lintT; 
      FILE *fp; 
      int num; 
      lintA=newLista(); 
      lintT=newLista(); 
      fp=fopen("dati.txt", "r"); 
      while(fscanf(fp, "%d", &num)!=EOF){ 
        lintT=addLista(lintT, num); 
      } 
      fclose(fp); 
      printf("\n Lista 'lintT':\n\n"); 
      printLista(lintT); 
      printf("\n\n"); 
      system("PAUSE"); 
      return 0; 
    } 
    
    TABR *newLista(){ 
      return NULL; 
    } 
    
    TABR *addLista(TABR *lista, int num){ 
      TABR *temp; 
      TABR *i; 
      temp=(TABR *)malloc(sizeof(TABR)); 
      if(temp==NULL){ 
        printf("Errore di memoria!\n"); 
        exit(-1); 
      } 
      else{ 
        temp->val=num; 
        temp->next=NULL; 
      } 
      i=lista; 
      if(lista==NULL){ 
        return temp; 
      } 
      else{ 
        while(i->next!=NULL){ 
          i=i->next; 
        } 
        i->next=temp; 
        return lista; 
      } 
    } 
    
    void printLista(TABR *lista){ 
      if(lista==NULL){ 
        printf("Lista vuota!\n"); 
      } 
      else{ 
        while(lista!=NULL){ 
          printf("%4d", lista->val); 
          lista=lista->next; 
        }
      } 
    }
    Qualcuno sa dirmi come posso fare? Grazie mille

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Potresti fare:
    codice:
    TABR *insNPrimi(TABR *lista)
    {
          TABR* lista2;
         lista2 = newLista();
          
           while(lista!=NULL)
            {
               if (Primo(lista->val))
                lista2 = addlista(lista,lista->val);
    
               lista=lista->next;
          }
        return lista2;
                 
    }
    o una cosa del genere

  3. #3
    Perfetto! Aggiungendo la funzione 'primo' il programma funziona correttamente.

    Grazie mille!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Figurati

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.