Pular para o conteúdo

Pesquisar número num vector em C

Dica publicada em C/C++ / Introdução
Perfil removido removido
Hits: 37.376 Categoria: C/C++ Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Pesquisar número num vector em C

Esta é uma dica para ajudar a encontrar um inteiro num vetor, indicando depois a posição desse número no vetor.

#include<stdio.h>

int main()
{

int vec[5],i,x;
printf("\n nº a procurar no vector: ");
//inserir o nº a procurar no vector
scanf("%d",&x);
//ler vector
for(i=1;i<=5;i++)
scanf("%d",&vec[i]);

i=1;
//encontrar a posição de x no vector v
while(vec[i]!=x)
i++;
//mostrar a posição
printf("\nencontrado na pos %d",i);

return 0;
}
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Para compilar basta guardar o código num arquivo e fazer:

$ cc nome_ficherio.c -o nome_executável

Espero que gostem *

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Nova versão do sshtrix liberada! Mais uma ferramenta para Brute force

Instalando Google Chrome no Debian 13

Mudando encoding do Postgres 8.4 para LATIN1

Adicionar repositório Flatpak do Fedora em outras distribuições

Instalando Manjaro Linux

Compilando no Code::Blocks

Fatorial usando recursividade

Sobrecarregamento de operadores

Pressionar tecla e não precisar pressionar ENTER

Instalação do editor xwpe - Debian

#1 Comentário enviado por HelioCampos em 14/11/2007 - 10:26h
1º) Se não me engano, o vetor tem 5 posições, de 0 à 4, então esse seu programa vai dar erro quando chegar a i=5

2º) Foi pra esses casos que o comando "for" foi inventado.
for ( i = 0; vec[i]!=x; i++);

3º) Se o número que a pessoa digitar não existir no vetor, o programa vai dar erro sempre pois você nunca verifica se o i é menor que o índice máximo do vetor.
Assim, um jeito melhor de apresentar o programa seria:
// Procurando o valor no vetor.
for ( i = 0; vec[i]!=x && i < 5; i++);
// Imprimindo a posição se o valor existir.
if ( i == 5 )
printf("O valor não existe no vetor.\n");
else
printf("\nencontrado na pos %d",i);
#2 Comentário enviado por albertguedes em 27/12/2007 - 22:40h
Realmente tem que se verificar os programas antes de publica-los Joana.
Mas pelo menos você está tentando. Continue assim.
#3 Comentário enviado por Steve em 17/05/2018 - 18:20h
Ela só precisaria melhorar o While!
#4 Comentário enviado por Steve em 17/05/2018 - 18:44h
Mas se for para contribuir, o que ela poderia fazer mantendo o código dela sem mecher seria somente uma correção no while. Eu considero o if abaixo informado apenas porque comentaram de ter uma resposta, mas dentro do que ela publicou era informação, logo, não considero como crítica a falta do if .

Do contrário, o programa inteiro teria que ser mudado para checar um monte de condições do usuário e deixaria de ser um simples exemplo, porque teria que verificar se a pessoa digitou números, consertar a captura do comando scanf e etc...

De qualquer forma acho que o exemplo da Joana está bom, considerando apenas a correção do while.

i = 0;
while(vec[i] != x && i < 5) //encontrar a posição de x no vector v
i++;
if (vec[i] == x)
printf("Encontrado na posicao %d\n",i); //mostrar a posição
else
printf("Nao Encontrado\n");
#5 Comentário enviado por Heitor.rj em 28/02/2019 - 23:16h
Existem erros, mas a iniciativa é válida. Vamos então corrigir definitivamente os erros encontrados aqui para Joana Silva.

DICA: Coloque os códigos que vc postar entre
  
pois eles ficarão melhor formatados aqui no Viva o Linux

Erros Econtrados que foram corrigidos:

#include <stdio.h>

int main(void){ // SEMPRE Declare assim a função main, é a forma correta de declará-la

// VAMOS corrigir essa declaração, pois se vc não informar o conteúdo de vec, ele estará vazio né sem conteúdo, ou ainda pior com valores inimagináveis
// Troquei o nome das variáveis para nomes mais básicos para iniciantes entender o que as variáveis fazem!
// int vec[5],i,x;
int vec[5] = {1,2,3,4,5}, Localizar, NaoEncontrado = 0;

printf("\n nº a procurar no vector: ");
scanf("%d", &Localizar); // inserir o nº a procurar no vector

// SOBRE O FOR OU O WHILE. Penso que vc deveria escolher um dos 2. Não precisa os 2 em seu código. Apenas 1 faz bem esse trabalho!
// ENTÃO eu mostrarei usando o FOR e TAMBÉM MOSTRAREI usando o While. Mas como disse, não precisa dos 2
// CORRIGINDO o seu for
// for(i=1;i<=5;i++) //ler vector
// scanf("%d",&vec[i]);

// EXEMPLO USANDO O for
for (int Posicao = 0; Posicao < 5; Posicao++)
if (vec[Posicao] == Localizar){
printf(" O Laço for Encontrou na posição %d\n", Posicao);
NaoEncontrado = 1;
}

// CORRIGINDO O SEU while
// i=1;
// while(vec[i]!=x) //encontrar a posição de x no vector v
// i++;

// EXEMPLO USANDO O while
int Posicao = 0;
while(Posicao < 5){
if (vec[Posicao] == Localizar) {
printf(" O Laço while Encontrou na posicao %d\n",Posicao);
NaoEncontrado = 1;
}
Posicao++;
}
if (NaoEncontrado == 0)
printf(" O valor não existe no vetor.\n");
}

Infelizmente aqui neste comentário não funciona
 
ficando tudo acima mal formatado colado a esquerda!
Lembrando, não precisa do for e while. Apenas 1 deles resolve o problema, coloquei os 2 para vc poder escolher qual prefere usar!

Contribuir com comentário

Entre na sua conta para comentar.