ANDPRI ha scritto:
Crei un vettore con 256 elementi, tanti quanti sono i caratteri totali (se sei sicuro di usare solo lettere nella stringa puoi anche metterne di meno, in base a quali caratteri puoi mettere nella stringa). Ora ogni posizione di quell'array rappresenta un carattere che potrebbe stare nella tua stringa. Inizi a leggere la stringa carattere per carattere e, utilizzando il carattere come intero, lo usi come indice nell'array di numeri (inizializzato con tutti 0 come diceva @migliorabile). Ogni volta che trovi un carattere il cui indice nell'array di numeri è ancora 0, lo copi nella stringa che dovrà risultare (l'altro array di cui parlava miglirabile), e trasformi quell'indirizzo dell'array di numeri in 1, cosï che la prossima volta che trovi lo stesso carattere, ti risulterà non 0 quindi non da mettere nella stringa risultato
ah ok non ci avevo pensato a questa cosa,ora provo
quello che non mi è chiario è "utilizzando il carattere come intero "(ti riferisci al codice ascii? per esempio il carattere n corrisponde al valore 110,giusto?
funziona con la frase "ciao mezzo",ma con altre frasi tipo "nel mezzo" non va cosa sbaglio?
edit: funziona con tutte frasi in cui i caratteri da eliminare siano presenti esclusivamente nell'ultima parola
se per esempio invece,il carattere da eliminare si trova già in una parola precedente,non va,e al posto di questi caratteri mi stampa degli spazi.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
char frase[100]="ciao mezzo";
char nuovastringa[100];
int vet[256];
int i;
int j;
int alfa; //dim prima stringa
int beta=0;//dim nuova stringa
alfa=strlen(frase);
printf("%d\n",alfa);
for(i=0;i<256;i++){
vet[i]=0;
}
for(i=0;i<alfa;i++){
for(j=0;j<256;j++)
if(frase[i]+'0'==j &vet[j]==0 ){
vet[j]=1;
nuovastringa[i]=frase[i];
beta++;
}
}
printf("%d\n",beta);
for(i=0;i<beta;i++){
printf("%c",nuovastringa[i]);
}
}