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; }
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; }
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); }
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); }
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); }
//------------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); }
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; } } }