Ecco qua:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
/* struttura dati definita per memorizzare le proposizioni
inserite dall'utente e i connettivi logici */
typedef struct elem_form
{
char nome[7];
int prop[3][16];
} elem_form_t;
elem_form_t acquisisci_formula();
int valida_formula();
void valori_formula(elem_form_t);
int main() {
elem_form_t prima_formula,
seconda_formula;
printf("***************************************************\n");
printf("Programma che acquisisce due proposizioni logiche e \nstabilisce se esse sono equivalenti\n");
printf ("-Utilizza le lettere minuscole dell'alfabeto come proposizioni\n\n");
printf ("-Se desideri anteporre il connettivo logico di negazione\n utilizza le lettere MAIUSCOLE\n\n");
printf("Inserisci:\n");
printf ("\t1 per il connettivo logico di congiunzione\n\n");
printf ("\t2 per il connettivo logico di disgiunzione\n\n");
printf ("\t3 per il connettivo logico di implicazione\n\n");
printf ("\t4 per il connettivo logico di doppia implicazione\n\n");
printf ("Esempio di formula ben formata: a2B4c\n\n");
printf("Inserire la prima proposizione logica: ");
prima_formula = acquisisci_formula();
printf("Inserire la seconda proposizione logica: ");
seconda_formula = acquisisci_formula();
valori_formula(prima_formula); /* <----------------- chiamata alla v
printf("/%d/", prima_formula.prop[1][3]);
return 0;
}
void valori_formula(elem_form_t formula){
int i; /* variabile contatore */
int modulo, cont_prop, risultato = 0, j, k;
for (i = 0, modulo = 2, cont_prop = 0; i <= len_string; i = i + 2, modulo = 2 * modulo, cont_prop++){
for (j = 0; j < 16; j++){
risultato = j % modulo;
if (i == 0){
if (risultato == 0){
k = 0;
formula.prop[cont_prop][j] = 0;
}
else if (risultato == 1){
k = 1;
formula.prop[cont_prop][j] = 1;
}
}
else if (i == 2){
if (risultato < 2){
k = 0;
formula.prop[cont_prop][j] = 0;
}
else if (risultato >= 2){
k = 1;
formula.prop[cont_prop][j] = 1;
}
}
else if (i == 4){
if (risultato < 4){
k = 0;
formula.prop[cont_prop][j] = 0;
}
else if (risultato > 2){
k = 1;
formula.prop[cont_prop][j] = 1;
}
}
else if (i == 6){
if (risultato < 8){
k = 0;
formula.prop[cont_prop][j] = 0;
}
else if (risultato > 4){
k = 1;
formula.prop[cont_prop][j] = 1;
}
}
}
}
printf("-%d-", formula.prop[1][3]);
}
Non è tutto il codice del sorgente del programma, ho inserito l'essenziale per chiarezza, comunque la funzione chiamata è "valori_formula", mentre la funzione chiamante è la funzione "main". (noto che i