---
# System prepended metadata

title: TD7 Info 121

---

# TD7 Info 121 


## Exercice 1 

1) 

### Solution 1 
```cpp= 

int cardinal(Ensemble e){
    int compteur = 0;
    while (not estVide(e)){
        Objet o = element(e);
        retire(e, o);
        compteur++;
    }
    return compteur;
}

```

2) 
### Solution 1 

```cpp= 
bool inclus(Ensemble e, Ensemble b){
    while (not estVide(e)){
        Objet o =element(e);
        retire (e,o);
        if (not estDans( b, o))
            return false;
    }

    return true ; 
}




bool inclus(Ensemble e, Ensemble b){
    if(cardinal(e) <= cardinal(b)){
        while (not estVide(e)){
        Objet o = element(e);
        retire (e,o);
        if(not estDans(b, o))
            return false;
        }
        return true;
    }else{
        return false;
    }
}
```



3) 


### Solution 1 

```cpp= 
bool egal(Ensemble a, Ensemble b){
    return inclus(a,b) and inclus(b,a);
}

```


4) 


### Solution 1



```cpp= 
Ensemble union(Ensemble e, Ensemble f){
    while(not estVide(e)){
        Objet o = element(e);
        retire(e, o);
        ajoute(f, o);
    }
    return f;
}




### Solution 2

```cpp= 

Ensemble unionEns(Ensemble a, Ensemble b){
    Ensemble unionEns;
    ensVide(unionEns);
    while (not estVide(a)){
        Objet o = element(a);
        ajoute(unionEns, o);
        retire(a, o);
    
    }
    while (not estVide(b)){
        Objet o = element(b);
        ajoute(unionEns, o);
        retire(b, o);
    }
    return unionEns;
}

```

### Solution 3
```cpp= 
Ensemble unionEns(Ensemble c, Ensemble d){
        Ensemble e;
        ensVide(e);
        while(not estVide(c)){
            Objet o = element(c);
            if(estDans(d,o)){
                retire(c,o);
            }else{
                ajoute(e,o);
                retire(c,o);
            }
        }while(not estVide(d)){
            Objet p = element(d);
            ajoute(e,p);
            retire(d,p);
       
        } 
        return e;
}

```


5) 

### Solution 1

```cpp= 
Ensemble interEns(Ensemble a, Ensemble b){
    Ensemble inter;
    ensVide(inter);
    while(not estVide(a)){
        Objet o = element(a);
        if(estDans(b, o))
            ajoute(inter, o);
        retire(a, o);
    }
    return inter;
}
```


### Solution 2

```cpp= 
//Code ici
```


### Solution 3

```cpp= 
Ensemble interEns(Ensemble a, Ensemble b){
    Ensemble intersection ; 
    ensVide(intersection) ; 
    ok att
    
    while(not estVide(a)){
        Object o = element(a);
        retire(a,o)
        if(estDans(b,o)){ 
        ajoute(intersection,o)
        }
    }
    return intersection;
}
//Code ici
```




7) 

### Solution 1
```cpp= 
void randEns(Ensemble &e, int n){
    ensVide(e);
    for(int i = 0; i < n; i++){
    do{
        Objet o; 
        randObj(o);
        }while(estDans(e,o))
        ajoute(e,o);
    }
}
//Code ici
```

### Solution 2 

      
```cpp=

void randomEns (int n, Ensemble &E) {
objet o; int i = 0;
ensVide(E);
    while (i <= n) {
        randomObj(o);
        if (estDans(E,o) == false) {
            ajoute(E,o) ; 
            i++;
        }
    }
}

```



## Exercice 2 

### Réalisation 1 

#### Stucture

```cpp=

const int MaxE = 100 ; 
struct Ensemble{

bool t[MaxE] ; 

};


```



```cpp=

bool estDans(Ensemble e, int o )

{
    return e.t[o];
}


```


```cpp=

void ensVide(Ensemble &e)

{
    for(int i=0; i<MaxE; i++){
        e.t[i]=false;
    }
}


```



```cpp=

void ajoute(Ensemble &e, int o)

{
    e.t[o]=true;
}

void retire(Ensemble &e, int o){
    e.t[o] = false;
}


```


### Réalisation 2 

#### Structure 


```cpp=
int MaxE=100;
struct Ensemble{
    int t[MaxE];
    int nbElements;
};

bool estDans(Ensemble e, int o){
    for (int i = 0; i < e.nbElements; i++){
        if (e.t[i] == o)
            return true;
    }
    return false;
}


void ensVide(Ensemble &e){
    e.nbElements = 0;
}


void ajoute(Ensemble &e, int o) {

    if (not estDans(e, o) and e.nbElements < MaxE){
        e.t[e.nbElements] = o;
        e.nbElements++;
    }


}

void retire(Ensemble &e, int o) {
    int indice = -1;
    for (int i = 0; i < e.nbElements; i++){
        if (e.t[i] == o)
            indice = i;
    }
    if (indice != -1){
        e.t[indice] = e.t[e.nbElements-1];
        e.nbElements--;
    }
}
```


### Réalisation 3 

```cpp=

int MaxE=100;
struct Ensemble{
    int t[MaxE];
    int nbElements;
};


void ensVide(Ensemble &e) {
e.nb = 0;
}

bool estDans(Ensemble e, int o){
    for (int i = 0; i < e.nbElements and  e.t[i]<=o; i++){
        if (e.t[i] == o)
            return true;
            
    }
    return false;
}


void ajoute(Ensemble &e, int o) {

if (not estDans(e, o) and e.nbElements < MaxE) 
{
    int i = 0;
    while( i < e.nbElements and e.t[i] < o) i++ ;
    
    if (i != e.nbElements) {
    for(int j = e.nb; j >= i+1; j--) {
        e.t[j] = e.t[j-1] ;
    }
e.t[i]= o ;
e.nbElements++ ;
}
}


void retire(Ensemble &e, int o) {
    int indice = -1;
    for (int i = 0; i < e.nbElements and e.t[i]<=o; i++){
        if (e.t[i] == o)
            indice = i;
    }
    
    if indice!=-1 
    {
    for(int j = indice; j < e.nbElements -1; j++)             e.t[j] = e.t[j+1] ;
    
    }
e.nb-- ;

}