Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C++] Trova (ed elimina) coppie di numeri

    Salve,
    avrei una bisogno di un aiuto (spero che abbia scritto bene il titolo e non ho trovato problemi simili).

    Devo creare un istruzione che mi permette di trovare una serie di possibili coppie di numeri ed eventualmente eliminarli (solo le coppie) da un array di interi. Faccio un esempio pratico:

    A[1 2 3 1 4 5 2];

    Come potete vedere, ci sono 2 coppie di numeri (due volte il numero 1 e due volte il numero 2), il programma li dovrebbe trovare, eliminarli e riscrivere l'array senza le coppie, cioè:

    A[3 4 5];

    Il mio problema è che non riesco a creare questa istruzione di trovare le coppie, come posso fare?

    Grazie in anticipo.

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Specifica meglio: solo le coppie o in generale occorrenze multiple?

    Esempio:

    A[1 2 3 1 3 4 3 5]

    deve diventare

    A[1 2 3 4 5] o A[1 2 3 3 4 3 5] ?
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  3. #3
    Aggiungo: è importante che l'array finale sia ordinato come quello da elaborare?
    Ossia: se l'input è

    {2, 5, 4, 1, 3, 2, 1}

    l'output dovrà essere necessariamente

    {5, 4, 3}

    (ossia, la sequenza originale tolti i duplicati) oppure va bene anche

    {3, 4, 5}

    ?
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    C++, quindi vector?

    Usa gli iteratori:

    codice:
    vector <int> vect;
    
    for( vector <int>::iterator it = vect.begin(); it != vect.end();  )
    {
    	int temp = *it;
    
    	vector <int>::iterator result = std::find( it+1, vect.end(), temp );
    
    	if( result == vect.end() )
    	{
    		++it;
    		continue;
    	}
    		
    	while( result != vect.end() )
    	{
    		vect.erase( result );
    		it = vect.begin();
    		result = std::find( it, vect.end(), temp );
    	}		
    }

    Era quello che volevi?

    Ps: provalo, dovrebbe andare sia per vettori ordinati che non.
    Fracty - The Fractal Generator



    If you cannot choose a concise name that expresses what the method does, it is possible that your method is attempting to perform too many diverse tasks.

  5. #5
    Originariamente inviato da Ippo343
    Specifica meglio: solo le coppie o in generale occorrenze multiple?

    Esempio:

    A[1 2 3 1 3 4 3 5]

    deve diventare

    A[1 2 3 4 5] o A[1 2 3 3 4 3 5] ?
    Nel tuo caso c'è una coppia di 1 e una coppia di 3 (anche se ce ne sono tre, il programma deve verificare la coppia, quindi il terzo rimane invariato), e alla fine diventa:
    A[2 4 3 5]

    infatti sono stati eliminati la coppia di 1 e la coppia di 3.

    Spero di aver chiarito.

    Originariamente inviato da MItaly
    Aggiungo: è importante che l'array finale sia ordinato come quello da elaborare?
    Ossia: se l'input è

    {2, 5, 4, 1, 3, 2, 1}

    l'output dovrà essere necessariamente

    {5, 4, 3}

    (ossia, la sequenza originale tolti i duplicati) oppure va bene anche

    {3, 4, 5}

    ?
    Bè l'ordinazione degli elementi dell'array non è obbligatorio. Ma per comodità va bene ordinarlo.

    @GliderKite: proverò a farlo, grazie.
    E senza vector come si fa?

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