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

    [c++] Ho due array di stringhe...

    Stringhe... di questo tipo:

    ARRAY1:[0]="1,2,3"[1]="3,5,7"[2]="10,16,19" ecc...
    ARRAY2:[0]="23,1,7,57,69"[1]="34,54,21,90,67"[2]="30,21,75,7,90" ecc...

    Adesso dovrei per ogni elemento stringa di ARRAY1 e ARRAY2 eseguire queste due operazioni:

    1)SCOMPORRE IN RELATIVO ARRAY1DIELEMENTOSTRINGA1
    es: ARRAY1DIELEMENTOSTRINGA1:[0]=1[1]=2[2]=3

    2)SCOMPORRE IN RELATIVO ARRAY2DIELEMENTOSTRINGA2
    es: ARRAY2DIELEMENTOSTRINGA2:[0]=23[1]=1[2]=7[3]=57[4]=69

    3)EFFETTUARE UN CONFRONTO TRA I DUE ARRAY verificando uno ad uno ogni ARRAY1DIELEMENTOSTRINGA con ogni ARRAY2DIELEMENTOSTRINGA e verificare se c'e' almeno un'occorrenza...


    Grazie a chi ha capito cosa dovrei fare e mi da una mano nel buttare giu' il codice necessario...


  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    Moderazione

    Originariamente inviato da freetom
    Grazie a chi ha capito cosa dovrei fare e mi da una mano nel buttare giu' il codice necessario...
    Approfondisci il problema e butta giù tu una soluzione riportando il codice in modo che si possa valutare e correggere.

    Il forum non è il luogo in cui delegare ad altri lo svolgimento del proprio compito a casa.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Perche' un nuovo thread se gia' ne hai uno con la stessa discussione in corso ?

    freetom ... così si fa solo confusione ...

    Questo non mi pare un "esercizio" ma un modo per ottenere la risposta all'altro thread ...

    A quale si risponde?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Ma il problema qual è? Devi estrarre token da un stringa? E allora strtok(), in particolare il primo esempio di Wikipedia risponde abbastanza bene a quello che vuoi fare tu. Se poi devi convertire quei token in interi (visto che sono numeri), esiste atoi().

    In generale comunque la soluzione migliore è sempre un buon motore di ricerca, e ancora prima un libro da cui studiare.
    every day above ground is a good one

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

    grazie a tutti :)

    Adesso mi mancherebbe solo il 3° e ultimo punto...

    Ovvero sono riuscito grazie ai vostri consigli e alle vostrre dritte a :

    scomporre ogni singola stringa appartenente ai 2 array nei rispettivi elementi componenti adesso mi mancherebbe solo un opportuno ciclo for per poterli confrontare uno ad uno rilevandone eventuali occorrenze...

    es. visivo...

    Avevo
    ARRAY1=[0]="1,2,3"[1]="3,4,5" ecc...
    e
    ARRAY2=[0]="45,35,28,90,7"[1]="77,54,34,52,65" ecc...

    sono riuscito a scomporre ciclando ogni array in questo modo

    1
    2
    3

    3
    4
    5

    ecc...

    45
    35
    28
    90
    7

    77
    54
    34
    52
    65

    adesso i singoli elementi sono confrontabili

    solo che non riesco a metterli nel giusto ciclo for... in modo che secondo l'esempio...
    ogni terzina... iniziando dalla prima 1 2 3 venga confrontata con ogni cinquina del secondo array per trovarvi o meno una occorrenza uguale.

    es. di procedimento voluto...

    1 2 3 < > 45 35 28 90 7 -> nessuna occorrenza
    1 2 3 < > 77 54 34 52 65 -> nessuna occorrenza

    e così via per tutte le cinquine dell'array2

    per poi cominciare il raffronto con la successiva terzina...

    3 4 5 < > 45 35 28 90 7 -> nessuna occorrenza
    ecc...

    il pezzo di cod. con cui si ottiene lo smembramento...
    delle stringhe dei due array è questo:

    codice:
    //SMEMBRAMENTO... DELLE STRINGHE terzine di ARRAY1
    
    for (int z=0; z<sz; z++)  {
    cout << vec[z];
    //prova scomposizione di ogni stringa... nell'array1
    string testo,estratta;
    vector<string> token;
    int inizio,fine,i,lparola;
    bool continua;
    cout << "Estrae tutte le parole contenute in un testo" << endl;
    cout << "\nTesto : ";
    testo = vec[z];
    // Estrazione parole (parola racchiusa fra spazi)
    // fra due parole c'e' un solo spazio
    continua = true;
    inizio = -1;	/*1*/
    while(continua){
    fine = testo.find(',',inizio+1);	/*2*/
    // ultima parola
    if(fine==-1){	/*3*/
    continua = false;
    fine = testo.length();	/*4*/
    }
    // Estrazione parola
    lparola = (fine-inizio)-1;	/*5*/
    estratta = testo.substr(inizio+1,lparola);	/*6*/
    token.push_back(estratta);	/*7*/
    inizio = fine;	/*8*/
    }
    // Elenco parole
    cout << "\nParole che compongono il testo" << endl;
    for(i=0;i<token.size();i++)
    cout << token.at(i) << endl;
    }
    cout << "\n\n\n"; 
    cout << "Press ENTER to continue...x scomporre elementi stringa di array2... in sottoarray relativi..." << endl;
    cout << "\n\n\n"; 
    cin.get();
    //return 0;
    
    
    //prova scomposizione del secondo array... (combinazioni)
    //SMEMBRAMENTO... DELLE STRINGHE cinquine di ARRAY2
    
    
    for (int z2=0; z2<sz2; z2++)  {
    cout << vec2[z2];
    //prova scomposizione di ogni stringa... nell'array1
    string testo,estratta;
    vector<string> token2;
    int inizio,fine,x,lparola;
    bool continua;
    cout << "Estrae tutte le parole contenute in un testo" << endl;
    cout << "\nTesto : ";
    testo = vec2[z2];
    // Estrazione parole (parola racchiusa fra spazi)
    // fra due parole c'e' un solo spazio
    continua = true;
    inizio = -1;	/*1*/
    while(continua){
    fine = testo.find(',',inizio+1);	/*2*/
    // ultima parola
    if(fine==-1){	/*3*/
    continua = false;
    fine = testo.length();	/*4*/
    }
    // Estrazione parola
    lparola = (fine-inizio)-1;	/*5*/
    estratta = testo.substr(inizio+1,lparola);	/*6*/
    token.push_back(estratta);	/*7*/
    inizio = fine;	/*8*/
    }
    // Elenco parole
    cout << "\nParole che compongono il testo" << endl;
    for(i=0;i<token2.size();i++)
    cout << token2.at(x) << endl;
    }
    cout << "\n\n\n"; 
    cout << "Press ENTER to continue...x CHIUDERE..." << endl;
    cout << "\n\n\n"; 
    cin.get();
    return 0;
    
    
    
    Così me le smembra... correttamente... e me le visualizza con l'attesa.. prima di chiudere la finestra premendo un qualsiasi tasto mentre... se provo a fare il confronto inserendo il secondo pezzo all'interno del ciclo delle terzine... anche se c'e' la richiesta d'attesa con il cin... al termine della troppo rapida elaborazione mi chiude la finestra da solo... non permettendomi di veder dove sia l'errore...
    
    Inoltre per il raffronto avvrei pensato a qualcosa di questo tipo
    
    if (token.at(i) == token2.at(x)) {
    
    cout << "OCCORRENZA TROVATA";
    
    }
    else {
    
    cout << "OCCORRENZA NON TROVATA";
    
    }

    Grazie come sempre per i vostri preziosissimi apporti


  6. #6
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    il codice va postato tra i tag CODE!! leggere il regolamento mai eh?

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.