PDA

Visualizza la versione completa : [C] Confrontare due stringhe e trovare i caratteri ricorrenti


Andres7X
29-12-2008, 23:41
Esiste una funzione che confronti 2 stringhe (quindi 2 array) e ne trovi i caratteri ricorrenti?
Per esempio: se in un array ho la parola "Ciao" e nell'altra "Salve", la funzione dovrebbe dirmi per esempio che c'è una A in comune.

Nel caso non esista dovrò crearla io... :(

Xaratroom
29-12-2008, 23:52
linguaggio ?

Probabilmente dovrai fartela tu ... Niente di particolarmente difficile

Andres7X
29-12-2008, 23:54
Scusa, è per linguaggio C.

Se devo crearmela io, avevo pensato a questo metodo: creare un ciclo che confronti la prima cella del primo array con tutte le celle del secondo, poi la seconda cella del primo array con tutte le celle del secondo e così via... E se trovo delle occorrenze, allora le stampo.

Può essere buono come metodo?

Xaratroom
29-12-2008, 23:57
Ottimo, butta giù un po' di codice ...

Prova a cambiare il titolo della discussione
da


Confrontare due stringhe e trovare i caratteri ricorrenti?

in


[c] Confrontare due stringhe e trovare i caratteri ricorrenti?

se ti permette di farlo (dovresti modificare il tuo primo post).

Andres7X
30-12-2008, 00:05
Ok fatto :)

Ora provo sul mio compilatore questo metodo e nel caso di problemi ti faccio sapere. Grazie mille!

Xaratroom
30-12-2008, 00:15
Prendi in considerazione che le stringhe potrebbero avere più caratteri uguali.
Es: "pippo", "pluto"
in questo caso, presumo, che la funzione dovrà stampare, una sola volta, che la 'p' è in comune.

Andres7X
30-12-2008, 16:23
Originariamente inviato da Xaratroom
Prendi in considerazione che le stringhe potrebbero avere più caratteri uguali.
Es: "pippo", "pluto"
in questo caso, presumo, che la funzione dovrà stampare, una sola volta, che la 'p' è in comune.
Ora però ho solo un problema: che operatore potrei usare per confrontare le stringhe?

Xaratroom
30-12-2008, 17:13
In c, le stringhe, si confrontano carattere per carattere, utilizzando l'operatore di confronto (ossia ==).

Tuttavia il linguaggio mette a disposizione, nella libreria standard "string.h", alcune funzioni, come la strcmp, che consente di confrontare 2 stringhe ...
Ma non c'è qualcosa che potrebbe risolvere il tuo problema.
http://www.cplusplus.com/reference/clibrary/cstring/

Andres7X
30-12-2008, 17:26
Capito, allora farò così. Grazie ancora xD

Andres7X
30-12-2008, 19:46
Scusate per il flood.

Ho provato a creare tale funzione, ma c'è qualcosa che non funziona. Temo di aver inserito troppi cicli, ma d'altronde volevo trovare un modo per far sì che per esempio il primo carattere della prima stringa si confronti con il primo carattere della seconda, poi il primo della prima con il secondo della seconda (scusate il gioco di parole), e così via.

MAX_NUM_TENTATIVO vale 3, MAX_LETT_TENTATIVO vale 100.



void Controllo()
{
int conf = 0;
int conf2 = 0;
int g, t, conta;

for(g = 0; g < numGiocatori; g++)
{
for(t = 0; t < MAX_NUM_TENTATIVO; t++)
{
while(conf < MAX_LETT_TENTATIVO)
{
while(conf < MAX_LETT_TENTATIVO && conf2 < 7)
{
if(tentativi[g].tent[t].nTent[conf] == parolaMisteriosa[conf2])
{
conta++;
continue;
}
}
if(conf == MAX_LETT_TENTATIVO)
{
conf2++;
continue;
}
conf++;
}
printf("Nella parola misteriosa sono presenti: %d %c", conta, tentativi[g].tent[t].nTent[conf]);
}
}
}


In precedenza avevo definito e dichiarato 2 strutture:


struct numTentativi {
char nTent[MAX_LETT_TENTATIVO];
};
struct numTentativi tent[MAX_NUM_TENTATIVO];

struct numGioc {
struct numTentativi tent[MAX_NUM_TENTATIVO];
};
struct numGioc tentativi[MAX_G];

Loading