Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida sobre vetor


alex_dino

Pergunta

Tenho um exercicio que é de vetores, mais estou com um problema na hora de guarda os valores em um vetor....

Faça 1 programa para criar 2 vetores veta e vetb com 10 numeros inteiros cada e que estejam ordenados crescentemente. Após crie um terceiro vetor vetc também ordenado a partir dos vetores veta e vetb. Ao final do processo, mostre na tela os 3 vetores.

obs: Ao criar os vetores veta e vetb, considere que o usuário informará os valores em ordem.

Não é necessário testar condições para este procedimento no programa.

O vetc deve ser criado após a entrada de dados de veta e vetb e devera ser ordenado a partir da junção dos veta e vetb.

Eu fiz ele, mais na parte que tem que ordena está errado, o que devo fazer para que ele guarde certo os valores no vetor c?

# define TAMa 10
# define TAMb 10
# define TAMc 20

#include <stdio.h>
int main (void)
{
    int vetor_a[TAMa],vetor_b[TAMb],vetor_c[TAMc],i=0,cont,pos=0;
    
    for (cont=0;cont<TAMa;cont++)
    {
        printf ("Informe os numeros do vetor A ");
        scanf ("%d",&vetor_a[cont]);
    }
    for (i=0;i<TAMb;i++)
    {
        printf ("Informe os numeros do vetor B ");
        scanf ("%d",&vetor_b[i]);
    }
    
    for (pos=0;pos<TAMc;pos++)
    {
       if (vetor_a[cont]<vetor_b[i]){
           cont++;                          
           vetor_c[pos]=vetor_a[cont];
           
       }
       else{
              i++;
              vetor_c[pos]=vetor_b[i];
              
       }
    }
     for (cont=0;cont<TAMa;cont++)
    {
         printf ("vet a %d ",vetor_a[cont]);
    }
    for (i=0;i<TAMb;i++)
    {
         printf ("vet b %d ",vetor_b[i]);
    }
    for (pos=0;pos<TAMc;pos++)
    {
        printf ("vet c %d ",vetor_c[pos]);
    }
   
   
    system("pause");
    return (0);
}

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

Bom, já que você não vai precisar fazer cálculos, crie os vetores como char, assim o usuário digita eles direto. Exemplo:

A={0,1,2,3,4,5,6,7,8,9}

"Digite os valores do vetor a:

0123456789

"

Faça o mesmo pro vetor B, depois use a função, da biblioteca "<string.h>", "strcat(vetc,veta)" e "strcat(vetc,vetb)". Essa função pega o que tem no vetor A e junta no vetor C; depois pega o que tem no vetor B e junta no vetor C.

Depois você ordena por bubble sort.

Link para o comentário
Compartilhar em outros sites

  • 0

Pera.... esse que eu passei tah errado..... num rodo...

vou fazer um aquew... quando der certo, eu posto.

Tipo, tenta montar somente uma estrutura de repetição (for) pra receber os valores dos 2 vetores.

Exemplo:

for(i=0;i<10;i++)

{

printf("Digite o valor do vetor A para a posição %d", i+1); \\coloco o "%d" referindo-se ao "i" pra saber em que posição

scanf("%d", &veta); \\ está.Primeiro (1), depois 2.... até o 10.

printf("Digite o valor do vetor B para a posição %d", i+1);

scanf("%d", &vetb);

}

Editado por martinelliglster
Link para o comentário
Compartilhar em outros sites

  • 0

Acho que consegui resolver o seu exercício, que também era um problema meu.

#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
    char veta[10], vetb[10], vetc[20]="", aux;
    int i,j;
    clrscr();
    printf("Digite os valores do vetor A:\n");
    fflush(stdin);
    gets(veta);
    printf("Digite os valores do vetor B:\n");
    fflush(stdin);
    gets(vetb);
    strcpy(vetc,veta);
    strcat(vetc,vetb);

    for(i=0;vetc[i]!='';i++)
    {
        for(j=i;vetc[j]!='';j++)
        {
            if(vetc[i]>vetc[j])
            {
                aux=vetc[i];
                vetc[i]=vetc[j];
                vetc[j]=aux;
            }
        }
    }

    printf("\nA\n%s\nB\n%s\nC\n%s",veta,vetb,vetc);


    getche();
}

Espero ter ajudado. :D

Link para o comentário
Compartilhar em outros sites

  • 0

No meu caso, na estrutura que eu fiz, não estou pecando nesta parte?

for (pos=0;pos<TAMc;pos++)
    {
       if (vetor_a[cont]<vetor_b[i]){
           cont++;                          
           vetor_c[pos]=vetor_a[cont];
           
       }
       else{
              i++;
              vetor_c[pos]=vetor_b[i];
              
       }
    }

Link para o comentário
Compartilhar em outros sites

  • 0

você não conseguiu compilar no Dev C++ porque esse código fiz no Turbo C, mas são só algumas pequenas alterações.

#include<stdio.h>
#include<conio.h>
#include<string.h>
main(){
    char veta[10], vetb[10], vetc[20]="", aux;
    int i,j;
    printf("Digite os valores do vetor A:\n");
    fflush(stdin);
    gets(veta);
    printf("Digite os valores do vetor B:\n");
    fflush(stdin);
    gets(vetb);
    strcpy(vetc,veta);
    strcat(vetc,vetb);

    for(i=0;vetc[i]!='';i++)
    {
        for(j=i;vetc[j]!='';j++)
        {
            if(vetc[i]>vetc[j])
            {
                aux=vetc[i];
                vetc[i]=vetc[j];
                vetc[j]=aux;
            }
        }
    }

    printf("\nA\n%s\nB\n%s\nC\n%s",veta,vetb,vetc);


    getch();
}

