Advertisement
Ot_Motta

aula06_ex05

Mar 17th, 2020
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.95 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int uniao(int *v1, int *v2, int tam1, int tam2)
  5. {
  6.     int i, j;
  7.     //DETERMINANDO O TAMANHO DO VETOR 3
  8.     int tam3 = tam1+tam2;
  9.     //CRIAR O PONTEIRO QTDE EXIGIDO PELO ALGORITMO PARA RETORNAR A QTDE DE POSIÇÕES DO V3
  10.     int qtde = tam3;
  11.     //CRIAR O VETOR 3 E ALOCAR ESPAÇO DINAMICAMENTE
  12.     int *v3 = (int*)calloc(tam3,sizeof(int));
  13.     //O VETOR 3 RECEBE TODAS AS POSIÇÕES DE V1 E V2
  14.     for(i=0; i<tam1; i++)
  15.         v3[i] = v1[i];
  16.     for(i=0; i<tam2; i++)
  17.         v3[tam1+i] = v2[i];
  18.     //ORDENAR O VETOR CRESCENTEMENTE
  19.     int aux;
  20.     for(i=0; i<tam3; i++)
  21.     {
  22.         for(j=i+1; j<tam3; j++)
  23.         {
  24.             if(v3[i] > v3[j])
  25.             {
  26.                 aux   = v3[i];
  27.                 v3[i] = v3[j];
  28.                 v3[j] = aux;
  29.             }
  30.         }
  31.     }
  32.     //CAPTURAR OS ELEMENTOS QUE SE REPETEM E MARCÁ-LOS COM '-1'
  33.     aux = 0;
  34.     for (i=0; i<tam3; i++)
  35.     {
  36.         aux = v3[i];
  37.         if(aux == v3[i+1])
  38.         {
  39.             v3[i+1] = -1;
  40.             qtde--;
  41.         }
  42.     }
  43.     system("cls");
  44.     //MOSTRAR V1 E V2
  45.     if(tam1 == tam2)
  46.     {
  47.         printf("\n");
  48.         for(i=0; i<tam1; i++)
  49.             printf("POSICAO %d DE V1: %d  ||  POSICAO %d DE V2: %d\n", i+1, v1[i], i+1, v2[i]);
  50.     }
  51.     else
  52.     {
  53.         printf("\n");
  54.         for(i=0; i<tam1; i++)
  55.             printf("POSICAO %d DE V1: %d\n", i+1, v1[i]);
  56.         printf("\n");
  57.         for(i=0; i<tam2; i++)
  58.             printf("POSICAO %d DE V1: %d\n", i+1, v2[i]);
  59.     }
  60.     //MOSTRAR V3
  61.     printf("\n\n-----UNIAO DE V1 E V2 EM V3-----\n\n");
  62.     for(i=0; i<tam3; i++)
  63.     {
  64.         if(v3[i] != -1)
  65.             printf("POSICAO %d DE V3: %d\n", i+1, v3[i]);
  66.     }
  67.     //LIBERAR A MEMÓRIA DE V3
  68.     free(v3);
  69.     //RETORNAR A QTDE
  70.     return qtde;
  71. }
  72.  
  73. int main()
  74. {
  75.     //RECEBER OS TAMANHO DE V1 E V2
  76.     int max1, max2, i, resultado;
  77.     printf("\nINFORME A QTDE. DE POSICOES DE V1: ");
  78.     fflush(stdin);
  79.     scanf("%d", &max1);
  80.     printf("\nINFORME A QTDE. DE POSICOES DE V2: ");
  81.     fflush(stdin);
  82.     scanf("%d", &max2);
  83.     //CRIAR V1 E V2
  84.     int v1[max1];
  85.     int v2[max2];
  86.     //RECEBER AS POSIÇÕES DE V1
  87.     system("cls");
  88.     printf("\n----RECEBENDO AS POSICOES DE V1----\n\n");
  89.     for(i=0; i<max1; i++)
  90.     {
  91.         printf("INFORME A POSICAO[%d] DE V1: ", i+1);
  92.         fflush(stdin);
  93.         scanf("%d", &v1[i]);
  94.     }
  95.     //RECEBER AS POSIÇÕES DE V2
  96.     system("cls");
  97.     printf("\n----RECEBENDO AS POSICOES DE V2----\n\n");
  98.     for(i=0; i<max2; i++)
  99.     {
  100.         printf("INFORME A POSICAO[%d] DE V2: ", i+1);
  101.         fflush(stdin);
  102.         scanf("%d", &v2[i]);
  103.     }
  104.     //ENVIAR TODAS AS INFORMAÇÕES PARA A FUNÇÃO UNIÃO E RECEBER O VALOR DA QTDE. DE POSICOES
  105.     resultado = uniao(v1, v2, max1, max2);
  106.     //MOSTRAR A QTDE. FINAL DE POSIÇÕES DE V3
  107.     printf("\n\nQTDE. DE POSICOES DE V3: %d\n\n", resultado);
  108.  
  109.     return 0;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement