ciao ragazzi mi trovo a risolvere un caso interessante ;
ho una stringa di "X" caratteri e devo trovare in essa i caratteri doppi e copiarli singolarmente in un nuovo vettore , in modo da leggere in esso un altra stringa ,
cioè caratteri singoli e carattere di terminazione '\0' alla fine del vettore
codice:/* questo programma deve leggere una stringha , trovare i caratteri che si ripetono almeno due volte e copiarne uno di essi in un altra stringa */ char nome [] = "antonino" ; char doppie [4] ; /* Non so a priori le dimensioni del nuovo vettore char *tempPtr ; char temp ; char *lettera ; int count = 0 ; int i = 0 ; int j = 1 ; lettera = nome ; tempPtr = nome + 1 ; while ( *lettera != '\0' ) { temp = *lettera ; while (*tempPtr != '\0' ) { if (*tempPtr == temp && count < 1 ) { doppie [i] = temp ; i++ ; count++ ; } tempPtr++ ; } count = 0 ; j++ ; if ( j < 8 ) tempPtr = nome + j ; lettera++ ; } printf ("%c" , doppie [0] ) ; printf ("%c\n\n" , doppie [1] ) ; printf ("%c\n\n" , doppie [2] ) ; doppie [3] = '\0' ; printf ("%s" , doppie ) ; system ("PAUSE") ; return 0 ; }
allora il problema è questo ;
1) non so a priori quanti caratteri doppi troverò nella stringa madre, e quindi che dimensioni deve avere il Nuovo vettore
2)la stringa madre deve essere esaminata un carattere alla volta con tutti gli altri caratteri , ma qualora un carattere sia gia stato esaminato non deve essere più preso in considerazione
; se il carattere nome[0] è stato confrontato con i restanti caratteri , il nuovo confronto deve partire da nome[1] e così via ;
mai ripartire dall'inizio , è spreco di risorse
3)il programma deve essere il più performante possibile , quindi meno memoria sprecata ( con variabili temporanee ad es.)
vorreste aiutarmi un po ?
pensavo di usare qualche funzione della libreria string.h , ma non ho trovato ancora nulla di che
grazie