Dizer se um número se encontra ou não em um vetor e em que posição está

Alguém pode me ajudar a ver o que estou fazendo errado? Minha questão pede o seguinte:
Crie um programa que sorteie, aleatoriamente, 10 números e armazene estes em um vetor (utilize as funções rand e srand). Em seguida, o usuário digita um número e seu programa em C deve acusar se o número digitado está no vetor ou não. Se estiver, diga a posição que está.

Os números são gerados aleatoriamente e tudo, mas quando o valor inserido está dentro do vetor, não consigo exibir a posição. Segue abaixo o código que fiz:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
int i, sorteado=0;
int n;
int vet[10];
printf(“intervalo da rand: [0,%d]\n”, RAND_MAX);
srand(time(NULL));
for(i=0 ; i < 10; i++) {
vet[i] = rand()%10;
printf(“Numero %d: %d\n”, i, vet[i]);
}

printf ("digite um numero: ");
scanf ("%i", &n);

for (i=0; i<10; i++){
	if (n==vet[i]){
	   sorteado++;
	   	printf ("Esta no vetor na posicao %i", vet[i]);
	} else {
		printf ("Nao esta no vetor!\n");
	 }
}

}

Não entendi o que isso quer dizer. Pode reformular?

Assim, gera aleatório. O usuário tem que inserir um número digamos 40, e aí se o número estiver no vetor por exemplo:
10, 20 , 40…
O programa deveria dizer que está no vetor e informar em que posição está tipo:
40 está no vetor na posição 2, por exemplo, mas não faz isso. Aparece que está lá mas não informa a posição como deveria.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
int i, controle = 0;
int n;
int vet[10];

printf("intervalo da rand: [0,%d]\n", RAND_MAX);

srand(time(NULL));

for(i=0 ; i < 10; i++) {
    vet[i] = rand()%10;
    printf("Numero %d: %d\n", i, vet[i]);
}

printf ("digite um numero: ");
scanf ("%d", &n);

for (i=0; i<10; i++){
	if (n==vet[i]){
	   	printf ("Esta no vetor na posicao %d", i);
	   	controle = 1;
	   	break;
	}

}

if(!controle)
    printf ("Não esta no vetor");
}

Olha só, nessa linha ao invés de imprimir a posição do vetor, você estava imprimindo o valor contido na posição do vetor,

Só alterar a linha acima para isso :
printf (“Esta no vetor na posicao %d”, i);

E outra coisa , não precisa continuar o looping após encontrar a primeira ocorrência do número que o usuário digitou, por isso coloquei o break; dentro do seu looping.

Muito obrigado, eu vou me lembrar disso da próxima vez. Ajudou bastante!

1 curtida

Tranquilo man.