Buon giorno a tutti sto scrivendo un piccolo programma che
1) mi crea una lista di interi presi da input
2) per ogni numero ne stampa il divisore
3) inserisce tutti i divisori in una nuova lista.
il punto 1 e 2 funzionano o meglio sono riuscito a mio modo a farli funzionare...mi manca il punto 3 non riesco ad inserire i divisori nella nuova lista
Codice:#include<stdio.h>#include<stdlib.h> struct list{ int inf; int div; struct list *next; }; struct lista{ int info; struct lista *next; }; struct list *crealista(); void stampa(struct list *l); void primo(struct list *l); void stampar(struct list*); int main(){ struct list *el; int s; printf("--- Creazione lista ---\n"); el=crealista(); primo(el); printf("Che tipo di stampa vuoi adottare (1=ricorsiva, 0=normale). "); scanf("%d",&s); if(s==1){ printf("La lista inserita e': "); stampar(el); } else{ stampa(el); } system("PAUSE"); return 0; } struct list *crealista(){ struct list *p,*punt; int n,i; printf("Quanti elementi vuoi inserire?"); scanf("%d",&n); if(n==0){ p=NULL; } else{ p=(struct list *)malloc(sizeof(struct list)); printf("Inserisci numero: "); scanf("%d",&p->inf); punt=p; for(i=0;i<n-1;i++){ punt->next=(struct list *)malloc(sizeof(struct list)); punt=punt->next; printf("Inserisci numero: "); scanf("%d",&punt->inf); } punt->next=NULL; } return p; } void stampa(struct list *l){ printf("Stampa lista ->\n"); while(l!=NULL){ printf("%d\t",l->inf); l=l->next; } printf("\n"); } void stampar(struct list *l){ if(l!=NULL){ printf("%d ",l->inf); stampar(l->next); } } void primo(struct list *l){ struct list *ln; int i=0; int cont=0; while(l!=NULL){ for(i=(l->inf)-1;i>1;i--){ if(l->inf % i ==0){ printf("Il numero %d e' divisibile per %d . \n",l->inf,i); /* qui penso dovrebbe andare la funzione che prenda in input la "i" e la inserisca nella seconda lista */ cont++; } } if(cont==0){ printf("Il numero %d e' primo.\n",l->inf); } l=l->next; } }
grazie anticipatamente


Software & OS
LinkBack URL
About LinkBacks
Rispondi Citando
