Alguém poderia fazer esse código pra mim?
Em linguagem C (de preferência no C++ se possível)
Soluções para a tarefa
Resposta:
Explicação:
#include <stdio.h>
#include <stdlib.h>
int main()
{
/* gera 1000 números aleatórios inteiros */
const int TAMANHO = 1000;
int numeros[TAMANHO];
for (int i = 0; i < TAMANHO; i++)
numeros[i] = rand();
/* ordena em ordem crescente os 1000 números */
for(int i = 0; i < TAMANHO; i++) {
for (int j = i + 1; j < TAMANHO - 1; j++) {
if (numeros[j] > numeros[j + 1]) {
int aux = numeros[j];
numeros[j] = numeros[j + 1];
numeros[j + 1] = aux;
}
}
}
/* listar números */
for (int i = 0; i < TAMANHO; i++)
printf("%d\n", numeros[i]);
/* Busca binária */
int numero;
do {
printf("Entre com um número inteiro maior ou igual a zero: ");
scanf("%d", &numero);
if (numero < 0)
break;
printf("%d\n", numero);
int esquerda = 0, direita = TAMANHO - 1, meio, encontrado = 0;
while(esquerda <= direita && !encontrado){
meio = (direita+esquerda) / 2;
if (numeros[meio] == numero){
encontrado = 1; /*Verdadeiro*/
break;
}
else if (numero < numeros[meio])
direita = meio - 1;
else
esquerda = meio + 1;
}
if (encontrado == 1)
printf("ACHOU!!!\n");
else
printf("NAO ACHOU!!!\n");
} while (true);
return 1;
}