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

Duvida em pesquisa de vetor


†™MenoR¥RoX™†

Pergunta

Bom não estou conseguindo bolar uma logica para a a seguinte questão:

preciso pesquisar se um numero apresentado pelo usuario existe dentro de um vetor. se existir retorno com o numero e a posição que ele se encontra. se não informar que não existe.

já pensei em diversas logicas mas não ta dando certo.

se alguém me ajudar desde já agradesço.

att,

Marcelo Wagner

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Faz assim:

int i, num;

scanf(" %d", &num);

for(i = 0; i<TAM; i++) //onde TAM é o tamanho do vetor
    if(vet[i] == num)
         break;

if(i == TAM)
   printf("Numero não existe no vetor!\n");

else
  printf("Numero: %d\nIndice: %d\n", num, i);

Espero ter ajudado =)

Link para o comentário
Compartilhar em outros sites

  • 0

cara funcionou perfeitamente muito obrigado...

só não entendi o funcionamento!!!

minha logica tava parecida eu so não sabia onde incaixar o "valor invalido" pois se eu o colocasse dentro do laço for ele iria repetir todas a vezes q desse o loop.

mas brigadão vlw mesmo!!!!

att,

Marcelo Wagner

Link para o comentário
Compartilhar em outros sites

  • 0

O funcionamento é simple.

No loop o vetor é percorrido posição por posição, caso o conteúdo de uma das posições for igual ao numero fornecido ele sai do loop com o comando break. Quando ele sair do loop estará na posição em que apareceu o numero, com isso você tem o indice de localização desse para informar e de quebra o numero. Caso ele percorra todo o vetor e não ache o numero de entrada o valor de i será igual ao tamanho do vetor, pois o loop não será interrompido.

Espero que tenha entedido a logica agora =)

Link para o comentário
Compartilhar em outros sites

  • 0

sim sim intendi...vlw mesmo

o programa todo ficou assim:

/*1- a) efetuar a leitura de 20 valores inteiros para um vetor A.
b) Após leitura construir uma segundo vetor, que pode ser chamado de R, que contera os valos de A acrescido de 5 antes de ser armazenado em R.
c) Ordenar os elementos de R em ordem decrescente.
d) Montar uma rotina de pesquisa sequencial para pesquisar os elementos armazenados em R, sendo que o valor de pesquisa será informado pelo usuario. A pesquisa deve continuar até que o valor digitado para pesquisa seja igual a 0 ( zero ) ou então o numero de execuções da pesquisa seja igual a 20. Se o valor informado pelo usuário for encontrado retornar uma mensagem indicando que foi encontrado e a posição em que estava no vetor. Se o valo informado não foi encontrado apenas retornar uma mensagem ao usuario comunicando o fato.

Nome: Marcelo Wagner Viana da Silva 
Matricula: 08-22284
Turma: 1611B - Noturno - Sistemas de informação
Prof: Danilo / Fabiane*/

#include <conio.h>
#include <stdio.h>

int i,num, j, cont, aux;

int a[20], r[20];

main ()
{
     printf ("\n                       EXERCICIO I \n\n\n");
     printf("\nPreenchendo Valores do Vetor A:\n\n");
     for (i=0; i<20; i++)
     {
         printf ("valor %d: ", i+1); 
         scanf ("%d",&a[i]);
     }
         for (i=0; i<20; i++)
         {
             r [i] = a [i]+5;
         }
             for (i=0; i<21;i++)
             {
                 for (j=i+1; j<20; j++)
                     {
                               if ( r[i]<r[j] )
                               {
                                    aux=r[i];
                                    r[i]=r[j];
                                    r[j]=aux;
                               }
                     }
             }
                            /* printf ("\n\nos valors de R são: \n");
            for (i=0; i<20; i++)
             {
                 printf ("\nValor %d: %d ", i+1, r[i]);
                 }*/
printf("\n\nPESQUISA SEQUENCIAL: \n ");
    cont=0;
    do
    {
        printf("\ndigite o numero  que deseja pesquisar: ");
        scanf ("%d",&num);
        if (num==0)
        {
                   return 0;
        }
        for(i = 0; i<20; i++)
        {
              if(r[i]==num)
              {
                      break;
              }
        }

         if(i==20)
         {
              printf("\nNumero não encontrado por favor digite outro numero!\n");
         }
         else
         {
             printf("\nO numero %d esta no indice  %d do vetor\n", num, i+1);
         }
       cont=cont+1;
    }   
     while (cont <=19);
     
      getch();    
  
      return 0;

}

Link para o comentário
Compartilhar em outros sites

  • 0

Uma dica legal, reparei que você usa muito o numero 20 no seu programa, ela q dertemina o tamanho dos vetores. Já pensou se tivesse q mudar este tamanho? Teria q procurar o numero 20 e substitui-lo no codigo todo.

Para facilitar a manutenção do codigo constuma-se fazer:

#define TAM 20

Assim quando você quiser usar o numero 20 você usa a constante, e quando você quiser alterar o valor é só alterar no define =)

No restante tá bom seu codigo, você poderia omitir as chaves dos blocos com apenas uma instrução tb, eu acho q o código fica mais limpo, mas se você for iniciante e se ficar melhor para você entender é bom continuar fazendo assim com a prática você acaba não colocando as chaves...

Espero ter ajudado =)

Link para o comentário
Compartilhar em outros sites

  • 0

O define você pode colocar em qualquer lugar porém ele somente será válido após a declaração. Assim ele normalmente é colocado logo no início, antes de qualquer código.

Outra coisa: seu vetor tem 20 posições mas tem um for que vai até 21. Lembre-se que um vetor de 20 posições terá como índices válidos os números entre 0 e 19. Acessando além do vetor não é checado pelo compilador e pode causar sérios problemas! No seu caso só não há problema pois quando o i for 20 não entrará no segundo for.

Tome sempre cuidado com isso pois este é um dos erros mais comuns e mais difíceis de serem identificados.

Outra coisa que eu percebi é que você utiliza a comparação i<20 em todo o programa e no while é utilizado i<=19. Não há problema algum com isso mas utilizar várias formas de comparação diferentes durante o código pode confundir...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Bruna Eller

Olá!

Estou com o mesmo problema, só q em Pascal, não entendo da linguagem utilizada para resposta aqui no tópico (estou no 1º período...).

Pode me ajudar também?

Obrigada!

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,2k
    • Posts
      652k
×
×
  • Criar Novo...