• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

_FRanKAtzI_

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

2 mensagens neste tópico

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_

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora