// VIM: set expandtab ts=4 sw=4 ai
#include<stdio.h>

#define MAX_CARS	10
#define MAX_CONJUNTS	10

typedef struct {
    int num_cars;
    unsigned char car[MAX_CARS];
} t_conjunt;

typedef struct {
    int num_conjunts;
    t_conjunt con[MAX_CONJUNTS];
} t_vector_conjunts;

void main(){
    t_vector_conjunts v;
    int i, j, a, b;
    char c;
    int no_trobat;

    printf("Quants conjunts introduiras? ");
    scanf("%d", &v.num_conjunts);
    for (i=0;i<v.num_conjunts;i++) {
        printf("Quants elements te el conjunt %d? ", i);
        scanf("%d", &v.con[i].num_cars);
        for(j=0;j<v.con[i].num_cars;j++) {
            printf("Introdueix el caracter %d del conjunt %d: ", j, i);
            scanf("\n%c", &v.con[i].car[j]);
        }
    }
    do {
        printf("MENU:\n'm' mostrar tots\n'i' interseccio\n's' sortir\n");
        scanf("\n%c", &c);
        switch (c) {
            case 'm':
                printf("Tots els conjunts:\n");
                for (i=0;i<v.num_conjunts;i++) {
                    printf("\t- Conjunt %d:\n\t\t", i);
                    for (j=0;j<v.con[i].num_cars;j++) {
                        printf("%c ", v.con[i].car[j]);
                    }
                    printf("\n");
                }
                break;
            case 'i':
                printf("Introdueix els numeros del dos conjunts a intersectar: ");
                scanf("%d %d", &a, &b);
                for (i=0;i<v.con[a].num_cars;i++) {
                    no_trobat = 1;
                    for (j=0;no_trobat&&(j<v.con[b].num_cars);j++) {
                        if (v.con[a].car[i]==v.con[b].car[j]) {
                            printf("%c ", v.con[a].car[i]);
                            no_trobat = 0;
                        }
                    }
                }
                printf("\n");
                break;
            case 's':
                printf("Adeu\n");
                break;
            default:
                printf("Opcio incorrecta\n");
        }
    } while(c!='s');
}

