2
respostas

[Dúvida] 'Vetores em C '

Faça um programa que lê os conteúdos de dois vetores de 10 posições contendo números inteiros ordenados (já os receba ordenados – apenas teste isso antes de resolver o problema a seguir) e encontre a união (conjuntos) destes dois vetores.

Minha dúvida: como receber ordenados e como encontrar a união (conjunto) dos vetores


#include <stdio.h>

int main()
{
    int V1[10], V2[10], i;

    //ler valores para o vetor 1
    for (i = 0 ; i < 9; i++) {
        scanf("%i", &V1[i]);
}


    //ler valores para o vetor 2
    for (i = 0 ; i < 9; i++) {
        scanf("%i", &V2[i]);

    }
    //mostra valores para o vetor 1
    for (i = 0 ; i < 9; i++) {
        printf("%i ", V1[i]);
    }
        printf("\n");

    //mostra valores para o vetor 2
    for (i = 0 ; i < 9; i++) {
        printf("%i ", V2[i]);
    }

    return 0; 
}
2 respostas
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "");

    int v1[10], v2[10], u[20], x, y;

    for(x=0;x<10;x++) //Leitura do vetor 1.
    {   printf("Digite o valor %i do vetor 1:\n",x+1);
        scanf("%i",&v1[x]);
        u[x]=v1[x];

}

    for(x=0;x<10;x++) //Leitura do vetor 2.
    {   printf("Digite o valor %i vetor 2: \n",x+1);
        scanf("%i",&v2[x]);
        u[x+10]=v2[x];
    }

    for(x=0;x<20;x++) //Ordenar comando.
    {
        for(y=x+1;y<20;y++)
        {
            if(u[x]==u[y]) {u[y]=0;} else {}
        }
    }

    printf("\nMostrando a união:\n");
        for(x=0;x<20;x++) //Exibir ordenado.
    {
        if(u[x]!=0) {printf("\nConjunto da união entre Vetor 1 e Vetor 2: %i",u[x]);} else {}
    }

    return(0);
}

Olá, William!

Para receber os vetores já ordenados, você pode simplesmente atribuir os valores diretamente aos vetores V1 e V2 no código. Como você mencionou que os vetores já estão ordenados, não há necessidade de fazer a ordenação no programa.

Quanto à união dos vetores, você pode criar um terceiro vetor para armazenar os elementos dos dois vetores originais, sem repetições. Para isso, você pode percorrer os vetores V1 e V2 e adicionar os elementos ao novo vetor apenas se eles não estiverem presentes nele.

Aqui está um exemplo de como você pode fazer isso:

#include <stdio.h>

int main()
{
    int V1[10], V2[10], V3[20], i, j, k;
    int tamV3 = 0;

    // ler valores para o vetor 1
    for (i = 0; i < 10; i++) {
        scanf("%i", &V1[i]);
    }

    // ler valores para o vetor 2
    for (i = 0; i < 10; i++) {
        scanf("%i", &V2[i]);
    }

    // encontrar a união dos vetores
    for (i = 0; i < 10; i++) {
        // adicionar elemento do vetor 1 ao vetor 3 se não estiver presente
        int repetido = 0;
        for (j = 0; j < tamV3; j++) {
            if (V1[i] == V3[j]) {
                repetido = 1;
                break;
            }
        }
        if (!repetido) {
            V3[tamV3] = V1[i];
            tamV3++;
        }

        // adicionar elemento do vetor 2 ao vetor 3 se não estiver presente
        repetido = 0;
        for (j = 0; j < tamV3; j++) {
            if (V2[i] == V3[j]) {
                repetido = 1;
                break;
            }
        }
        if (!repetido) {
            V3[tamV3] = V2[i];
            tamV3++;
        }
    }

    // mostrar a união dos vetores
    for (i = 0; i < tamV3; i++) {
        printf("%i ", V3[i]);
    }
    printf("\n");

    return 0;
}

Espero ter ajudado e bons estudos!