Quanto ao código... tente sempre deixá-lo o mais simples possível.

Link para o comentário
Compartilhar em outros sites

  • 0

Não entendi o que você tentou fazer aki.

for (pos=0;pos<TAMc;pos++)
    {
       if (vetor_a[cont]<vetor_b[i]){
           cont++;                          
           vetor_c[pos]=vetor_a[cont];
          
       }
       else{
              i++;
              vetor_c[pos]=vetor_b[i];
              
       }
    }

Link para o comentário
Compartilhar em outros sites

  • 0

Nesse for estava tentando guarda os numeros em ordem crescente usando o if e o else, mais não deu certo porque acho que ele guarda o valor mais depois ele pega outro numero e aloca aonde estava o primeiro....

Como se pode fazer para ele guardar no vetor c em ordem crescente os valores do vetor a e b???

Link para o comentário
Compartilhar em outros sites

  • 0

A sua dúvida é como fazer a troca de posição.

É assim

for(i=0;vetc[i]!='';i++) 
  {
    for(j=i;vetc[j]!='';j++)
    {
      if(vetc[i]>vetc[j])
      {
        aux=vetc[i];
        vetc[i]=vetc[j];
        vetc[j]=aux;
       }
    }
  }
Se foi essa a dúvida... tah aew! Explicando melhor. Assim... o Vetor C não foi iniciado, porém ele já tem um tamanho pré determinado.... ele começa com um valor lixo... qualquer caracter em cada posição. então... quando você declara o vetor C deve dizer o que ele contem, pra depois adicionar os outros dois. Nesta caso ele tem que ser vazio. você faz isso dessa forma:
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{
  char vet[20]="";
  getch();
}
Depois você tem que preencher os vetores A e B. Vou preenchê-los do jeito que falei no exemplo do A
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{
  char veta[10], vetb[10], vet[5]="";
  
  printf("Digite os valores do vetor A:\n");
  fflush(stdin);     \\ Esse comando zera o buffer do teclado
  gets(veta);       \\ esse tem a mesma função do scanf, ele armazena os valores digitados na variavel.
  
  printf("Digite os valores do vetor B:\n");
  fflush(stdin);
  gets(vetb);
  getch();
}
Depois de feito o "zeramento" do vetor C, você copia o vetor A nele. Para isso, você faz assim:
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{
  char veta[10], vetb[10], vet[5]="";
  printf("Digite os valores do vetor A:\n");
  fflush(stdin);  
  gets(veta);    
  
  printf("Digite os valores do vetor B:\n");
  fflush(stdin);
  gets(vetb);

  strcpy(vetc,veta);   \\este comando "strcpy" copia o valor da string "2" (veta) na string "1"  (vetc)
  getch();
}
Com isso, depois ter copiado o valor do vetor A em C, você deve adicinar o vetor B em C.
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{
  char veta[10], vetb[10], vet[5]="";
  printf("Digite os valores do vetor A:\n");
  fflush(stdin);  
  gets(veta);    
  
  printf("Digite os valores do vetor B:\n");
  fflush(stdin);
  gets(vetb);

  strcpy(vetc,veta);

  strcat(vetc,vetb);  \\ Este comando "strcat" copia a string "2" (vetb) no final da string "1" (vetc)
  getch();
}
Depois que foi feito isso... é só aplicar o método bolha no vetor C, para organizar seus caracteres de em ordem crescente.
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{
  char veta[10], vetb[10], vet[5]="";
  int i, j, aux;

  printf("Digite os valores do vetor A:\n");
  fflush(stdin);  
  gets(veta);    
  
  printf("Digite os valores do vetor B:\n");
  fflush(stdin);
  gets(vetb);

  strcpy(vetc,veta);
  strcat(vetc,vetb);
  
  for(i=0;vetc[i]!='';i++) \\ Aki... colocamos a condição "vetc[i]!=''" (vetc [na posição i] diferente de 'vazio')
  {
    for(j=i;vetc[j]!='';j++)
    {
      if(vetc[i]>vetc[j])
      {
        aux=vetc[i];
        vetc[i]=vetc[j];
        vetc[j]=aux;
       }
    }
  }

  getch();
}
Por fim... é só exibir os vetores.
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{
  char veta[10], vetb[10], vet[5]="";
  int i, j, aux;

  printf("Digite os valores do vetor A:\n");
  fflush(stdin);  
  gets(veta);    
  
  printf("Digite os valores do vetor B:\n");
  fflush(stdin);
  gets(vetb);

  strcpy(vetc,veta);
  strcat(vetc,vetb);
  
  for(i=0;vetc[i]!='';i++) 
  {
    for(j=i;vetc[j]!='';j++)
    {
      if(vetc[i]>vetc[j])
      {
        aux=vetc[i];
        vetc[i]=vetc[j];
        vetc[j]=aux;
       }
    }
  }
  
  printf("\nA \n%s \nB \n%s \nC \n%s", veta, vetb, vetc);
  getch();
}
Acho que agora dá pra entender... Concluindo.. a sua dúvida era como fazer a troca de posição. É assim
for(i=0;vetc[i]!='';i++) 
  {
    for(j=i;vetc[j]!='';j++)
    {
      if(vetc[i]>vetc[j])
      {
        aux=vetc[i];
        vetc[i]=vetc[j];
        vetc[j]=aux;
       }
    }
  }

Se foi essa a dúvida... tah aew!

Editado por martinelliglster
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...