Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - sostituzione elementi di un array
Forum - C/C++ - sostituzione elementi di un array

Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 0:01
Sabato, 28/07/2012
Volevo chiedervi aiuto per un problema: devo sostituire un elemento di un array con più caratteri.
Vi faccio un esempio:

array originale:  exoyezP(x, y, z)

array modificato: exoyezP(x, y, f(y))

Non mi fate altri esempi diversi, concentriamoci solo su un esempio se possibile, senno si crea troppa confusione secondo me.

Come potrei fare ?

PM Quote
Avatar
torn24 (Normal User)
Pro


Messaggi: 156
Iscritto: 04/01/2008

Segnala al moderatore
Postato alle 10:23
Sabato, 28/07/2012
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();


PM Quote
Avatar
Umberto (Member)
Pro


Messaggi: 156
Iscritto: 27/09/2011

Segnala al moderatore
Postato alle 10:34
Sabato, 28/07/2012
Nel post di prima ti stavo spiegando questo ma ti spiegavo anche come mantenere il pezzo prima

PM Quote
Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 21:58
Domenica, 29/07/2012
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 ?

PM Quote
Avatar
Umberto (Member)
Pro


Messaggi: 156
Iscritto: 27/09/2011

Segnala al moderatore
Postato alle 0:21
Lunedì, 30/07/2012
in che senso non puoi sapere a priori ??

PM Quote
Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 1:52
Lunedì, 30/07/2012
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

PM Quote
Avatar
torn24 (Normal User)
Pro


Messaggi: 156
Iscritto: 04/01/2008

Segnala al moderatore
Postato alle 9:36
Lunedì, 30/07/2012
Ciao , ho visto l'algoritmo e non lo capito , mi sembra anche un po complicato :asd:
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 ;)


Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define numero_stringhe 100
  4. int main(int argc, char *argv[])
  5. {
  6.   int i,j;
  7.   char stringa[100];
  8.   char matrix[numero_stringhe][20];
  9. //creo posto per 100 stringhe da 20 caratteri
  10.  
  11.  
  12.   //chiedo in ingresso una stringa
  13.   puts("inserisci al massimo 100 caratteri");
  14.   gets(stringa);
  15.   //con l'uso di strncpy divido la stinga
  16.   // in stringhe di un carattere
  17.   // e le inserisco in matrix
  18.   for(i=0;stringa[i]!=0;i++)
  19.   {
  20.       strncpy(matrix[i],stringa+i,1);
  21.       matrix[i][1]=0;
  22.       }
  23.  
  24.     for(j=0;j<i;j++)      
  25.         printf("%s\n",matrix[j]);//stampo la matrice
  26.        
  27.   //se la stringa 2 è uguale a c
  28.   // la sostituisco con la stringa f(x)      
  29.    if(strcmp(matrix[2],"c")==0)
  30.    {
  31.          strcpy( matrix[2],"f(x)");//sostituisco un "carattere" con una stringa
  32.          
  33.          for(i=0;i<5;i++)     //stampo la matrice    
  34.              printf("%s\n",matrix[i]);
  35.     }      
  36.   system("PAUSE");     
  37.   return 0;
  38. }


PM Quote