Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    [c++] elaborazione di una stringa lunghissima...

    Ho ad esempio questa stringa lunghissima:


    codice:
    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,65,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,29,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,28,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,48,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


  2. #2
    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.

  3. #3
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Per quanto riguarda il codice avrei questo...

    codice:
    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à...


  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    45
    prova con questa per dividere la stringa e prenderne i numeri:

    codice:
    #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

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    45
    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...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.