Grazie mille, adesso ho capito come funzione Robinson;
adesso però ho un piccolo problema: ho fatto un programma che mi acquisisce l'insieme delle clausole, però quando vado a chiedere all'utente quali insiemi di clausole vuole considerare non so come fare; adesso vi faccio vedere quello che ho fatto:
int main (void)
{
char *insieme_clausole; /*vettore contenente la formula inserita*/
int i, /*indice del vettore formula*/
carattere_letto, /*variabile per memorizzare la formula*/
conta_clausole = 0, /*contatore delle clausole*/
numero_clausola; /*numero indivativo delle clausole*/
/*allocazione dinamica*/
insieme_clausole = (char *) malloc(sizeof (char)*100);
/*inserimento insieme di clausole*/
printf("Inserisci la formula:\n\n");
printf("-> ");
/*acquisizione insieme di clausole*/
for(i = 0;
((carattere_letto = getchar()) != '\n');
i++)
insieme_clausole = carattere_letto;
/*inserisco il carattere di terminazione*/
insieme_clausole = '\0';
printf("\n");
/*stampa l'insieme di clausole*/
printf("L'insieme di clausole è: %s\n",
insieme_clausole);
/*contare quante clausole ci sono*/
for(i = 0;
(insieme_clausole != '\0');
i++)
if(insieme_clausole == '}')
conta_clausole++;
printf("Le clausole sono: %d\n",
conta_clausole - 1);
/*adesso devo prendere le clausole considerate*/
printf("Quali clausole vuoi considerare (indicarle con i numeri decimali separati da virgole):\n\n");
printf("-> ");
Per farvi capire meglio vi faccio un esempio di quello che io VORREI CHE FACCIA:
inserisci le clausole: {{p,!q,r},{!p},{q},{!r}}
quali clausole vuoi considerare: 1,2
le clausole considerate sono: {p,!q,r},{!p}
la risolvente è:{!q,r}
Come posso fare per fargli acquisire sole le clausole che mi indica l'utente?
|