Jump to content

Exercicio: obter um vector, resultante da intersecção de outros dois vectores


_FRanKAtzI_
 Share

Recommended Posts

Boas, tenho um exercício para resolver e não sei como o fazer, dai que se me puderem ajudar eu agradeço!!

Bem o exercício é o seguinte:

- o utilizador terá que introduzir o tamanho e o conteúdo de 2 vectores A e B;

- estes poderão ter tamanhos diferentes, números repetidos e encontrarem-se desordenados;

- o vector © resultante da intersecção dos vectores (A e 😞 terá que estar ordenado e sem elementos repetidos.

Eu sou novato em programação, já fiz uma parte inicial do código, percebo e julgo que tenho bem delineado os passos a seguir para executar o exercício, o problema é implementar as idéias...

O código que tenho é o seguinte:

#include <iostream.h>
using namespace std;
int main() {
    int i,j,y;
    y=0;

    int n=4;
    int A[4]={1,2,3,4};                //numa primeira fase estou a trabalhar com os vectores definidos e ordenados...
    int B[4]={2,4,6,8};
    int C[]={};
    for(i=0; i<n; i++)                   //2                                 //4                                 //...
        for(j=0; j<n; j++)               //1     //2     //3     //4         //1     //2     //3     //4         //...
            if(B[i]==A[j]){              //2=1 F //2=2 V //2=3 F //2=4 F     //4=1 F //4=2 F //4=3 F //4=4 V     //...
                C[y]=B[i];                       //C[0]=2                                            //C[1]=4
                cout<<C[y]<<endl;        //So assim e que consigo ver que o programa esta a funcionar
                y++;                             //y=1                                               //y=2
             }
    cout<<endl<<"Vector da interseccao de A com B \n";
    //cout<<C<<endl;              //Nao sei como mostrar o conteudo do vector...
    return 0;
}

Bem, quem me puder dar uma ajudinha, eu desde já agradeço!!

😉

Força

João a.k.a. _FRanKAtzI_

Link to comment
Share on other sites

O problema mais grave que vejo aí é estares a declarar C como um array de 0 elementos, e de seguida vais escrever nele. Alguns compiladores, senão todos, e sendo o da Miscrosoft um exemplo, não permitem sequer a declaração de arrays de tamanho 0. A maneira mais fácil de resolver é declarares o array C com tamanho igual ao do maior dos arrays que vais intersectar, uma vez que este tamanho nunca será excedido.

Para teres o array C ordenado e sem repetições, de cada vez que vais inserir, percorres o vector C até encontrares um valor igual ou maior ao valor que queres inserir, e se o valor encontrado não for igual, copias os valores à direita dessa posição uma posição para a frente, e inseres o novo valor na posição correcta.

Se forem iguais, não fazes nada.

Para a tua dúvida de como mostrar o conteúdo de C, tens a resposta no teu código: copia o bloco de código do for interior, e remove todas as linhas menos a do cout, mudando, claro, a variável que serve de índice.

Desaparecido.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.