Comparazione tra array

di il
6 risposte

Comparazione tra array

Salve a tutti, sono nuovo e mi sto cimentando nella programmazione in C da autodidatta. Sto facendo alcuni esercizi e sono incappato in un problema. Devo riempire due array di 6 elementi e stampare a schermo i numeri uguali che sono nelle stesse posizioni, ad esempio se arr1= 1,2,3,4,5,6 e arr2=1,2,3,9,9,9 vorrei stampare a schermo un nuovo array che mostri 1,2,3,0,0,0. Quello che sono arrivato a fare io è questo, mi mostra i numeri uguali però le posizioni che non coincidono vengono riempite da numeri random:

    int ar1[6],ar2[6],y=0,i=0,fin[6];
printf ("Riempi il primo array: ");
        for (i=0;i<=5;i++)
            scanf("%d",&ar1[i]);
        printf ("Riempi il secondo array: ");
            for (i=0;i<=5;i++){
            scanf("%d",&ar2[i]);}
            for (y=0;y<=5;y++){
                if (ar1[y]==ar2[y]){
                    fin[y]=ar1[y];}}}
            for (y=0;y<=5;y++)
            printf ("\n%d-",fin[y]);}

6 Risposte

  • Re: Comparazione tra array

    Nell'if ti manca else fin1[y]=0. Altrimenti quando con il l'ultimo for vai a stampare a video dato che le posizioni finali nn le hai riempite tu, va a prendere in memoria la 'sporcizia' che trova!

    Inviato dal mio LG-E440 utilizzando Tapatalk
  • Re: Comparazione tra array

    Ahh, grazie mille! E se invece volessi stampare tutti i valori che si ripetono indipendentemente dalla loro posizione? Idealmente dovrei prendere ogni valore di arr1, compararlo con ogni valore di arr2 è salvarlo in un altro array se questo corrisponde. L'idea che mi sono fatto è quella di tenete "fermo" un array e far scorrere l altro, ma non so come tradurlo in codice

    Inviato dal mio Nexus 4 utilizzando Tapatalk
  • Re: Comparazione tra array

    Avrei pensato a qualcosa così, ma non funziona..
    while (x<=5){
                    for (i=0;i<=5;i++){
                    if (ar1[i]==ar2[x]) fin[i]=ar2[x]; } x++; i=0;}
    
    la mia intenzione sarebbe mettere ar2 in posizione 0 e con il ciclo for confrontargli tutti i valori di ar1, ,salvare l'eventuale valore trovato nell'array fin. Successivamente a ciclo finito con x++ portare ar2 in posizione 1 e rieffettuare la verifica. Però quando stampo l'array fin mi da tutti valori random, come se non avesse salvato niente dentro, dove mi sto sbagliando?
  • Re: Comparazione tra array

    Prima del while hai impostato x=0; ?
    altrimenti prende valori a caso!!
  • Re: Comparazione tra array

    Gincum ha scritto:


    prima del while hai impostato x=0; ?
    altrimenti prende valori a caso!!
    Si, nell'int ho messo x=0
  • Re: Comparazione tra array

    Proviamo a fare così: imposta x=5 fuori dal while; poi nel while sotituisci con x<5 e alla fine al posto di x++ utilizza x--;
    Altrimenti prova a sostituire il while con un for(x=0; x<5; x++) eliminando x++ a fine if.
    Ho notato, che sempre alla fine dell'if, imposti i=0. Ma ti serve da qualche altra parte questa variabile? Altrimenti ci pensa il for a rimetterla a 0 quindi è superflua. Ciao G.
Devi accedere o registrarti per scrivere nel forum
6 risposte