Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    495

    [c++]problema con dimensione array

    Ciao,

    ho fatto una funzione che prende in ingresso un array T e ne estrae i numeri pari. Questi numeri dispari li metto dentro un altro array che passo sempre alla funzione come parametro.
    Alla fine ciclo l'array p che contiene solo i numeri pari e lo voglio stampare.
    Il mio problema č: quanto grande devo fare l'array di partenza visto che all'inizo non so quanto č grande? Perchč alla fine quando ciclo su quell'array ho dei risultati strani a video.
    Io ora l'ho definito int p[10];
    Ecco il codice:

    void pari_dispari(int X[], int n , int p[]){
    int i,j;
    for(i=0;i<n;i++){
    if(X[i]%2==0){
    p[i]=X[i];
    }
    }
    }


    int main(int argc, char** argv) {

    int i,T[10]={17,26,12,18,39,22,14,20,21,29};

    int p[10];
    pari_dispari(T,10,p);

    for(i=0;i < 10;i++){
    cout << p[i]; //stampo a video
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Nella funzione devi usare un altro contatore ad esempio j, che userai per il vettore p da incrementare solo se assegni un valore a p.
    Questo contatore lo devi restituire ( funzione int e non void) in modo che nel main la fir sia limitata da questo contatore.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    495
    OK ho capito..ma non c e modo di risolvere con una funzione void?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quote Originariamente inviata da ojalā Visualizza il messaggio
    OK ho capito..ma non c e modo di risolvere con una funzione void?
    Puoi sempre utilizzare un quarto argomento, un puntatore a intero, attraverso il quale restituisci il contatore j
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    495
    riesci a mostrarmi come fare? perchč ho provato ma non mi funziona..ecco il codice:
    void pari_dispari(int X[], int n , int p[], int *K){
    int i,j;
    *k=0;
    for(i=0;i<n;i++){
    if(X[i]%2==0){
    p[i]=X[i];
    k++;
    }
    }
    }


    int main(int argc, char** argv) {

    int i,T[10]={17,26,12,18,39,22,14,20,21,29};

    int p[10];
    int k;
    pari_dispari(T,10,p, &k);

    for(i=0;i < k;i++){
    cout << p[i]; //stampo a video
    }

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma non hai ancora modificato la funzione utilizzando il secondo indice come ti avevo detto prima.

    Andiamo... ragionaci un po'
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    495
    l'ho fatto aggiungendo k che passo alla funxione come indirizzo:

    void pari_dispari(int X[], int n , int p[], int *K){
    int i,j;
    *k=0;
    for(i=0;i<n;i++){
    if(X[i]%2==0){
    p[i]=X[i];
    *k++;
    }
    }
    }


    int main(int argc, char** argv) {

    int i,T[10]={17,26,12,18,39,22,14,20,21,29};

    int p[10];
    int k;
    pari_dispari(T,10,p, &k);

    for(i=0;i < *k;i++){
    cout << p[i]; //stampo a video
    }

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    1) allora a cosa serve j nella funzione?

    2) e dove utilizzi k come indice nella funzione? In quale vettore?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Tag per questa discussione

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.