28/07/12 8:23
torn24
ciao , ho letto la discussione precedente che ti hanno chiuso ,
la risposta alla domanda :
"è possibile sostituire un elemento di un array di caratteri, con una serie di caratteri ? "
La risposta è NO ! un array di char , può contenere per ogni indice solo un
char , un carattere .
da qui , ti hanno proposto di sostituire l'array di char , con una matrice di char
che può contenere per ogni indice , una serie di caratteri , ma anche una stringa formata da un singolo carattere .
per modificare gli elementi della matrice , dovrai usare funzioni stringa come
strcpy();
la risposta alla domanda :
"è possibile sostituire un elemento di un array di caratteri, con una serie di caratteri ? "
La risposta è NO ! un array di char , può contenere per ogni indice solo un
char , un carattere .
da qui , ti hanno proposto di sostituire l'array di char , con una matrice di char
che può contenere per ogni indice , una serie di caratteri , ma anche una stringa formata da un singolo carattere .
per modificare gli elementi della matrice , dovrai usare funzioni stringa come
strcpy();
aaa
28/07/12 8:34
Umberto
Nel post di prima ti stavo spiegando questo ma ti spiegavo anche come mantenere il pezzo prima
aaa
29/07/12 19:58
Dice
Vi potrà sembrare veramente stupido, ma...
... io veramente non ho ben capito cosa mi volete dire;
mi avete consigliato di usare le funzione per copiare e concatenare le stringhe, però non posso agire in quel modo, perchè nel programma che devo fare non posso sapere a priore dove si trovi il carattere da sostituire.
Come potrei agire in altro modo ?
... io veramente non ho ben capito cosa mi volete dire;
mi avete consigliato di usare le funzione per copiare e concatenare le stringhe, però non posso agire in quel modo, perchè nel programma che devo fare non posso sapere a priore dove si trovi il carattere da sostituire.
Come potrei agire in altro modo ?
aaa
29/07/12 23:52
Dice
Vuol dire che io non posso dirli direttamente: copia i primi tot caratteri qui, e concatena tot caratteri qua;
allora, il fatto è questo: io sto cercando di fare l'algoritmo di skolemizzazione (se non sapete qual è, guardate su wikipedia, che è fatto molto bene, ma ricordatevi che dei 4 punti che ci sono io devo fare solo il punto 3 e il punto 4).
Fino a pochi giorni fa, riuscivo ad andare avanti con il mio progetto, ma adesso sono arrivato ad un punto ceco... ho il blocco dello scrittore
io sono riuscito a fare il caso in cui un quantificatore esistenziale preceda un quantificatore universale, e fin qui non ho problemi, ho gia fatto tutto.
Il problemo c'è l'ho quando un quantificatore universale precede un quantificatore esistenziale, perchè in questo caso devo andare a sostituire tutte le occorrenze di un certo carattere con la stringa f(x) (dentro alle parentesi ci potrebbero essere anche due variabili).
Io avevo pensato e sono mezzo riuscito a farlo, con una serie di istruzioni del tipo: v[i+1] = '('; v[i+2] = 'nuovavariabile'; v[i+3]= ')'
Teoricamente funziona, però solo nel caso la variabile che devo sostituire sia l'ultima
in caso contrario, mi stampa si il vettore, ma perdendo dei pezzi.
Come potrei risolvere ? vi chiedo adesso
allora, il fatto è questo: io sto cercando di fare l'algoritmo di skolemizzazione (se non sapete qual è, guardate su wikipedia, che è fatto molto bene, ma ricordatevi che dei 4 punti che ci sono io devo fare solo il punto 3 e il punto 4).
Fino a pochi giorni fa, riuscivo ad andare avanti con il mio progetto, ma adesso sono arrivato ad un punto ceco... ho il blocco dello scrittore
io sono riuscito a fare il caso in cui un quantificatore esistenziale preceda un quantificatore universale, e fin qui non ho problemi, ho gia fatto tutto.
Il problemo c'è l'ho quando un quantificatore universale precede un quantificatore esistenziale, perchè in questo caso devo andare a sostituire tutte le occorrenze di un certo carattere con la stringa f(x) (dentro alle parentesi ci potrebbero essere anche due variabili).
Io avevo pensato e sono mezzo riuscito a farlo, con una serie di istruzioni del tipo: v[i+1] = '('; v[i+2] = 'nuovavariabile'; v[i+3]= ')'
Teoricamente funziona, però solo nel caso la variabile che devo sostituire sia l'ultima
in caso contrario, mi stampa si il vettore, ma perdendo dei pezzi.
Come potrei risolvere ? vi chiedo adesso
aaa
30/07/12 7:36
torn24
Ciao , ho visto l'algoritmo e non lo capito , mi sembra anche un po complicato
comunque se il tuo scopo , è inserire una particolare stringa in una posizione
di un array , la soluzione è sempre di usare array multidimensionali di char
l'uso per i singoli caratteri è un po fastidioso , rispetto ad un normale array di
char , ma ti permette di fare quello che chiedi .
ti posto un esempio di uso matrice con singoli caratteri e con stringhe
se lo guardi un po non è complicatissimo il loro uso
comunque se il tuo scopo , è inserire una particolare stringa in una posizione
di un array , la soluzione è sempre di usare array multidimensionali di char
l'uso per i singoli caratteri è un po fastidioso , rispetto ad un normale array di
char , ma ti permette di fare quello che chiedi .
ti posto un esempio di uso matrice con singoli caratteri e con stringhe
se lo guardi un po non è complicatissimo il loro uso
#include <stdio.h> #include <stdlib.h> #define numero_stringhe 100 int main(int argc, char *argv[]) { int i,j; char stringa[100]; char matrix[numero_stringhe][20]; //creo posto per 100 stringhe da 20 caratteri //chiedo in ingresso una stringa puts("inserisci al massimo 100 caratteri"); gets(stringa); //con l'uso di strncpy divido la stinga // in stringhe di un carattere // e le inserisco in matrix for(i=0;stringa[i]!=0;i++) { strncpy(matrix[i],stringa+i,1); matrix[i][1]=0; } for(j=0;j<i;j++) printf("%s\n",matrix[j]);//stampo la matrice //se la stringa 2 è uguale a c // la sostituisco con la stringa f(x) if(strcmp(matrix[2],"c")==0) { strcpy( matrix[2],"f(x)");//sostituisco un "carattere" con una stringa for(i=0;i<5;i++) //stampo la matrice printf("%s\n",matrix[i]); } system("PAUSE"); return 0; }
aaa