Ir ao conteúdo
  • Cadastre-se

C++ pesquisa e armazenamento em vetores.


Ceifador1998

Posts recomendados

preciso fazer um programa que armazena 50 números e depois eu possa pesquisá-los e o programa deve dizer em que vetor o numero foi armazenado e quando digitar zero sair do programa, e na hora de pesquisar se o numero digitado não foi armazenado antes em um vetor deve aparecer uma mensagem de erro.

exemplo:

50<enter>

70<enter>

14<enter>

0<enter>

\\\\\\\\\\

14<enter>

posição no vetor: 2

60<enter>

ERRO: Número não encontrado

 

fiz somente a primeira parte mas não consigo e não entendo como fazer o resto.

 

#include <stdio.h>
#include <stdlib.h>
main()
{
    int numeros[50];
    int i;
    int x,y, par=0;
    
    for  (i=0;i<50;i++)
    {
        printf("digite um numero:\n");
        scanf("%d",&numeros);
    }
}

 

Link para o comentário
Compartilhar em outros sites

@Ceifador1998 Então, observe a lógica, você primeiro deve preencher os números no vetor, isso você ja fez no primeiro for:


    for  (i=0;i<50;i++)
    {
        printf("digite um numero:\n");
        scanf("%d",&numeros[i]);
    }

Agora perceba que você pede os números e eles são armazenados direto no vetor, não há um auxiliar, e o for é usado apenas para selecionar o índice do vetor.

 

 

Para a função de busca, é necessário usar um loop, seja while, do...while, for. 

Dentro desse loop será feito a ENTRADA do numero a ser encontrado.

Depois que é feito a parte de entrada do numero, use um for, igual esse ai em cima, e um if para verificar se o número da ENTRADA  está no vetor com o indice i, ai apenas imprima a mensagem: printf("posicao no vetor: %d", i);  

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

eu não entendo muito de programação. mas estou tentando. procurei programas parecidos na internet e montei esse mas não sei como fazer corretamente.

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int x,y, par=0;
    int i;
    char numeros;

  for (i=0;i<=4;i++)
  {
       printf("Digite um numero: ");
      scanf("%d",&numeros);
  }
   printf("Digite o valor que deseja procurar no vetor: ");
   scanf("%d",&x);
   
    for (i=0; i<5; i++)
    {
      printf("Valor do elemento %d da string = %c\n",i, numeros);
    }
   return (0);
 }

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

agora, Ceifador1998 disse:

eu não entendo muito de programação. mas estou tentando. procurei programas parecidos na internet e montei esse mas não sei como fazer corretamente.

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int x,y, par=0;
    int i;
    char numeros;

  for (i=0;i<=4;i++)
  {
       printf("Digite um numero: ");
      scanf("%d",&numeros);
  }
   printf("Digite o valor que deseja procurar no vetor: ");
   scanf("%d",&x);
   
    for (i=0; i<5; i++)
    {
      printf("Valor do elemento %d da string = %c\n",i, numeros);
    }
   return (0);
 }

No seu código tem um problema, cada número está sendo salvo na variável numeros, porém, ela não é um vetor e por causa disso a cada leitura do número, o valor antigo é perdido. Você poderia fazer também utilizando char, mas nesse caso é desnecessário porque está trabalhando com números inteiros.

 

Crie um vetor inteiro para receber os números e faça a seguinte alteração no primeiro loop:

int numeros[5];
    for (i=0;i<=4;i++)
    {
        printf("Digite um numero: ");
        scanf("%d",&numeros[i]);
    }

Para buscar a posição do vetor que tem o mesmo valor que o inserido para busca, você terá que criar novamente um loop mas com um if dentro para verificar se o valor do vetor é igual ao valor inserido, se sim, ele deverá ser mostrado na tela.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @Ceifador1998.

 

25 minutos atrás, Ceifador1998 disse:

a unica parte que não faço ideia é de como buscar o numero e em que vetor ele foi armazenado

Poste seu código atual sem a busca para revisarmos... deixe o código funcionando certinho... após passamos para esse requisito de "buscar".

 

 

