int main(){
	int n1, n2, i, *p;

	//Gera randomicamente o tamanho dos vetores
	n1 = rand() % MAX_ELEMENTOS;
	n2 = rand() % MAX_ELEMENTOS;

	//Vetores
	int v1[n1], v2[n2];

	//Preenche os vetores
	for(i=0;i<n1;i++){
		v1[i] = rand() % 10;
	}
	for(i=0;i<n2;i++){
		v2[i] = rand() % 10;
	}

	p = uniao(v1, n1, v2, n2);
	if(p == NULL){
		return 0;
	}
	

	for(i=0;i<(n1+n2);i++){
		printf("%d ", p[i]);
	}
	printf("\n");

	free(p);

	return 0;
}
Пример #2
0
int main(int argc, char **argv)
{
	no *n;
	lista *l;
	lista *l2;
	lista *l3;
	int i,k;
	l = criaLista();
	l2 = criaLista();
	l3 = criaLista();
	
	for(i = 1 ; i < 5 ; i++){
			n = criaNo(i);
			insereFim(l,n);
		}
	for(i = 2 ; i < 6 ; i++){
			n = criaNo(i);
			insereFim(l2,n);
		}
	printf("\n **lista ** \n");
	imprimeLista(l);
	
	printf("\n **lista 2** \n");
	imprimeLista(l2);
	
	printf("\n **uniao ** \n");
	uniao(l,l2,l3);
	imprimeLista(l3);
	liberaLista(l3);
	l3 = criaLista();
	
	printf("\n **intersecao ** \n");
	intersecao(l,l2,l3);
	imprimeLista(l3);
	
	k = pertence(l,l2);
	printf("\n \n 0 - NAO \n 1 - SIM \n");
	printf("pertence: %d \n",k);
	
	liberaLista(l);
	liberaLista(l2);
	liberaLista(l3);
	return 0;
}
Пример #3
0
int main(){

    int *vetor1,*vetor2,*vetor3;
    int n1,n2;
	int i ;
	printf(" Tamanho vetor 1 : \n");
	scanf("%d", &n1);
    vetor1 =(int*) malloc(n1*sizeof(int));

	if (!vetor1)
    {
        printf ("** Erro: Memoria Insuficiente **");
        exit(1);
    }
        printf(" Tamanho vetor 2 : \n");
        scanf("%d", &n2);

        vetor2 =(int*) malloc(n2*sizeof(int));

	if (!vetor2)
    {
        printf ("** Erro: Memoria Insuficiente **");
        exit(1);
    }

	printf(" Elemento vetor 1 : \n");
    inserirValores(n1,vetor1);

	printf("Elemento vetor 2 : \n");
	inserirValores(n2,vetor2);

	vetor3= uniao(vetor1,n1,vetor2,n2);

	printf("Vetor 3 : \n");
 	for (i = 0; i < (n1+n2); i++){
    	 printf("\nVetor : [%d] : %d",i+1,*vetor3);
         vetor3++;
 	}

free(vetor1);
free(vetor2);
free(vetor3);
}
Пример #4
0
int main(){
    int i, n1 = 30, n2 = 2, *vet3;
    int vet1[n1], vet2[n2];

    for(i=0; i<n1; i++){
        vet1[i] = 1;
    }
    for(i=0; i<n2; i++){
        vet2[i] = 2;
    }

    vet3 = (int *) uniao(vet1, n1, vet2, n2);

    printf("vet3 = [");
    for(i = 0; i < (n1+n2); i++){
        printf("%d, ", vet3[i]);
    }
    printf("]\n");

    free(vet3);
}
Пример #5
0
void main(){
	int *v1 = (int *) malloc(sizeof(int)),
		*v2 = (int *) malloc(sizeof(int)),
		*v3,
		n1=0, n2=0, n3;
	char lixo[10];

	printf("Digite o primeiro vetor:\n");
	while(scanf("%d",v1+n1)){
		n1++;
		v1 = (int *) realloc(v1,sizeof(int)*(n1+1));
	}
	scanf("%s",&lixo);
	printf("Digite o segundo vetor:\n");
	while(scanf("%d",v2+n2)){
		n2++;
		v2 = (int *) realloc(v2,sizeof(int)*(n2+1));
	}

	printf("\nPrimeiro Vetor:\n");
	for(int i=0; i<n1; i++){
		printf("%d\t\t%d\n", v1+i, *(v1+i));
	}

	printf("\nSegundo Vetor:\n");
	for(int i=0; i<n2; i++){
		printf("%d\t\t%d\n", v2+i, *(v2+i));
	}

	v3 = uniao(v1,n1,v2,n2);
	n3 = (n1+n2);
	printf("\nUniao:\n");
	for(int i=0; i<n3; i++){
		printf("%d\t\t%d\n", v3+i, *(v3+i));
	}
	free(v1);
	free(v2);
	free(v3);
}
Пример #6
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);

}
Пример #7
0
int main() {
    struct conjunto* C[10];
    int i;
    for( i = 0; i < 10; ++i )
        C[i] = criar_conjunto(); //cria os 10 conjuntos vazios
    //ou:
    //C[i] = NULL
    for( i = 0; i < 10; ++i )
        inicia_lista(C[i]);
    conjunto* c;
    char op;
    int c1,c2,c3;
    while( 1 ) {
        scanf("%c", &op);
        switch( op ) {
        case 'A':
            scanf("%d %d", &c1, &c2);
            inserir_elemento(C[c1-1],c2);
            break;
        case 'R':
            scanf("%d %d", &c1, &c2);
            remover_elemento(C[c1-1],c2);
            break;
        case 'L':
            scanf("%d", &c1);
            listar_elementos(C[c1-1]);
            break;
        case 'F':
            scanf("%d", &c1);
            deletar_conjunto(C[c1-1]);
            C[c1-1] = criar_conjunto();
            inicia_lista(C[c1-1]);
            break;
        case 'I':
            scanf("%d %d %d", &c1, &c2, &c3);
            c = intersecao(C[c1-1],C[c2-1]);
            deletar_conjunto(C[c3-1]);
            C[c3-1] = c;
            break;
        case 'U':
            scanf("%d %d %d", &c1, &c2, &c3);
            c = uniao(C[c1-1],C[c2-1]);
            deletar_conjunto(C[c3-1]);
            C[c3-1] = c;
            break;
        case 'P':
            scanf("%d %d", &c1, &c2);
            if(pertinencia(C[c1-1],c2))
                printf("S\n");
            else
                printf("N\n");
            break;
        case 'D':
            scanf("%d %d %d", &c1, &c2, &c3);
            c = diferenca(C[c1-1],C[c2-1]);
            deletar_conjunto(C[c3-1]);
            C[c3-1] = c;
            break;
        case 'C':
            scanf("%d %d", &c1, &c2);
            if(subconjunto(C[c1-1],C[c2-1]))
                printf("S\n");
            else
                printf("N\n");
            break;
        case '=':
            scanf("%d %d", &c1, &c2);
            if(igualdade(C[c1-1],C[c2-1]))
                printf("S\n");
            else
                printf("N\n");
            break;
        case '#':
            scanf("%d", &c1 );
            printf("%d\n", cardinalidade( C[c1-1]) );
            break;
        case 'X':
            for( i = 0; i < 10; ++i )
                deletar_conjunto(C[i]);
            bapply(bprint); //não modifique esta linha
            return 0;
        }

    }

}