Programma con due array

di il
4 risposte

Programma con due array

Scrivere una funzione C++ che, dati due array di
interi positivi a e b, restituisce l’array c che contiene i numeri positivi che
appaiono in entrambi gli array (si suppone che gli array a e b non contengano
elementi ripetuti).
Esempio: a={2,11,6,5,9}, e b={2,3,4,11,7,5}. La funzione restituisce
c={2,11,5}.

ecco il mio elaborato
a me stampa solo il primo valore cercato
perchè

#include<iostream>
using namespace std;
const int N=4;
bool funzione(int [5], int [3]);
int main()
{
    int a[5]={2,11,6,5,9};
    int b[3]={2,11,5};
    funzione(a,b);
    return 0;
}

bool funzione(int x[5], int y[3])
{
    int c[N]={};
    int dc=0;
    int i,j;
    bool condizione=false;
    for(i=0;i<5 && !condizione;i++)
    {
        for(j=0;j<3 && !condizione; j++)
        {
            if(x[i]==y[j] && !condizione)
            {
                condizione=true;
                c[dc]=x[i];
                dc++;
            }
            j++;
        }
        i++;
    }
    for(int k=0;k<dc;k++)
    cout<<c[k]<<" ";

    return condizione;
}

4 Risposte

  • Re: Programma con due array

    Avevi sbagliato i cicli for inserendo i++ e j++ di troppo, inoltre mancava l' istruzione condizione=false all' interno del ciclo for(i=0; i<5; i++).

    Il programma corretto è il seguente:
    #include<iostream>
    #include <stdlib.h>
    using namespace std;
    const int N=4;
    void funzione(int [5], int [3]);
    int main()
    {
        int a[5]={2,11,6,5,9};
        int b[3]={2,11,5};
        funzione(a,b);
        system("PAUSE");
        return 0;
    }
    
    void funzione(int x[5], int y[3])
    {
        int c[N];
        int dc=0;
        int i,j,k;
        bool condizione=false;
        for(i=0; i<5; i++)
        {
            for(j=0; j<3; j++)
            {
                if(x[i]==y[j] && !condizione)
                {
                    condizione=true;
                    c[dc]=x[i];
                    dc++;
                }
            }
            condizione=false;
        }
        
        cout<< "Gli interi che hanno in comune i due array sono:\n";
        for(k=0; k<dc; k++)
        cout<<c[k]<< "\n";
        return;
    }
    
  • Re: Programma con due array

    Guarda ti ringrazio ma c'è un problema io non ho studiato e non potevo usare queste due cose che hai usato tu
    potresti dirmi a cosa ti sono servite?
    
    #include <stdlib.h>
    
    
    system("PAUSE");
    
  • Re: Programma con due array

    Puoi anche non usarle, sistem("PAUSE") serve per non far chiudere subito la finestra quando mandi in run il programma, in modo da vedere quello che hanno stampato le funzioni cout, mentre l' header file stdlib.h è necessario perchè contiene il sistem("PAUSE"). Ovviamente se non vuoi usare il sistem("PAUSE") non hai nemmeno bisogno del stdlib.h.
    Comunque al posto del sistem("PAUSE") puoi usare la funzione cin.get(), per la quale non c'è bisogno di stdlib.h, perchè è gia compresa in iostream.

    Matteo
  • Re: Programma con due array

    Ok capito
    grazie mille
Devi accedere o registrarti per scrivere nel forum
4 risposte