|
Titlul: Eliminare elemente duplicat Scris de: corina elena din Decembrie 08, 2012, 18:34:03 Cum se elimina elementele duplicat dintr-un vector de caractere?
De exemplu, avem vectorul {b,a,n,a,n,a}. Cum ar trebui procedat ca sa ramana {b,a,n} ? Titlul: Răspuns: Eliminare elemente duplicat Scris de: George Marcus din Decembrie 08, 2012, 18:44:02 Cel mai simplu o faci construind un alt vector in care elementele sa fie unice. Faci asta parcurgand fiecare caracter din vectorul initial si verifici daca ai mai vizitat caracterul respectiv. Daca nu, il bagi in vectorul rezultat.
Titlul: Răspuns: Eliminare elemente duplicat Scris de: corina elena din Decembrie 08, 2012, 18:56:07 Problema e putin mai complexa. Am 3 stringuri, "apple","banana" si "lemon", pe care le-am bagat in stringul M1. Trebuie sa extrag literele distincte(char-uri), astfel incat sa imi ramana : a,p,l,e,b,n,m,o.
Titlul: Răspuns: Eliminare elemente duplicat Scris de: Simoiu Robert din Decembrie 08, 2012, 21:20:47 Cea mai usoara varianta e cu headerul algorithm din C++, adica cu string din STL. Astfel, retii in stringul a stringul tau, il sortezi (cu functia sort din STL), si apoi folosesti unique (tot din STL), care iti pune literele "unice" (care apar o singura data) in prima parte a stringului, si apoi cu functia resize (a stringului) retii doar partea importanta.
Cod: int main (void) {Titlul: Răspuns: Eliminare elemente duplicat Scris de: corina elena din Decembrie 08, 2012, 21:45:07 Altfel nu se poate?
Titlul: Răspuns: Eliminare elemente duplicat Scris de: George Marcus din Decembrie 08, 2012, 21:48:35 Cam la asa ceva ma gandeam.
Cod: int k = 0; Titlul: Răspuns: Eliminare elemente duplicat Scris de: Simoiu Robert din Decembrie 08, 2012, 22:22:07 Cel mai simplu o faci construind un alt vector in care elementele sa fie unice. Faci asta parcurgand fiecare caracter din vectorul initial si verifici daca ai mai vizitat caracterul respectiv. Daca nu, il bagi in vectorul rezultat. Ti-ai spus clar George aici, e cea mai usoara varianta. O schita ar fi :Cod: for (int i = 1; i <= N; ++i) Titlul: Răspuns: Eliminare elemente duplicat Scris de: corina elena din Decembrie 08, 2012, 22:47:32 Pare logic si ar fi tare frumos daca nu s-ar bloca (not responding)
Titlul: Răspuns: Eliminare elemente duplicat Scris de: Simoiu Robert din Decembrie 08, 2012, 22:54:19 Da-mi programul.
Titlul: Răspuns: Eliminare elemente duplicat Scris de: corina elena din Decembrie 08, 2012, 22:59:01 Bun, in principiu merge, atata ca le si ordoneaza alfabetic si nu ar trebui.
Titlul: Răspuns: Eliminare elemente duplicat Scris de: Simoiu Robert din Decembrie 08, 2012, 23:01:32 Atunci fa asa :
Cod: for (int i = 1; i <= N; ++i) Titlul: Răspuns: Eliminare elemente duplicat Scris de: corina elena din Decembrie 08, 2012, 23:02:55 Am folosit metoda cealalta, cea cu k, si a mers. Multumesc mult tuturor.
Titlul: Răspuns: Eliminare elemente duplicat Scris de: Simoiu Robert din Decembrie 08, 2012, 23:05:51 Ok, uite mai simplu decat atat :
Cod: # include <cstdio> Titlul: Răspuns: Eliminare elemente duplicat Scris de: corina elena din Decembrie 08, 2012, 23:13:54 Am sesizat pe unde s-au strecurat bug-urile cand am aplicat metoda asta. Bune amandoua. Multumesc
|