Dice (Normal User)
Expert
Messaggi: 238
Iscritto: 26/11/2011
|
ho bisogno di aiuto per un piccolo problema:
voglio eliminare alcune parti di un array, è possibile ?
Vi faccio un esempio:
vettore iniziale: exoyezP(x,y,z)
io voglio eliminare solo la parte " ex "
ottenendo: oyezP(x,y,z)
Come posso fare ? Devo per caso usare un vettore temporaneo ? Se si, come devo fare ?
Grazie mille in anticipo
|
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Devi solo eliminare i primi due caratteri oppure cercare all'interno della stringa per la presenza di "ex"?
Per i primi due caratteri potresti semplicemente avanzare il puntatore di due...
Codice sorgente - presumibilmente C/C++ |
char *str = "exoyezP(x,y,z)";
char *truncated = (str + 2); // "oyezP(x,y,z)"
|
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6380
Iscritto: 03/01/2010
|
Ma quella è una stringa? O è proprio un array ?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Dice (Normal User)
Expert
Messaggi: 238
Iscritto: 26/11/2011
|
E' una stringa.
No, non devo eliminare solo i primi due; quello che voglio fare io è che devo cercare certe parti di essa ed eliminarle; esempio:
exoyezP(x, y, z)
io devo fare in modo di eliminare 2 pezzi della stringa:
1) "ex"
2) "ez"
Questo è solo un esempio, ma potrebbero capitare anche in altre posizioni.
Come posso fare ?
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6380
Iscritto: 03/01/2010
|
Allora il titolo dovrebbe essere "eliminare parti di una stringa" ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Dice (Normal User)
Expert
Messaggi: 238
Iscritto: 26/11/2011
|
sorry
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6380
Iscritto: 03/01/2010
|
Esponi tutte le specifiche complete del problema, per non perdere tempo a modificare quello che già si è fatto ...
Hai una stringa ... di quale lunghezza massima? Quante parti devi eliminare? La stringa originale deve essere modificata o no? ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Dice (Normal User)
Expert
Messaggi: 238
Iscritto: 26/11/2011
|
Quello che devo fare io è applicare l'algoritmo di skolemizzazione.
Devo acquisire una formula in Forma Normale Prenessa (FNP), e trasformarla in una formula in Forma Normale di Skolem (FNS).
Vi riporto direttamente tutto l'algoritmo:
La FNP è una formula in cui i quantificatori compaiono tutti nel prefisso (le FNP e le FNS sono formate da 2 parti: prefisso e matrice)
Se Q1 (primo quantificatore) è ∀ si passa direttamente al punto successivo.
Se Q1 è ∃ allora si cancella ∃x1 e si sostituisce ad ogni occorrenza di x1 in α una stessa costante che non compaia già in α. Esempio: ∃x∀y(A(a, x) ∧ B(b, x,y)) diventa ∀y(A(a, c) ∧ B(b, c,y))
Come si può facilmente notare si è tolto il quantificatore ∃ e si è sostituita la variabile x con la costante c.
La scelta della costante c non è casuale visto che "a" e "b" erano già utilizzate.
Prendo in rassegna Qn
Se Qn è un ∀ si riparte da questo punto con Qn+1.
Se Qn è ∃ allora i casi possono essere i seguenti:
Se il quantificatore Qn-1 era di tipo ∃ ovvero ∃xn-1∃xn allora si ripete il punto precedente con ∃xn sostituendo però ad ogni occorrenza della variabile xn un funtore che prenda in rassegna tutte le variabili precedentemente utilizzate dai quantificatori ∀.
Come si può notare finché non appaiono quantificatori di tipo ∀ si sostituiscono alle variabili xn delle semplici costanti.
Se il quantificatore Qn-1 è di tipo ∀ ovvero ∀xn-1∃xn si cancella ∃xn e si sostituisce ogni occorrenza di xn in α con un funtore f() che prenda in rassegna le variabili utilizzate dai quantificatori ∀ che lo precedono. Se fosse ∀y∀z∃u (α dovrei in primis cancellare ∃u poi sostituire nella frase α la variabile u con il funtore f(y, z) (il funtore non deve esistere già).
Esempio: ∀x∃y(A(x, f(x), y) ∧ C(y)) diventa ∀x(A(x, f(x), g(x)) ∧ C(g(x)))
Come si può facilmente notare si è tolto il quantificatore ∃y e si è sostituita la variabile y con il funtore g(x).
La scelta della variabile x non è casuale visto che x1 in questo caso è proprio x.
Gia vi dico che io l'algoritmo l'ho capito e lo saprei applicare (sfortunatamente solo su carta ^_^)
Il mio problema, come vi avevo detto è che ci sono delle parti della stringa che devo eliminare, ma non li si conosce a priori: come potrei fare ?
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6380
Iscritto: 03/01/2010
|
Ma lo devi fare proprio in C o anche in C++ ?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|