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

    [c++] scomposizione in array di una stringa...

    Ho questa stringa:

    prova="p,r,o,v,a";

    come faccio in c++, analogamente all'explode di php.., ad ottenere il relativo...

    arraydiprova=[0]=p[1]=r[2]=o[3]=v[4]=a ???

    THANKSSS


  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ma scusa, prima mi hai fatto fare il codice che unisce i valori con le virgole, e adesso chiedi di separarle?

    E' molto piu' sensato utilizzare lo stesso codice che ti avevo suggerito per inserire i valori singoli nell'array !
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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

    Mi era venuto anche a me lo stesso dubbio operativo... ma...

    Originariamente inviato da oregon
    Ma scusa, prima mi hai fatto fare il codice che unisce i valori con le virgole, e adesso chiedi di separarle?

    E' molto piu' sensato utilizzare lo stesso codice che ti avevo suggerito per inserire i valori singoli nell'array !
    Credo ci sia una considerazione in + da fare al riguardo...

    Ovvero se inserisco gli elementi già separati nell'array... dopo non so come dirgli al programma di confrontare solo 3 o 5 elementi alla volta...

    cerco di spiegarmi meglio...

    se ho

    x file1

    1,2,3
    1,2,4
    1,2,5
    1,2,6
    1,2,7
    1,2,8

    array1=[0]=1[2]=2[3]=3[4]=1[5]=2[6]=4 ecc...

    x file 2

    58,22,47,49,69;
    18,77,33,62,19;
    68,65,41,28,67;
    76,55,48,85,71;
    70,2,20,85,75;
    82,81,16,52,77;
    51,65,6,29,81;

    array2=[0]=58[2]=22[3]=47[4]=49[5]=69[6]=18 ecc...

    come faccio a dirgli nel confronto successivo

    verifica in questo modo le eventuali occorrenze in comune tra array1 e array2 prendendo 3 a 3 per array1 e 5 a 5 per array2?

    Mentre se facico la stessa cosa per ogni elemento stringa dei rispettivi array la vedo + semplice... ma al 99% mi sto sbagliando...

    Spesso purtroppo scelgo per le varie soluzioni le vie + lunghe e complicate

    quindi se hai una soluzione molto + breve per questo problema che mi trovo ad affrontare adesso e che ho cercato di spiegare anche qui... [PUNTO (3)] non posso che accettarla con estrema gioia!

    GRAZIE ancora


  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Non capisco quello che hai scritto ma so che, per quanto riguarda file2, ovvero

    58,22,47,49,69;
    18,77,33,62,19;
    68,65,41,28,67;
    76,55,48,85,71;
    70,2,20,85,75;
    82,81,16,52,77;
    51,65,6,29,81;

    se vuoi ottenere array2 con i valori separati, lo devi fare modificando il codice che ti ho scritto, ovvero quello che scrive file2. Mentre lo scrivi, inserisci i dati nel vettore.

    E così array2 ce l'hai.

    Anch'io sono convinto che stai seguendo una strada mooolto lunga ... secondo me, tutto il problema andrebbe rivisto, sin dalle basi ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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

    Comunque sia anche solo per curiosità...

    Originariamente inviato da oregon
    Ma scusa, prima mi hai fatto fare il codice che unisce i valori con le virgole, e adesso chiedi di separarle?

    E' molto piu' sensato utilizzare lo stesso codice che ti avevo suggerito per inserire i valori singoli nell'array !
    Come si effettua la scomposizione di una stringa in elementi di un array prendendo come elemento separatore un carattere scelto appartenente alla stringa (nel mio caso la virgola...)???

    GRAZIE!

    Al riguardo... ho cercato e ricercato ma nulla ho finora trovato...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Scusami, se ignoro la tua domanda, visto che tu hai ignorato la mia risposta ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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

    Se ho ignorato la tua risposta...

    Scusa ma non so come ho fatto a ignorarla..

    Diciamo che non so quale sia e come metterla in pratica

    Ti chiedo maggiore pazienza e meno ermetismo verso questo (io) neofita c++ alle primissime armi...

    Grazie comunque

    ps: Ho cercato e ricercato nel frattempo online l'argomento scomporre una stringa... ma nulla... non mi dire che in c++ non esiste qualcosa di analogo a string.explode (di php) perchè non ci credo...

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

    Forse saltando qualche passaggio potrei...

    fare il confronto tra stringhe direttamente...

    Dovrei allo scopo riuscire a ottimizzare questo codice che trova di per sè una parola intera tra quelle digitate... ma non saprei da che parte iniziare...

    /*
    Programma che, date in input due stringhe, controlla quante volte la seconda è contenuta nella prima.
    */

    #include <stdio.h>
    #include <string.h> //per la funzione strlen()
    #define MAX 100 //numero massimo di caratteri per le due stringhe
    #include <iostream>
    //#include <fstream.h>

    int main (int argc, char *argv[])
    {
    int n=0; //numero di parole trovate
    char stringa[MAX],parola[MAX];
    printf("Inserisci la stringa (max %d caratteri): ", MAX);
    gets(stringa);
    printf("Inserisci la parola da ricercare (max %d caratteri): ", MAX);
    gets(parola);

    int i=0; //i scorre le lettere della parola
    for (int j=0; j<strlen(stringa); j++){ //j scorre le lettere della frase
    if (stringa[j]==parola[i]){ //se le due lettere sono uguali...
    if (i!=0 || (i==0 && (stringa[j-1]==' ' || j==0))){
    /*se si sta controllando la prima lettera della parola, verifica che nella
    stringa ci sia uno spazio prima della lettera da confrontare o che essa sia
    la prima lettera della stringa*/
    i++; //...incrementa i
    if (i==strlen(parola)){ //quando si arriva alla fine della parola...
    if (stringa[j+1]==' ' || stringa[j+1]=='\0'){ /*...controlla che nella stringa il prossimo carattere sia uno spazio o il carattere terminatore*/
    n++; //in caso affermativo incrementa il numero di parole trovate
    i=0; //e azzera i
    }
    }
    }
    }
    }
    if(!n) {

    printf("Non ho trovato la parola inserita!");
    printf ("\n\n\n");
    printf ("Premi un tasto x chiudere");
    gets(parola);
    return 0;
    }
    else {

    printf("Ho trovato %d volte la parola inserita", n);
    printf ("\n\n\n");
    printf ("Premi un tasto x chiudere");
    gets(parola);
    return 0;
    }



    }


    A me basterebbe riadattarlo... al fine di avere ad esempio un confronto simile...

    stringa1 = "1,2,3";
    stringa2 ="12,1,34,56,90";

    risposta: 1 occorrenza trovata! -> 1

    Qualcuno/a è in grado di aiutarmi in tal senso?

    GRAZIE


  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481

    Re: Se ho ignorato la tua risposta...

    Originariamente inviato da freetom
    Scusa ma non so come ho fatto a ignorarla..
    Non l'hai letta ...

    Diciamo che non so quale sia e come metterla in pratica
    Te la ripeto. Devi partire dal codice che ti ho mostrato con cui scrivi il file "estrazioni2" (che poi, sei sicuro a che serva ?) e riempire l'array a partire dai dati disponibili nel ciclo.

    Ti chiedo maggiore pazienza e meno ermetismo verso questo (io) neofita c++ alle primissime armi...
    La pazienza è stata massima, te lo assicuro, ma non puoi pretendere che ti si scriva tutto il codice. Il fatto di essere alle prime armi non è una giustificazione, non vuol dire che gli altri debbano fare il lavoro per te ... a questo punto scrivi nel forum "Offro lavoro" ...

    Tu stai cercando di ottenere un codice C/C++ senza sapere alcunchè di C/C++ e, a differenza di altri che iniziano, non studi il linguaggio ma cerchi di ottenere "pezzi" da altri con cui fare un "collage" ... che alla fine non funziona e l'unico modo e' scrivere tutto il codice corretto al posto tuo.

    Non e' un comportamento che condivido.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.