Ir ao conteúdo
  • Cadastre-se

Intercalar vetores de forma ordenada


luisfelip

Posts recomendados

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
Link para o comentário
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
Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...