Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ho un semplice file txt contenente solo una riga del tipo:
1,1,2,3,4,4,4,5,6,4,7,1,8,9,9,10
la riga presenta delle cifre che si ripetono più volte...
io dovrei ottenere con cod adatto una riga "pulita" contenente una stringa di numeri intervallati da virgola presenti ognuno una sola volta del tipo seguendo l'esempio:
1,2,3,4,5,6,7,8,9,10
Grazie a tutti/e anticipate e complimenti per il forum e sito
EDIT by HeDo: non server specificare C++ nel titolo... siamo nella sezione C++!
Ultima modifica effettuata da HeDo il 01/09/2010 alle 22:42
int dati[64]={1,2,3,2,4,4,7,8,6,6,2,1,4,6,7,8,3,6,2,1,4},out[64]={-1};
int main(){
int i/*contatore per dati[]*/,
j/*contatore per out[]*/,
k;
bool y;/*variabile booleana*/
for(i=0, j=0; dati[i]!='\0'; i++){//scorri il vettore dati finchè raggiungi la fine
for(k=0, y=true; out[k]!='\0'; k++){//scorri out[] finchè raggiungi la fine
if(dati[i]== out[k]){
y =false;//se trovi anche solo un numero uguale allora y=false ed esci subito dal for
break;
}
};
if(y==true){//y==true significa che tutti i numeri in out[] sono diversi da quelli in dati[]
out[j++]= dati[i];//salvalo in memoria
}
};
/*ciclo di output*/
for(i=0; out[i]!='\0'; i++){
printf("%d",out[i]);
if(out[i+1]!='\0')printf(",");
};
printf("\n");
system("pause");
return0;
}
Questo algoritmo funziona, però ha già i dati in memoria, sta a te implementare del codice per ricevere i dati dal file, non so se usi lo fscanf(ptr,"%d,",&dati) in un for, di solito io mi trovo bene.
Ultima modifica effettuata da Saf il 16/09/2010 alle 2:19
int dati[64]={1,2,3,2,4,4,7,8,6,6,2,1,4,6,7,8,3,6,2,1,4},out[64]={-1};
int main(){
int i/*contatore per dati[]*/,
j/*contatore per out[]*/,
k;
bool y;/*variabile booleana*/
for(i=0, j=0; dati[i]!='\0'; i++){//scorri il vettore dati finchè raggiungi la fine
for(k=0, y=true; out[k]!='\0'; k++){//scorri out[] finchè raggiungi la fine
if(dati[i]== out[k]){
y =false;//se trovi anche solo un numero uguale allora y=false ed esci subito dal for
break;
}
};
if(y==true){//y==true significa che tutti i numeri in out[] sono diversi da quelli in dati[]
out[j++]= dati[i];//salvalo in memoria
}
};
/*ciclo di output*/
for(i=0; out[i]!='\0'; i++){
printf("%d",out[i]);
if(out[i+1]!='\0')printf(",");
};
printf("\n");
system("pause");
return0;
}
Questo algoritmofunziona, però ha già i dati inmemoria, sta a te implementare del codice per ricevere i dati dal file, non so se usi lo scanf("%d,",&dati) in un for di solito, io mi trovo bene.