Ir ao conteúdo
  • Cadastre-se
luisfelip

Intercalar vetores de forma ordenada

Recommended Posts

Tenho que fazer um algoritmo que intercale dois vetores com o tamanho p1 e p2, receba os
p1 valores no vetor 1 e os p2 valores no vetor 2 e construa um terceiro vetor, com a intercalação dos
vetores 1 e 2 de forma ordenada. Dentro do mesmo vetor é garantido que o número n representado na linha p é menor que o número que está
em p+1 e maior que ou igual ao que está em p-1. 

exemplo:

Entrada
5
7
1
3
5
7
21
0
2
4
6
8
10
12
Saída
0
1
2
3
4
5
6
7
8
10
12
21

Fiz esse algoritmo, mas não está nem rodando:

#include <stdio.h>
int main(){
    int q1, q2, i, v1[1000005], v2[1000005], k;
    scanf("%i", &q1);
    scanf("%i", &q2);
    for(i=0; i<q1; i++){
        scanf("%i", &v1);
    }
    for(i=0; i<q2; i++){
        scanf("%i", &v2);
    }
    k=0;
    for(i=0; i<(q1+q2); i++){
        printf("%i\n", v1);
        printf("%i\n", v2[k]);
        k++;
    }
    return 0;
}
 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@luisfelip       coloque o código dentro da tag  code cujo botão é esse  <>  que está 

na barra de ferramentas da janela de postagem, clique nele e cole o código na janela

que aparece, pois assim é melhor para podermos copiar o código.  Nesse código que 

você fez você não colocou os números no vetor v1 e nem no v2, e precisa de um 

terceiro vetor o v3 para colocar os números não repetidos dos dois vetores, então é

preciso pegar os números de v1 e v2 e se o número não for repetido colocar em v3

que é o vetor de saída e então organizar o vetor v3 em ordem crescente,  depois

imprimir na tela.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@luisfelip    você quer que ele imprima os números em ordem, e que não tenha 

nenhum número repetido ? veja se esse código te serve .

#include <stdio.h>
int main(){
    int q1, q2, i, v1[1005], v2[1005],v3[2010],k;
    int h,j,m,g;
    i=0;q1=0;q2=0;
    while(q1!=1001){
    printf("digite um numero para o 1 vetor ou   1001 para terminar --> ");
      scanf("%i", &q1);
      if(q1!=1001){v1[i]=q1;i++;}
    }
    for(j=0;j<i;j++){
        v3[j]=v1[j];/*coloca os numeros de v1 em vetor v3*/
    }
    i=0;
    while(q2!=1001){
    printf("digite um numero para o 2 vetor ou   1001 para terminar --> ");
      scanf("%i", &q2);
      if(q2!=1001){v2[i]=q2;i++;}
    }
    for(m=0;m<i;m++){
        v3[j]=v2[m];  /*coloca os numeros de v2 em vetor v3*/
        j++;
    }
    g=0;
    for(m=0;m<j;m++){
        if(v3[m]==0){g=1;}/*se houver um ou mais zero no vetor */
    }
    for(i=0;i<j;i++){
        for(m=0;m<j;m++){
            if(i != m){             /*se nao é ele mesmo*/
                if(v3[i] == v3[m]){ /*se o numero repetiu*/
                    v3[m]=0;        /*deleta o numero*/
                }
            }
        }
    }
    printf("\naqui os numeros organizados --> ");
    for(i=0;i<j-1;i++){   /*organizar em ordem crescente*/
        for(m=i+1;m<j;m++){
            if( v3[i]>v3[m]){
                h=v3[i];
                v3[i]=v3[m];
                v3[m]=h;
            }
        }
    }
    if(g==1){   /*se havia um zero no vetor*/
        printf("0 ");  /*imprime o zero*/
    }
    for(i=0;i<j;i++){
        if(v3[i] != 0){
            printf("%d ",v3[i]);
        }

    }
    printf("\n\n");
    system("pause");
    return 0;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×