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