Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int uniao(int *v1, int *v2, int tam1, int tam2)
- {
- int i, j;
- //DETERMINANDO O TAMANHO DO VETOR 3
- int tam3 = tam1+tam2;
- //CRIAR O PONTEIRO QTDE EXIGIDO PELO ALGORITMO PARA RETORNAR A QTDE DE POSIÇÕES DO V3
- int qtde = tam3;
- //CRIAR O VETOR 3 E ALOCAR ESPAÇO DINAMICAMENTE
- int *v3 = (int*)calloc(tam3,sizeof(int));
- //O VETOR 3 RECEBE TODAS AS POSIÇÕES DE V1 E V2
- for(i=0; i<tam1; i++)
- v3[i] = v1[i];
- for(i=0; i<tam2; i++)
- v3[tam1+i] = v2[i];
- //ORDENAR O VETOR CRESCENTEMENTE
- int aux;
- for(i=0; i<tam3; i++)
- {
- for(j=i+1; j<tam3; j++)
- {
- if(v3[i] > v3[j])
- {
- aux = v3[i];
- v3[i] = v3[j];
- v3[j] = aux;
- }
- }
- }
- //CAPTURAR OS ELEMENTOS QUE SE REPETEM E MARCÁ-LOS COM '-1'
- aux = 0;
- for (i=0; i<tam3; i++)
- {
- aux = v3[i];
- if(aux == v3[i+1])
- {
- v3[i+1] = -1;
- qtde--;
- }
- }
- system("cls");
- //MOSTRAR V1 E V2
- if(tam1 == tam2)
- {
- printf("\n");
- for(i=0; i<tam1; i++)
- printf("POSICAO %d DE V1: %d || POSICAO %d DE V2: %d\n", i+1, v1[i], i+1, v2[i]);
- }
- else
- {
- printf("\n");
- for(i=0; i<tam1; i++)
- printf("POSICAO %d DE V1: %d\n", i+1, v1[i]);
- printf("\n");
- for(i=0; i<tam2; i++)
- printf("POSICAO %d DE V1: %d\n", i+1, v2[i]);
- }
- //MOSTRAR V3
- printf("\n\n-----UNIAO DE V1 E V2 EM V3-----\n\n");
- for(i=0; i<tam3; i++)
- {
- if(v3[i] != -1)
- printf("POSICAO %d DE V3: %d\n", i+1, v3[i]);
- }
- //LIBERAR A MEMÓRIA DE V3
- free(v3);
- //RETORNAR A QTDE
- return qtde;
- }
- int main()
- {
- //RECEBER OS TAMANHO DE V1 E V2
- int max1, max2, i, resultado;
- printf("\nINFORME A QTDE. DE POSICOES DE V1: ");
- fflush(stdin);
- scanf("%d", &max1);
- printf("\nINFORME A QTDE. DE POSICOES DE V2: ");
- fflush(stdin);
- scanf("%d", &max2);
- //CRIAR V1 E V2
- int v1[max1];
- int v2[max2];
- //RECEBER AS POSIÇÕES DE V1
- system("cls");
- printf("\n----RECEBENDO AS POSICOES DE V1----\n\n");
- for(i=0; i<max1; i++)
- {
- printf("INFORME A POSICAO[%d] DE V1: ", i+1);
- fflush(stdin);
- scanf("%d", &v1[i]);
- }
- //RECEBER AS POSIÇÕES DE V2
- system("cls");
- printf("\n----RECEBENDO AS POSICOES DE V2----\n\n");
- for(i=0; i<max2; i++)
- {
- printf("INFORME A POSICAO[%d] DE V2: ", i+1);
- fflush(stdin);
- scanf("%d", &v2[i]);
- }
- //ENVIAR TODAS AS INFORMAÇÕES PARA A FUNÇÃO UNIÃO E RECEBER O VALOR DA QTDE. DE POSICOES
- resultado = uniao(v1, v2, max1, max2);
- //MOSTRAR A QTDE. FINAL DE POSIÇÕES DE V3
- printf("\n\nQTDE. DE POSICOES DE V3: %d\n\n", resultado);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement