Programma per implementare le operazioni tra insiemi

di il
5 risposte

Programma per implementare le operazioni tra insiemi

Avrei bisogno del vostro aiuto per scrivere un programma che dati due insiemi sotto forma di array mi restituisca un terzo array che è l'insieme dato dall'intersezione dei primi due

ecco il codice scritto da me che non funziona


#include<iostream>
using namespace std;
const int dim=50;
int dim_a;
int dim_b;
int dim_c;
bool is_in(int [], int, int);
void intersezione(int [],int ,int [], int, int[] ,int& );

int main()
{
int a[]= {1,3,5,7,90,32,45,10};
int b[]= {4,5,45,10,33,6};
int c[dim];

cout<<"l'insieme c intersezione dei due insiemi a e b è :"<<endl;
intersezione(a, dim_a, b, dim_b, c, dim_c);
cout<<c[dim];
return 0;
}

bool is_in(int a[] ,int dim ,int x)
{
bool trovato=false;
int i=0;
while(i<dim && !trovato)
{
if(a==x)
trovato=true;
i++;
}
return trovato;
}
void intersezione(int a[], int dim_a, int b[], int dim_b, int c[], int& dim_c)
{
int i,j;
c=0;
for(i=0;i<dim_a;i++)
if(is_in(b,dim_b,a))
{
c[dim_c]=a;
dim_c ++;
}
}

5 Risposte

  • Re: Programma per implementare le operazioni tra insiemi

    Il tuo programmino
    http://www.cplusplus.com/reference/algorithm/set_intersection/
  • Re: Programma per implementare le operazioni tra insiemi

    Apportando alcune modifiche funziona... Ecco a te il codice corretto:
    #include<iostream>
    using namespace std;
    const int dim=8;
    const int dim1=6;
    
    int dim_cc;
    bool is_in(int [], int, int);
    void intersezione(int [],int ,int [], int, int[] ,int& );
    
    int main()
    {
    int x[]= {1,3,5,7,90,32,45,10};
    int y[]= {4,5,45,10,33,6};
    int z[dim];
    
    cout<<"l'insieme c intersezione dei due insiemi a e b è :"<<endl;
    intersezione(x, dim, y, dim1, z, dim_cc);
    for (int g=0;g<dim_cc;g++)
    {
     cout<<endl;
    cout<<z[g];
    }
    return 0;
    }
    
    bool is_in(int a[] ,int dim ,int x)
    {
    bool trovato=false;
    int i=0;
    while(i<dim && !trovato)
    {
    if(a[i]==x)
    trovato=true;
    i++;
    }
    return trovato;
    }
    void intersezione(int a[], int dim_a, int b[], int dim_b, int c[], int& dim_c)
    {
    int i,j;
    dim_c=0;
    for(i=0;i<dim_a;i++)
    if(is_in(b,dim_b,a[i]))
    {
    c[dim_c]=a[i];
    dim_c ++;
    }
    }
    
    Dimmi se andava bene
  • Re: Programma per implementare le operazioni tra insiemi

    Grazie a dire il vero c'ero riuscito proprio stanotte
    ti ringrazio comunque veramente tanto
  • Re: Programma per implementare le operazioni tra insiemi

    Di niente
  • Re: Programma per implementare le operazioni tra insiemi

    Ciao a tutti! Vorrei soddisfare una piccola curiosità...

    Sono alle primissime armi in termini di programmazione e mi chiedevo se qualcuno di voi fosse in grado di riformularmi il programma in modo che restituisca non l'insieme intersezione dei primi due ma il risultato della differenza del primo per il secondo:
    C = A - B
    (C deve essere l'insieme che si ottiene sottraendo ad A tutti gli elementi presenti anche in B.)

    Grazie della vostra attenzione!
Devi accedere o registrarti per scrivere nel forum
5 risposte