Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    106

    [C] Copia degli elementi pari

    Salve a tutti sto cercando di risolvere questo problema:
    Un programma deve leggere dall’utente due vettori di 5 elementi ciascuno. Il programma
    deve creare un ulteriore vettore, che contenga la copia dei soli elementi pari presenti nei
    due vettori di partenza, e stampare tale vettore.
    Io ho sviluppato questo codice fin'ora:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    int l,n,i,z=0;
    main()
    {   
        printf("Numero valori da inserire nei vettori: ");
        scanf("%d",&l);
        int vett_1[l]; 
        int vett_2[l];
        int vett_3[l];
        printf("\n");
       
        for(i=0;i<l;i++){
                         printf("Inserisci il %d%c valore del primo vettore: ",i+1,248);
                         scanf("%d",&vett_1[i]);
                         printf("Inserisci il %d%c valore del secondo vettore: ",i+1,248);
                         scanf("%d",&vett_2[i]);
                         }
        for(i=0;i<l;i++){
                         if(vett_1[i]%2==0){
                                            vett_3[i]=vett_1[i];
                                            z=z+1;
                                            printf("Il %d%c valore pari inserito nel vettore %c: %d\n",z,248,138,vett_3[i]);
                                            }               
                         }
        system("PAUSE");	
    }
    E arrivato a questo punto io riesco a copiare gli elementi pari inseriti nel primo vettore nel terzo vettore.Ora io dovrei continuare il programma in modo tale da poter copiare anche i valori pari del secondo vettore nel terzo vettore ma non ci riesco in nessun modo. Avevo pensato di copiare gli elementi pari del secondo vettore nel terzo di seguito a quelli pari del primo ma non so come fare.
    Es:
    vett_1= 2 3 6
    vett_2=1 3 4 8
    vett_3= 2 6 4 8
    Come faccio a scrivere gli elementi pari del secondo vettore di seguito agli elementi pari del primo che sono stati copiati nel terzo?
    Grazie per gli aiuti

  2. #2
    Potresti crearti un'ulteriore variabile contatore.

    La incrementi di un'unità ogni volta che hai successo nel test di parità per gli elementi del primo vettore.

    Quindi fai di nuovo un ciclo per il secondo vettore partendo da vett_3[j], dove j è la variabile contatore.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    106
    Ci avevo pensato però il proble è che se faccio così:
    codice:
    for(i=0,j=0;j<l && i<l;j++,i++){
                                                 if(vett_2[i]%2==0)
                                                 vett_3[j]=vett_2[i];
                                                }
    Vado ad eliminare dal vett_3 gli elementi pari del primo vettore adando a copiare i nuovi elementi pari del secondo...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    106
    Vorrei trovare un metodo per fare in modo che una volta copiati gli elementi pari del primo vettore sul terzo poi copio di seguito quelli del secondo...

  5. #5
    Non avevo notato la tua variabile z; quella fa esattamente al caso tuo.
    La incrementi ogni volta che trovi un valore pari da inserire, perciò alla fine del ciclo relativo al primo vettore ti dà esattamente il numero di elementi inseriti nel terzo, e quindi l'indice da cui ripartire nel ciclo relativo al secondo vettore.
    Il secondo ciclo potrebbe essere
    codice:
    for(i=0; i<l; i++){
         if(vett_2[i]%2==0){
              vett_3[z] = vett_2[i];
              //fai la tua stampa
              z++;
         }
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    106
    Ok grazie mille

  7. #7
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    come ti hanno detto usare il contatore z

    un esempio scritto in fretta la stampa del vettore è da modificare



    codice:
    #include <stdio.h>
    #include <stdlib.h>
    int l,n,i,z=0;
    main()
    {   
        printf("Numero valori da inserire nei vettori: ");
        scanf("%d",&l);
        int vett_1[l]; 
        int vett_2[l];
        int vett_3[l*2];// potrebbero essere pari tutti i numeri di vett1 che di wett2 quindi 
        // meglio avere un vettore che possa contenerli tutti 
        printf("\n");
       
        for(i=0;i<l;i++){
                         printf("Inserisci il %d%c valore del primo vettore: ",i+1,248);
                         scanf("%d",&vett_1[i]);
                         printf("Inserisci il %d%c valore del secondo vettore: ",i+1,248);
                         scanf("%d",&vett_2[i]);
                         }
        for(i=0;i<l;i++){//inserisco in vett3 i numeri pari di vett1
                         if(vett_1[i]%2==0){
                                            vett_3[z]=vett_1[i];
                                            z=z+1;
                                           
                                            }               
                         }
        for(i=0;i<l;i++){// inserisco in vett3 i numeri pari di vett2
                         if(vett_2[i]%2==0){
                                            vett_3[z]=vett_2[i];
                                            z=z+1;
                                           
                                            }               
                         }  
         printf("numeri pari inseriti nei due vettori %d \n",z); 
         printf("Elenco dei numeri pari :\n") ;               
          for(i=0;vett_3[i]<2*l;i++)                               
                printf("%d\n",vett_3[i]);
        system("PAUSE");	
    }
    Tecnologia

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    106
    Grz torn24 per l'esempio fornito hai ragione riguardo la lunghezza del vett_3 non ci avevo pensato sinceramente Adesso modifico la stampa ed è perfetto. Grazie a tutti dei consigli

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    106
    Ho fatto il programma e funziona correttamente adesso:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    /*Funzioni*/
    void inserimento();
    void scansione();
    void pari();
    /*Variabili*/
    int l,n,i,z;
    int vett_1[]; 
    int vett_2[];
    int vett_3[];
    main()
    { 
          inserimento();
          scansione();
          pari();  
        system("PAUSE");	
    }
    
    
    void inserimento()
    {
        printf("Numero valori da inserire nei vettori: ");
        scanf("%d",&l);
        vett_1[l]; 
        vett_2[l];
        vett_3[l*2];
        printf("\n");
        for(i=0;i<l;i++){
                         printf("Inserisci il %d%c valore del primo vettore: ",i+1,248);
                         scanf("%d",&vett_1[i]);
                         }
        printf("\n");
        for(i=0;i<l;i++){                
                         printf("Inserisci il %d%c valore del secondo vettore: ",i+1,248);
                         scanf("%d",&vett_2[i]);
                         }
    }
    
    
    void scansione()
    {
        z=0;
        for(i=0;i<l;i++){
                         if(vett_1[i]%2==0){
                                            vett_3[z]=vett_1[i];
                                            z++;
                                           }               
                         }
        for(i=0;i<l;i++){
                         if(vett_2[i]%2==0){
                                            vett_3[z]=vett_2[i];
                                            z++;
                                            }               
                         }
    }
    
    
    void pari()
    {
         int MAX=z;
         printf("\nNumeri pari inseriti nei due vettori %d \n",z); 
         printf("Elenco dei numeri pari :\n") ;               
         for(z=0;z<MAX;z++)                               
                printf("Elementi pari %d\n",vett_3[z]);
    }
    Mi chiedevo: C'è un modo per evitare di scrivere tutte le variabili utilizzate come globali ma farle utilizzare solo all'interno delle funzioni in modo che il programma continua a funzionare correttamente?? Perchè facendo diverse prove quando cercavo di scriverle solo all'interno delle funzioni il programma non funziona...avete qualche suggerimento?? Grazie in anticipo per gli aiuti.

  10. #10

    Consiglio

    io ne ho fatto uno simile, ti consiglio di aggiungere un do while all'inizio in modo che se si supera il limite di 5 elementi da leggere, ti stampa un messaggio e ritorna di nuovo all'inserimento da tastiera

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.