aula 297

Dúvida | Como encontrar o maior quociente de um vetor na divisão de vet[i] por i ?

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

Deixe um comentário

19 − um =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.