Пример #1
0
int main(){
  int x[MAX], n = 0,  y[MAX], m = 0,  inter[MAX], tam_inter = 0;

  le_vetor(x, &n);
  le_vetor(y, &m);
  interseccao(x, n, y, m, inter, &tam_inter);
  imprime_vetor(inter, tam_inter);
  return 0;

}
Пример #2
0
//------------Classe Principal-------------
int main(){
    int menu, dado, i;
    listaconjunto *head = NULL, *tail, *conjuntoatual;
    /*
    Ponteiro do tipo listaconjunto para armazenarem:
    head - Primeiro conjunto criado. Indica conjunto inicio da fila;
    tail - Ultimo conjunto criado. Indica conjunto no final da fila;
    conjuntoatual - Manipulação;
    */

    do{
        printf("\nTrabalho_NP1\n\n1 - Adicionar Conjunto..\n2 - Excluir Conjunto..\n3 - Alterar conjunto..\n");
        printf("4 - Exibir Intersecção..\n5 - Exibir União..\n6 - Exibir Diferença\n0 - Sair\n");
        scanf("%d", &menu);
        printf("\033[H\033[J"); //Limpar Tela no Linux
        //system("cls");// Limpar tela no Windows

        switch (menu) {
            case 1: // Adicionar Conjunto
                if(head == NULL){ // Não há conjuntos criado;
                    conjuntoatual = adicionarconjunto(head);
                    head = conjuntoatual;
                    tail = head;

                    printf("\nPrimeiro conjunto criado!\n");
                    printf("Indice: %d\n", conjuntoatual->indice);

                }
                else{ // Um ou mais conjuntos criado;
                    conjuntoatual = adicionarconjunto(head);
                    tail = conjuntoatual;

                    printf("\nConjunto criado!\n");
                    printf("Indice: %d\n", conjuntoatual->indice);
                }
                break;

            case 2: // Excluir Conjunto
                if(head == NULL){
                    printf("Não existem conjuntos criados!\n");
                    break;
                }
                printf("\nQual conjunto deseja excluir?\n");

                for(i = 0; i <= tail->indice; i++){ // Loop para imprimir todos os conjuntos existentes
                    conjuntoatual = buscarconjunto(head, i);// Torna o conjuntoatual o de indice i;
                    if(conjuntoatual != NULL){
                      imprimirconjunto(conjuntoatual);//imprime conjuntoatual;
                    }
                }
                scanf("%d", &dado);

                conjuntoatual = buscarconjunto(head, dado); //Busca através dos índices qual o conjunto a ser excluido

                if(conjuntoatual == NULL){ // Verifica se o conjunto foi encontrado, se sim sai do case
                    printf("Conjunto não encontrado!\n");
                    break;
                }
                else{// se não, encontra qual o caso do ponterio e libera o espaço alocado para o conjunto selecionado
                    if(conjuntoatual->prox == NULL && conjuntoatual->ante == NULL){//Exclusão conjunto único
                        conjuntoatual = exclusaoconjunto(conjuntoatual);
                        head = NULL;
                        tail = head;
                        printf("1 - Exclusão feita com sucesso!\n");
                    }
                    else if(conjuntoatual->prox == NULL){//Exclusão ultimo conjunto
                        conjuntoatual = exclusaoconjunto(conjuntoatual);
                        tail = conjuntoatual;
                        printf("Ultimo conjunto excluido com sucesso!\n");
                    }
                    else if(conjuntoatual->ante == NULL){//Exclusão primeiro conjunto;
                         conjuntoatual = exclusaoconjunto(conjuntoatual);
                         head = conjuntoatual;
                         printf("Primeiro conjunto excluido com sucesso!\n");
                    }
                    else{//Exclusão conjunto qualquer
                         conjuntoatual = exclusaoconjunto(conjuntoatual);
                         printf("0 - Exclusão feita com sucesso!\n");
                    }
                }
                dado = 1;
                getchar();getchar();
                printf("\033[H\033[J");
                break;

            case 3:// Alterar conjunto
                for(i = 0; i <= tail->indice; i++){ // Loop para imprimir todos os conjuntos existentes
                    conjuntoatual = buscarconjunto(head, i);// Torna o conjuntoatual o de indice i;
                    if(conjuntoatual != NULL){
                      imprimirconjunto(conjuntoatual);//imprime conjuntoatual;
                    }
                }
                printf("\nQual conjunto deseja editar?\n");
                scanf("%d", &dado);

                conjuntoatual = buscarconjunto(head, dado);//Busca através dos índices qual o conjunto a ser editado
                if(conjuntoatual == NULL){ // Verifica se o conjunto foi encontrado
                    printf("Conjunto não encontrado\n");
                    break;
                }
                else{ // Permite a edição do conjunto com as opções incluir ou excluir elementos
                    do{
                        getchar(); getchar();
                        printf("\033[H\033[J");
                        printf("Edição do conjunto %d\n", conjuntoatual->indice);
                        printf("\n1- Incluir  2 - Excluir 0 - Parar edição\n");
                        scanf("%d", &dado);
                        switch(dado){
                            case 1:
                                imprimirconjunto(conjuntoatual);
                                printf("Novo dado: ");
                                scanf("%d", &dado);

                                dado = insercaoconjunto(conjuntoatual, dado);
                                if(dado == 0){
                                    printf("Elemento já existe no conjunto!\n");
                                }
                                dado = 1;
                                break;
                            case 2:
                                imprimirconjunto(conjuntoatual);
                                printf("Dado a remover: ");
                                scanf("%d", &dado);

                                dado = remocacoconjunto(conjuntoatual, dado);
                                if(dado == 0){
                                    printf("Elemento não existe no conjunto!\n");
                                }
                                dado = 1;
                                break;
                            case 0:
                                break;
                            default:
                                printf("Opcao invalida\n");
                                break;
                        }
                    }while(dado != 0);
                }
                break;
            case 4:
                if(head == NULL){
                    printf("Não existem conjuntos criados!\n");
                    break;
                }
                else if(interseccao(head) == 0){
                    printf("Existe apenas um conjunto criado!\n");
                }
                break;
            case 5:
                if(head == NULL){
                    printf("Não existem conjuntos criados!\n");
                    break;
                }
                else if(uniao(head) == 0){
                    printf("Existe apenas um conjunto criado!\n");
                }
                break;
            case 6:
                if(head == NULL){
                    printf("Não existem conjuntos criados!\n");
                    break;
                }
                else if(diferenca(head) == 0){
                    printf("Existe apenas um conjunto criado!\n");
                }
                break;

        }
    }while(menu != 0);

}