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
grazie anticipatamente
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);
[COLOR=#ff0000]/* qui penso dovrebbe andare la funzione che prenda in input la "i" e la inserisca nella seconda lista */[/COLOR]
cont++;
}
}
if(cont==0){
printf("Il numero %d e' primo.\n",l->inf);
}
l=l->next;
}
}
grazie anticipatamente