26 minutos atrás, Ceifador1998 disse:

se alguém poder me mandar só essa parte eu termino meu programa, obrigado pela ajuda!

Esse não é o propósito do fórum... você mesmo é/será capaz de desenvolver.

 

 

No aguardo.

 

 

Link para o comentário
Compartilhar em outros sites

ta ai!, acho que o proximo desafio vai ser a parte de digitar o numero 0 para sair do programa mas na hora de digitar os 50 números o 0 pode ser aceito! talvez tenha que colocar essa parte dos 50 números isolado do resto e no final usar o while.

#include <stdio.h>
#include <stdlib.h>
main() {
    int numeros[5], i, buscar, erro=0;
    
    for (i=0;i<=4;i++)
    {
        printf("Digite um numero %i: \n",i);
        scanf("%i",&numeros[i]);
    }
    
    printf("Digite o valor a ser procurado:\n");
    scanf("%i",&buscar);
    for(i=0;i<4;i++)
    {
        if(buscar==numeros[5])
        {
            printf("o valor %i se encontra na posicao %i",buscar,i);
        }
        else (erro=erro+1);
    }	
    if(erro==5)
    {
        printf("o numero solicitado nao existe!\n");
    }
} 

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @Ceifador1998.

 

1) USADO DA TAG CODE

Importante, favor ler tópico abaixo:

 

 

 

2) CADASTRO E BUSCA DE NÚMEROS

4 horas atrás, Ceifador1998 disse:

ta ai

Seu código não está funcionando.

 

Exemplo:

teste_codigo.jpg

 

Não me foi informado em que posição está. Parece-me que a parte do cadastro está funcionando certo, ou seja, o que não está funcionando é a parte da busca. É necessário corrigir... faça alguns testes até ficar pronto. Se tiver dúvidas, tenta se virar... se não conseguir, posta onde precisa de ajuda.

 

 

 

 

 

 

5) IMPLEMENTAÇÃO DO WHILE

Pelo visto o for está funcionado. Logo, é necessário antes corrigir a busca. Após, tente implementar o while.

 

4 horas atrás, Ceifador1998 disse:

acho que o proximo desafio vai ser a parte de digitar o numero 0 para sair do programa mas na hora de digitar os 50 números o 0 pode ser aceito!

Então, qual as condições para o while continuar repetindo?  basicamente são duas: "o número digitado não ser 0" E "a quantidade de números já digitados ser menor que 50". (se o número foi 0, então o usuário não quer cadastrar mais. Se tem já tem 50 números, então o vetor estará cheio e não pode cadastrar mais).

 

Lembrando: primeiro corrige a busca. Não tente fazer as duas coisas ao mesmo tempo.

 

 

 

***

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

aparentemente com as correções solicitadas agora a parte de buscar esta funcionando perfeitamente!:tw_glasses:

enquanto a parte do while eu coloquei dentro do segundo comando de repetição pois como dito antes quando pedir os vetores pode-se digitar o zero mas depois se digitar ele tem que sair do programa, tentei de varias formas e sempre davam erros então usei o comando goto para sair da repetição e dar um system("pause"); talvez tenha formas mais praticas mas como funcionou está tudo certo afinal o principal é o programa funcionar e eu entender seu funcionamento!

obrigado pela ajuda!:thumbsup:

 

 

 

#include <stdio.h>
#include <stdlib.h>
main()
{
    int numeros[5],i,buscar,erro=0;
    
    for (i=0;i<5;i++)
    {
        printf("Digite um numero %i: \n",i);
        scanf("%i",&numeros);
    }
    printf("digite o valor a ser procurado:\n");
    scanf("%i",&buscar);
    for(i=0;i<5;i++)
    {
        if(buscar==numeros)
        {
            printf("o valor %i se encontra na posicao %i",buscar,i);
        }
        else
        {
            erro=erro+1;
        }
        while(buscar==0)
        {
        goto fim;
        }
     }
    if(erro==5)
    {
         printf("\n o numero solicitado nao existe\n");
    }
    else{}
    fim:
    system("pause");
    getchar();
}

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!