Logo ITP-NEWS
RSS | Contatti | Login|Registrati| Home
giornali
Inserimento di un elemento di un insieme S, che verifica una certa proprietà P, in un secondo insieme T
Di Fusco Francesco :: 2012-06-03
Inserimento di un elemento di un insieme S, che verifica una certa proprietà P, in un secondo insieme T

Per ogni elemento x di S
se x verifica la proprietà P
aggiungi x in T

k=0;
for(i=0; i < n; i++)
{
x=*(S+i);
if ( P(x)==true )
{
k=k+1;
T=insert(x, T, k);
}
}

type *insert(type x, type *T, int dim)
{
T=realloc(T, dim*sizeof(type));
if(T!=NULL)
{
*(T+dim-1)=x;
}
return T;
}


#include
#include
enum boolean {false,true};
enum boolean P_primo(int elemento);
int *inserisci(int x, int *t, int dim);
int main()
{
int *S,*T;
int n,k=0;
int x;
int i;
printf("Inserisci il numero di elementi di S\n");
scanf("%d",&n);
S=malloc(n*sizeof(int));
if(S==NULL)
{
printf("Memoria insufficiente\n");
exit(1);
}
printf("Inserisci gli elementi dell'array\n");
i=0;
while(i {
scanf("%d",S+i);
i=i+1;
}
i=0;
while(i {
x=*(S+i);
if(P_primo(x)==true)
{
k=k+1;
T=inserisci(x,T,k);
}
i=i+1;
}
i=0;
while(i {
printf("%d\t",*(T+i));
i=i+1;
}
return 0;
}
enum boolean P_primo(int elemento)
{
enum boolean ris=false;
int i=2;
int ndiv=0;
while(i {
if(elemento%i==0) ndiv++;
i=i+1;
}
if(ndiv==0) ris=true;
return ris;
}
int *inserisci(int x, int *T, int dim)
{
T=realloc(T,dim*sizeof(int));
if(T!=NULL)
{
*(T+dim-1)=x;
}
return T;
}