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

6 respostas Resolvido
programação
V

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");
	 }
}

}

6 Respostas

P

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

V

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.

P
Solucao aceita
#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");
}
P

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.

V

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

P

Tranquilo man.

Criado 9 de setembro de 2018
Ultima resposta 10 de set. de 2018
Respostas 6
Participantes 2