Salve a tutti, ho un problema urgente che non riesco a risolvere..
Ho una funzione nel main che restituisce un array contenente la formula..
La funzione per ottenere la formula è questa:
codice:
/* Definizione della funzione acquisisci_formula_logica_predicati */
char* acquisisci_formula_logica_predicati(void)
{
char *array_momentaneo,
*array_momentaneo2, /* Array momentaneo formula */
*formula,
carattere_acquisito; /* Variabile formula */
int j = 0, /* Indice array momentaneo */
i = 0,
k = 0,
max = 1,
l = 1;
/* Acquisizione formula */
/* Allocazione memoria */
formula = (char *) calloc(max, sizeof (char));
/* Digitazione formula */
printf("\nDigitare la formula:\n\n\t");
i=0;
/* Acquisizione formula */
while ((carattere_acquisito = getchar()) != '\n')
{
if ((i % max) == 0)
formula = (char*) realloc(formula,((l += max)*sizeof(char)));
formula[i]= carattere_acquisito;
i++;
}
/* Assegnamento terminazione */
formula = (char*) realloc(formula,((l += max)*sizeof(char)));
formula[i] = '\0';
printf("\n");
l=1;
max=1;
i=0;
/* Allocazione memoria */
array_momentaneo = (char *) calloc(max, sizeof (char));
/* Elisione spazi e tabulazioni */
while(formula[i] != '\0')
{
if ((formula[i] != ' ') && (formula[i] != '\t'))
{
/* Memorizzazione formula */
array_momentaneo = (char *) realloc(array_momentaneo, ((l += max)*sizeof(char)));
array_momentaneo[j] = formula[i];
j++;
i++;
}
else i++;
}
array_momentaneo = (char *) realloc(array_momentaneo, ((l += max)*sizeof(char)));
array_momentaneo[j] = '\0';
i = 0;
j = 0;
max = 1;
l = 1;
k = 0;
controlli_not(array_momentaneo,formula);
/* Allocazione memoria */
array_momentaneo2 = (char *)calloc(max, sizeof (char));
/* Elisioni not */
while(array_momentaneo[j] != '\0')
{
if (array_momentaneo[j] != '1')
{
/* Memorizzazione formula */
array_momentaneo2 = (char*) realloc(array_momentaneo2,((l += max)*sizeof(char)));
array_momentaneo2[k] = array_momentaneo[j];
k++;
j++;
}
else j++;
}
array_momentaneo2 = (char*) realloc(array_momentaneo2,((l += max)*sizeof(char)));
array_momentaneo2[k] = '\0';
array_momentaneo[0] = '\0';
free(formula);
formula = (char*) calloc((l += max),sizeof(char));
strcpy(formula, array_momentaneo2);
array_momentaneo2[0] = '\0';
/* Inserimento formula nel array principale */
free(array_momentaneo2);
i = 0;
j = 0;
k = 0;
max = 1;
l = 1;
controlli(formula);
return formula;
}
Gli errori che trovo sono questi:
se inserisco una formula sbagliata ad esempio lunga 4 poi una lunga 10 non me la prende o mi da un errore di memoria...
Poi alcune volte se la prima volta metto una formula errata e la seconda giusta questa non mi ritorna al main...
Durante l'acquisizione della formula ci sono due controlli:
i primi controlli not che se trovo errore mi riparte questa funzione e prima di ripartire ho messo un free(formula)
Poi i controlli alla fine che se trova errore fa la stessa cosa...
Come posso fare????