Vamos a mais uma dúvida na aula de hoje? Nesta aula vamos aprender como encontrar o maior quociente em um vetor de inteiros.
DÚVIDA:
“Escreva um programa em C que leia um vetor de 10000 elementos inteiros. APÓS A LEITURA, o programa deve encontrar a posição do vetor em que se tem o maior quociente ao fazer a divisão do valor armazenado pelo índice da sua posição. Para o elemento da posição 0 (zero), deve ser usado como divisor o valor 1. Devem ser mostrados na tela tanto o índice da posição encontrada quanto o valor ali armazenado.”
Para iniciar vamos gerar números aleatórios para preencher nosso vetor. Isso pode ser feito com a função rand() como já vimos no início do nosso curso. Em seguida, vamos imprimir o vetor já preenchido na tela.
/* Preenchendo o vetor com valores aleatórios e imprimindo na tela */ srand(time(NULL)); for(i = 0; i < 10000; i++) vet[i] = rand(); for(i = 0; i < 10000; i++) printf("%d:\t%d\t", i, vet[i]);
Agora, para encontrar o maior quociente precisamos percorrer todo o vetor realizando a divisão de cada elemento do vetor pelo seu índice. Como diz o enunciando, para o índice zero devemos usar o valor 1. Como precisamos saber ao final qual é o maior quociente e o índice onde ele ocorre, podemos inicializar estas variáveis com os valores da primeira posição do vetor, afinal vet[0] / 1 é igual a vet[0].
/* Inicialização das variáveis maiorQ com o primeiro valor do vetor e id com zero. */ maiorQ = vet[0]; id = 0;
Agora precisamos percorrer todo o vetor a partir da posição 1 até o final calculando o quociente de cada posição. Caso algum quociente seja maior que o salvo na variável maiorQ então precisamos atualizar os valores das variáveis maiorQ para o novo quociente calculado e id para a posição do vetor que gerou este novo quociente.
/* Calculando o quociente de cada posição do vetor a partir de 1 */ for(i = 1; i < 10000; i++){ if(vet[i] / i > maiorQ){ maiorQ = vet[i] / i; id = i; } }
Por fim apenas imprimimos na tela o id, o valor da posição id e o quociente gerado por vet[id] / id.
/* Código escrito por Wagner Gaspar Novembro de 2021 */ #include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ int i, maiorQ, id, vet[10000]; srand(time(NULL)); for(i = 0; i < 10000; i++) vet[i] = rand(); for(i = 0; i < 10000; i++) printf("%d:\t%d\t", i, vet[i]); maiorQ = vet[0]; id = 0; for(i = 1; i < 10000; i++){ if(vet[i] / i > maiorQ){ maiorQ = vet[i] / i; id = i; } } printf("id: %d\tValor: %d\tQuociente: %d\n", id, vet[id], maiorQ); return 0; }