Bhe, la soluzione è molto semplice:
- Leggi tutti i valori dal file e li metti in un array;
- Leggi il primo valore dell'array e controlli tutti gli altri valori. Il numero di valori identici che hai trovato li metti in un altro vettore e il
numero che hai letto prima lo salvi in un altro vettore ancora, onde evitare controlli su numeri già controllati.
- Ripeti la cosa fino alla fine dell'array.
Per spiegarmi meglio provo con una spiegazione più dettagliata dell'algoritmo:
FILE1: 10, 11, 10, 10, 11, 6
dichiaro vettore vet[] che contiene il valore di ogni numero letto dal file;
dichiaro vettore occor[] che contiene il numero di corrispondenze trovate;
dichiaro vettore val[] che contiene ogni valore dell'array vet ripetuto una volta;
Leggo tutto il file "FILE1" e metto i valori in vet;
leggo il valore di vet[1] (cioè 10) e controllo tutti gli altri elementi dell'array;
il numero di corrispondenze trovate lo metto in occor[1] (3);
il valore di vet[1] (e cioè 10) lo copio in val[1];
prendo vet[2] e controllo che non sia uguale a qualsiasi valore contenuto in val.
faccio la stessa cosa che ho fatto con vet[1] e la ripeto fino alla fine di vet;
FINE
Alla fine in val si avrà tutti i numeri del file ripetuti una sola volta e in occor la numerosità con la quale il relativo valore si ripete.
Quindi:
vet[]=10, 11, 10, 10, 11, 6
val[]=10, 11, 6
occor[]=3, 2, 1
Quindi, nel file di output:
FILE2:
10, 3
11, 2
6, 1
Credo di aver risposto alla tua domanda in modo soddisfacente.
Fammi sapere se sei convinto o meno, o se non hai capito qualche cosa.

Rispondi quotando
