Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Eliminare doppioni o multipli da una stringa contenuta in un file txt...
Forum - C/C++ - Eliminare doppioni o multipli da una stringa contenuta in un file txt...

Avatar
tommy2010 (Normal User)
Newbie


Messaggi: 2
Iscritto: 01/09/2010

Segnala al moderatore
Postato alle 19:35
Mercoledì, 01/09/2010
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 :k:

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
PM
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Up
1
Down
V
Segnala al moderatore
Postato alle 20:18
Mercoledì, 01/09/2010
a parte il titolo errato(siamo nella sezione C++, non ha senso aggiungerlo anche tra parentesi)
di cosa hai bisogno?

Hai scritto qualcosa? Hai qualche idea?

Ti informo che se vuoi codice pronto hai scelto il posto sbagliato...qui non scriviamo programmi su richiesta.

PM
Avatar
giuseppe93 (Ex-Member)
Pro


Messaggi: 166
Iscritto: 02/08/2009

Up
1
Down
V
Segnala al moderatore
Postato alle 23:15
Mercoledì, 01/09/2010
quoto lorenzo!:yup:
almeno hai pensato un minimo all'algoritmo?

PM
Avatar
Saf (Normal User)
Newbie


Messaggi: 13
Iscritto: 13/07/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 2:18
Giovedì, 16/09/2010
:idea:
Codice sorgente - presumibilmente C++

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. 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};
  5.  
  6.  
  7. int main(){
  8.    int i/*contatore per dati[]*/,
  9.        j/*contatore per out[]*/,
  10.        k;
  11.    bool y; /*variabile booleana*/
  12.    
  13.    for (i=0, j=0; dati[i] != '\0'; i++){ //scorri il vettore dati finchè raggiungi la fine
  14.       for(k=0, y=true; out[k] != '\0'; k++){ //scorri out[] finchè raggiungi la fine
  15.          if (dati[i] == out[k]){
  16.             y = false;//se trovi anche solo un numero uguale allora y=false ed esci subito dal for
  17.             break;
  18.          }
  19.       };
  20.       if (y==true) {//y==true significa che tutti i numeri in out[] sono diversi da quelli in dati[]
  21.          out[j++] = dati[i];         //salvalo in memoria  
  22.       }
  23.    };
  24.    
  25.    /*ciclo di output*/
  26.    for (i=0; out[i]!='\0'; i++){
  27.       printf("%d",out[i]);
  28.       if (out[i+1]!='\0') printf(",");
  29.    };
  30.    
  31.    printf("\n");
  32.    system("pause");
  33.    return 0;    
  34. }



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
PM
Avatar
Saf (Normal User)
Newbie


Messaggi: 13
Iscritto: 13/07/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 2:21
Giovedì, 16/09/2010
:idea:
Codice sorgente - presumibilmente C++

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. 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};
  5.  
  6.  
  7. int main(){
  8.    int i/*contatore per dati[]*/,
  9.        j/*contatore per out[]*/,
  10.        k;
  11.    bool y; /*variabile booleana*/
  12.    
  13.    for (i=0, j=0; dati[i] != '\0'; i++){ //scorri il vettore dati finchè raggiungi la fine
  14.       for(k=0, y=true; out[k] != '\0'; k++){ //scorri out[] finchè raggiungi la fine
  15.          if (dati[i] == out[k]){
  16.             y = false;//se trovi anche solo un numero uguale allora y=false ed esci subito dal for
  17.             break;
  18.          }
  19.       };
  20.       if (y==true) {//y==true significa che tutti i numeri in out[] sono diversi da quelli in dati[]
  21.          out[j++] = dati[i];         //salvalo in memoria  
  22.       }
  23.    };
  24.    
  25.    /*ciclo di output*/
  26.    for (i=0; out[i]!='\0'; i++){
  27.       printf("%d",out[i]);
  28.       if (out[i+1]!='\0') printf(",");
  29.    };
  30.    
  31.    printf("\n");
  32.    system("pause");
  33.    return 0;    
  34. }



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.

PM
Avatar
tommy2010 (Normal User)
Newbie


Messaggi: 2
Iscritto: 01/09/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 19:54
Giovedì, 16/09/2010
grazie mille saf :)

PM