Jump to content

O Retorno dos Membros VIP Junte-se ao Clube

Obtenha destaque e desfrute os benefícios exclusivos para VIP.
Clique Aqui

Reporte bugs e nos ajude a melhorar!

Nos ajude a descobrir bugs! Além de melhorar a comunidade.
Reporte aqui!

Conheça a Lotérica e arrisque sua sorte!

Descubra o quão sortudo você pode ser.
Saiba mais
Notícia
  • Junte-se ao Clube de membros VIP!
  • Teste sua sorte em nossa loteria e concorra a uma fortuna de webcoins!
Sign in to follow this  
luis3232

Exercício de vetores ( União, soma, diferença.. )

Recommended Posts

Eai galera, faz um tempão que não posto nada aqui kkk, e hoje resolvi compartilhar um código que fiz pra um amigo meu da faculdade, que está estudando isso agora.

Só estou postando pra trazer um conteúdo pra essa área mesmo, já que hoje em dia pouca gente tem interesse em aprender mesmo, só pensam em hack hack hack.

 

Não liguem se tem algo que não está bonitinho, fiz meio rapidão, então pode ter coisa que pode ser simplificada.

 

O exercício consistia em basicamente digitar 2 vetores de tamanho 10, esses vetores não podiam possuir números repetidos ( apenas nele mesmo ), então mostrar os seguintes dados :

 

- União dos vetores ( juntar os dois vetores sem repetir os números ).

 

- Diferença ( o que possui no primeiro vetor que não possui no segundo ).

 

- Soma ( somar cada elemento do vetor na sua respectiva posição ).

 

- Produto ( fazer o produto de cada elemento do vetor na sua respectiva posição ).

 

- Intersecção ( mostrar quais números estão presentes em ambos os vetores ).

 

#include <stdlib.h>
#include <stdio.h>
#include <limits.h>

char * vet[2] = { "primeiro", "segundo" };

int matriz[2][10];

void Intersccao_Dos_Elementos()
{
   int cont = 0;
   int j, i, para, l = 0;

   for (i = 0; i < 10; i++)
   {
       para = 0;

       for (j = 0; j < 10; j++)
       {
           if (matriz[0][i] == matriz[1][j]) // verifica cada numero do vetor 2
               para = 1;
       }

       if (para == 1)
           cont++; // faz a contagem de quantos numeros se repetem nos dois vetores
   }

   int *Inter_Vetores = (int *)malloc(cont * sizeof(int)); // cria um vetor com o tamanho dos numeros que foram contados no loop acima

   for (i = 0; i < 10; i++)
   {
       para = 0;

       for (j = 0; j < 10; j++)
       {
           if (matriz[0][i] == matriz[1][j]) // verifica cada numero do vetor 2
               para = 1;
       }

       if (para == 1)
       {
           Inter_Vetores[l] = matriz[0][i]; // armazena ao vetor o valor do numero que se repete nos dois vetores
           l++;
       }
   }

   printf("\n\nInterseccao dos vetores : ");

   for (i = 0; i < cont; i++)
       printf("%d ", Inter_Vetores[i]);

   free(Inter_Vetores);
}

void Produto_Dos_Elementos()
{
   int Resultado[10] = {}, i;

   for (i = 0; i < 10; i++)
       Resultado[i] = matriz[0][i] * matriz[1][i];

   printf("\n\nO produto dos dois vetores : ");

   for (i = 0; i < 10; i++)
       printf("%d ", Resultado[i]);
}

void Somar_Todos_Elementos()
{
   int Resultado[10] = {}, i;

   for (i = 0; i < 10; i++)
       Resultado[i] = matriz[0][i] + matriz[1][i];

   printf("\n\nA soma dos dois vetores : ");

   for (i = 0; i < 10; i++)
       printf("%d ", Resultado[i]);
}

void Mostrar_Diferenca()
{
   int i, j, para;

   printf("\n\nA diferenca dos vetores : ");

   for (i = 0; i < 10; i++)
   {
       para = 0;

       for (j = 0; j < 10; j++)
           if (matriz[0][i] == matriz[1][j])
               para = 1;

       if (para == 0)
           printf("%d ", matriz[0][i]);
   }
}

void Mostrar_Uniao()
{
   int cont = 10, i, j, k, para, l = 0;

   int saux[2][20];

   for (i = 0; i < 10; i++)
       saux[0][i] = matriz[0][i];

   for (i = 0; i < 10; i++)
   {
       para = 0;

       for (j = 0; j < 10; j++)
           if (matriz[1][i] == saux[0][j]) // verifica cada numero do vetor 1
               para = 1;

       if (para == 0)
       {
           saux[1][i] = matriz[1][i];
           cont++;
       }
       else {
           saux[1][i] = INT_MAX; // aqui informa q o numero ja existe, entao atribui um valor pra ser usado mais a baixo, significa q esse valor n faz parte da uniao
       }
   }

   int *Uniao_Vetores = (int *)malloc((cont) * sizeof(int)); // cria um vetor com o tamanho dos numeros que formam a uniao

   for (k = 0; k < 2; k++)
       for (i = 0; i < 10; i++)
           if (saux[k][i] != INT_MAX) // caso seja diferente do valor atribuido, quer dizer q o numero faz parte da uniao
           {
               Uniao_Vetores[l] = saux[k][i];
               l++;
           }

   for (i = 0; i < cont; i++) // apenas coloca em ordem crescente os numeros do vetor da uniao
   {
       for (j = i + 1; j < cont; j++)
       {
           if (Uniao_Vetores[i] > Uniao_Vetores[j])
           {
               int temp = Uniao_Vetores[i];
               Uniao_Vetores[i] = Uniao_Vetores[j];
               Uniao_Vetores[j] = temp;
           }
       }
   }

   printf("\nA uniao dos vetores : ");

   for (i = 0; i < cont; i++)
       printf(" %d", Uniao_Vetores[i]);

   free(Uniao_Vetores);
}

void Mostrar_Matrizes_Armazenadas()
{
   int i, k;

   for (k = 0; k < 2; k++) // apenas mostrar as matrizes
   {
       printf("Vetor %d : ", k + 1);

       for (i = 0; i < 10; i++)
           printf("%d ", matriz[k][i]);

       printf("\n");
   }
}

void Armazenar_Valores()
{
   int i, j, k, para, aux[2][10];

   for (k = 0; k < 2; k++)
   {
       for (i = 0; i < 10; i++)
       {
           if (i != 0)
           {
               do {

                   para = 0;

                   printf("Entre com o termo %d do %s vetor : ", i + 1, vet[k]);
                   scanf("%d", &matriz[k][i]);

                   for (j = 0; j < i; j++)
                   {
                       if (matriz[k][i] == aux[k][j]) // se o numero digitado for um q ja existe, a variavel para recebe 1 e o loop vai continuar
                           para = 1;
                   }

               } while (para == 1);

               aux[k][i] = matriz[k][i];
               para = 0;
           }
           else {
               printf("Entre com o termo %d do %s vetor : ", i + 1, vet[k]); // como e o primeiro termo, nao tem como ele existir
               scanf("%d", &matriz[k][i]);
               aux[k][i] = matriz[k][i];
           }
       }

       printf("\n\n");
   }
}

int main()
{

   Armazenar_Valores();

   Mostrar_Matrizes_Armazenadas();

   Mostrar_Uniao();

   Mostrar_Diferenca();

   Somar_Todos_Elementos();

   Produto_Dos_Elementos();

   Intersccao_Dos_Elementos();

   return 1;
}

 

Bom, é isso ai galera, qualquer coisa só comentar.

Fui.

  • Like 4

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...