PDA

Visualizza la versione completa : [c++] elaborazione di una stringa lunghissima...


freetom
03-08-2010, 18:29
Ho ad esempio questa stringa lunghissima:





1,8,1,10,1,14,1,30,1,33,1,54,1,64,1,65,2,14,2,59,2 ,61,2,63,2,67,2,77,2,80,2,84,2,89,3,25,3,42,3,68,4 ,16,4,20,4,39,4,40,4,46,4,48,4,58,4,59,4,63,4,90,5 ,35,5,38,5,39,5,42,5,51,5,55,5,87,6,20,6,49,6,51,6 ,60,6,80,7,10,7,16,7,18,7,43,7,70,7,71,7,72,8,12,8 ,34,8,72,8,76,9,29,9,36,9,43,9,45,9,65,9,73,9,78,9 ,89,10,12,10,16,10,30,10,33,10,39,10,52,10,54,10,6 5,10,79,11,30,11,72,12,23,12,42,12,49,12,54,12,69, 12,81,13,15,13,39,13,40,13,52,13,66,13,85,14,31,14 ,48,14,53,14,61,14,63,14,71,14,74,15,19,15,24,15,2 9,15,41,15,43,15,50,15,53,15,63,15,75,15,78,15,83, 15,89,16,23,16,24,16,26,16,30,16,50,16,51,16,52,16 ,59,16,68,16,76,16,77,17,24,17,41,17,67,17,77,18,2 8,18,40,18,45,18,59,18,73,19,33,19,46,19,48,19,71, 19,72,19,81,19,87,20,26,20,40,20,43,20,59,20,62,20 ,67,20,69,20,75,20,77,20,82,20,89,21,24,21,26,21,4 8,21,63,21,65,21,69,21,74,21,75,22,26,22,45,22,48, 22,63,22,70,22,82,23,60,24,31,24,42,



dovrei

1) per ogni elemento componente separato da virgola sapere la sua quantità...
(es del tutto fantasioso: 1 presente 10 volte ecc...)

2) eliminare gli elementi presenti + volte lasciandone per ciauscuno una sola copia.


Qualcuno/a mi dice come fare?

Grazie infinite

:ciauz:

Luciano79
04-08-2010, 10:41
probabilmente quasi tutti sanno come fare.
Ma se prima non ci provi tu esponendo il tuo codice ed i problemi incontrati, dubito che qualcuno ti risponda. E' così non solo per buon senso, ma anche per regolamento.
:ciauz:

freetom
04-08-2010, 11:39
int mycount;

// counting elements in array:
int myints[] = {10,20,30,30,20,10,10,20}; // 8 elements
mycount = (int) count (myints, myints+8, 10);
cout << "10 appears " << mycount << " times.\n";

// counting elements in container:
vector<int> myvector (myints, myints+8);
mycount = (int) count (myvector.begin(), myvector.end(), 20);
cout << "20 appears " << mycount << " times.\n";



ma non riesco ad applicarlo alla stringa che mi necessità... :dhò: :mame:

:ciauz:

Doch88
04-08-2010, 16:52
prova con questa per dividere la stringa e prenderne i numeri:


#include <string.h>
#include <cstdlib>
#define MAX_A 300
void dividi_stringa(char stringa[MAX_A],int numb[MAX_A]){
char numero_att[MAX_A];
int lung = strlen(stringa);
int b = -1;
for(int a = 0; a <= lung;a++){
b++;
if(stringa[a] != ','){
strcpy(numero_att,&stringa[a]);
if(stringa[a++] != ','){
strcat(numero_att,&stringa[a]);
}else a--;
numb[b] = atoi(numero_att);
strcpy(numero_att,"");
}else{
b--;
}
}
}
funzione creata da me, che prende i numeri dalla stringa divisi dalle virgole e lo mette in un array di numeri...
poi il resto lo fai da te :mem:

Doch88
04-08-2010, 20:24
Comunque ho già un vecchio programma che ho programmato mesi fa che fa quello che ti serve, ma citando

probabilmente quasi tutti sanno come fare. Ma se prima non ci provi tu esponendo il tuo codice ed i problemi incontrati, dubito che qualcuno ti risponda. E' così non solo per buon senso, ma anche per regolamento.
non te lo posso dare, mi dispiace...

Loading