Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    643

    [C] esercizio sui vettori ambiguo?

    L'esercizio chiede:
    Scrivere una funzione che preso in input un vettore di interi ordinato in senso non decrescente e la sua dimensione, elimina dal vettore tutti i duplicati compattandolo e ritorna il numero di elementi eliminati

    Es:

    Se V = [2,4,4,5,7,7,7] la funzione modifica il vettore in modo tale che i primi 4 elementi siano [2,4,5,7] e ritorna 3

    Il codice è il seguente:

    codice:
    long EliminaDuplicati(int V[], long dim){
    
        int k=0, i;
        for(i=1;i<dim;i++){
           if(V[i] != V[k]{
               k++;
               V[k] = V[i];
           }
        }
        return dim - (k+1);
    }
    La cosa che mi sembra strana è che il doppione 4 viene effettivamente eliminato ma i 2 sette di troppo NO...ora vabbè che nell'esempio dice:
    "in modo tale che i primi 4 elementi siano [2,4,5,7]" ma nel testo dice di fare la funzione che elimina i duplicati...e i 7 non vengono eliminati anche se effettivamente viene ritornato 3....

    mmm...altra esercitazione preesame fatta di merda dal proff? :mc:

    Grazie
    Andrea

  2. #2

    Re: [C] esercizio sui vettori ambiguo?

    Originariamente inviato da D4rkAng3l
    L'esercizio chiede:
    Scrivere una funzione che preso in input un vettore di interi ordinato in senso non decrescente e la sua dimensione, elimina dal vettore tutti i duplicati compattandolo e ritorna il numero di elementi eliminati

    Es:

    Se V = [2,4,4,5,7,7,7] la funzione modifica il vettore in modo tale che i primi 4 elementi siano [2,4,5,7] e ritorna 3

    Il codice è il seguente:

    codice:
    long EliminaDuplicati(int V[], long dim){
    
        int k=0, i;
        for(i=1;i<dim;i++){
           if(V[i] != V[k]{
               k++;
               V[k] = V[i];
           }
        }
        return dim - (k+1);
    }
    La cosa che mi sembra strana è che il doppione 4 viene effettivamente eliminato ma i 2 sette di troppo NO...ora vabbè che nell'esempio dice:
    "in modo tale che i primi 4 elementi siano [2,4,5,7]" ma nel testo dice di fare la funzione che elimina i duplicati...e i 7 non vengono eliminati anche se effettivamente viene ritornato 3....

    mmm...altra esercitazione preesame fatta di merda dal proff? :mc:

    Grazie
    Andrea
    no, e' giusto..
    il vettore rimane di 7 posizioni, ma vengono ricopiati solo i non doppioni all'inizio..
    quindi tu devi considerare solo le prime 4 posizioni..
    :
    il vettore iniziale e':
    2,4,4,5,7,7,7
    quello finale e' :
    2,4,5,7,7,7,7

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    643
    si ok...appunto è come dicevo io...se ci sono dei doppioni alla fine non vengono eliminati fisicamente dal vettore...

  4. #4
    Originariamente inviato da D4rkAng3l
    si ok...appunto è come dicevo io...se ci sono dei doppioni alla fine non vengono eliminati fisicamente dal vettore...
    infatti!
    cio' accade perche' il vettore e' dichiarato staticamente
    int V[] e quindi non e' possibile effettuare una realloc su di esso.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    643
    ah ok..quindi è normale e sono stupido io

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    444
    potresti passare la dimensione x indirizzo e modificarla dentro la funzione
    *********************************
    Andrea
    *********************************

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.