Ok ora il programma funziona e lo devo riscrivere come una libreria ansi C
quindi vado ad implementare i seguenti file:
progetto.h:
/*intestazione della libreria per le operazioni tra insiemi*/
/*dichiarazione delle fuzioni esportate*/
extern int *acquisizione ();
extern void stampa_insieme (int *);
extern int *unione (int *, int *);
extern int *differenza (int *, int *);
extern int *intersezione (int *, int *);
progetto.c:
#include <stdio.h>
#include <stdlib.h>
int *acquisizione ();
void stampa_insieme (int *);
int *unione (int *, int *);
int *differenza (int *, int *);
int *intersezione (int *, int *);
int *acquisizione ()
{
int a,i,dim;
int *insieme;
a=0;
printf("quanti elementi contiene l'insieme?");
scanf(" %d", &dim);
insieme = (int *)calloc(dim+1, sizeof (int));
insieme[0]=dim;
for(i=1;i<dim+1;i++)
{
printf("Inserisci il valore della %d^ posizione",i);
scanf(" %d", &insieme[i]);
}
return(insieme);
}
void stampa_insieme (int *insieme)
{
int i;
for(i=1;
i<=insieme[0];
i++)
{
printf("%d\n", insieme[i]);
}
}
int *unione (int insieme_1[], int insieme_2[])
{
int j=1,i,k,dim;
int found;
int *risultato;
dim=insieme_1[0]+insieme_2[0]+1;
risultato= (int *)calloc(dim, sizeof (int));
for (i=1;i<=insieme_1[0];i++)
{
found=0;
for (k=1;k<=insieme_2[0];k++)
{
if(insieme_1[i]==insieme_2[k])
{
found=1;
break;
}
}
if (!found)
risultato[j++]=insieme_1[i];
}
for (k=1;k<=insieme_2[0];k++)
risultato[j++]=insieme_2[k];
risultato[0]=j-1;
return (risultato);
}
int *differenza (int insieme_1[], int insieme_2[])
{
int j=1,i,k,dim;
int found;
int *risultato;
dim=insieme_1[0]+insieme_2[0]+1;
risultato= (int *)calloc(dim, sizeof (int));
for (i=1;i<=insieme_1[0];i++)
{
found=0;
for (k=1;k<=insieme_2[0];k++)
{
if(insieme_1[i]==insieme_2[k])
{
found=1;
break;
}
}
if (!found)
risultato[j++]=insieme_1[i];
risultato[0]=j-1;
}
return (risultato);
}
int *intersezione (int insieme_1[], int insieme_2[])
{
int j,k,i,*risultato,dim,flag;
dim=insieme_1[0]+insieme_2[0];
risultato = (int *)calloc(dim, sizeof (int));
j=1;
for (i=1;
i<=insieme_1[0];
i++)
{
flag=0;
for (k=1;
k<=insieme_2[0];
k++)
{
if(insieme_1[i]==insieme_2[k])
{
flag=1;
}
}
if (flag==1)
{
risultato[j++]=insieme_1[i];
}
}
risultato[0]=j-1;
return(risultato);
}
e la main.c:
#include "progetto.h"
#include <stdio.h>
int main (void)
{
char op;
int *insieme_1, *insieme_2,*risultato;
insieme_1=acquisizione();
stampa_insieme(insieme_1);
insieme_2=acquisizione();
printf("Che operazione desideri fare?\n");
scanf(" %c", & op);
switch (op)
{
case 'u':
risultato = unione(insieme_1 ,insieme_2);
stampa_insieme(risultato);
break;
case 'i':
risultato = intersezione(insieme_1, insieme_2);
stampa_insieme(risultato);
break;
case 'd':
risultato = differenza(insieme_1, insieme_2);
stampa_insieme(risultato);
break;
}
free (risultato);
free (insieme_2);
free (insieme_1);
system("PAUSE");
return(0);
}
ma quando compilo la main mi dice che non trova le funzioni, quindi non trova la libreria che ho fatto?perchè come la devo richamare?
ciao grazie