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

    [C++] Azzerare i valori negativi di un array

    Dato un array in input, devo eliminarne i valori <0 e rimetterlo in output con i soli valori >0

    Devo usare le funzioni

    La mia prima idea era di usare

    codice:
    int AzzeraNegativi (int a[]){
        int Temp[100];
        int i=0;
        int t=0;
    
    
        int *b = int a[];
        for (i=0; i<b; i++)
        {
            if (a[i]>0)
                Temp[t]=a[i];
                t++;
        }
    }
    putroppo il mio prof non ha ancora spiegato bene i puntatori, cioè dal punto di vista teorico penso di aver capito, ma dal pratico non mi viene....

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Prima di tutto che significa "eliminare"? Nel titolo dici "azzerare" ...
    Devi riallocare lo spazio previsto per l'array o solo impostare a zero i valori negativi?

    Nel codice che hai mostrato, cosa vuoi fare con

    i<b

    dato che i è un intero e b un puntatore?

    E poi questa linea

    int*b =int a[];

    non ha senso dal punto di vista sintattico.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    cioè l'array a [1,-2,3,4,-5] in input deve diventare a[1,3,4] mi scuso se mi sono spiegato male

    come ho detto ho le idee ancora un po' confuse su puntatori.... diciamo che dal punto di vista dello "pseudocodice" il prog l'ho +- risolto... riportarlo in c++ mi risulta difficile...
    qualche consiglio?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Allora devi riallocare lo spazio dell'array.

    La funzione potrà essere di tipo void e avere in input il puntatore al puntatore all'array (int **arr) e il numero di elementi attuali (int n).

    Oppure restituirà il nuovo puntatore all'array modificato e in input basterà il puntatore singolo all'array e il numero di elementi.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    codice:
    int AzzeraNegativi (int **a[], int n){
        int Temp[100];
        int i=0;
        int t=0;
    
    
        for (i=0; i<n; i++)
        {
            if (a[i]>0)
                Temp[t]=a[i];
                t++;
        }
    
    
    }
    in questo modo? ma in questo caso l'array Temp[] mi serve ancora? e poi come faccio a scambiarlo con a[]? con un altro for?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Puoi restituire un int per avere il nuovo numero di elementi. Quindi

    int EliminaNegativi(int **a, int n)

    ma non Azzera perché, come hai detto, li elimini non li azzeri ... altrimenti si fa ancora confusione.

    Il Temp non serve a nulla.

    E mostra come operi dal main ... per chiarire ancora meglio.
    Ultima modifica di oregon; 23-02-2014 a 18:07
    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 © 2024 vBulletin Solutions, Inc. All rights reserved.