Faça uma função para buscar a posição e o valor do maior elemento da lista, os quais deverão ser retornados por referência. A função deve retornar se a operação foi possível ou não.

Passo 1

O enunciado pede uma função em C que, dada uma lista (array) de inteiros e seu tamanho, encontre o maior elemento e sua posição, retornando-os por referência em dois ponteiros. Além disso, a função deve indicar com um valor booleano (true/false) se a operação foi bem-sucedida (lista não vazia).

Passo 2

Primeiro, vamos tratar o caso em que a lista está vazia (tamanho ≤ 0). Nesse cenário, não há maior elemento e a função deve imediatamente retornar false.

Passo 3

Se a lista não estiver vazia, inicializamos *val com o primeiro elemento do array (índice 0) e *pos com 0. Assim, temos um ponto de partida para as comparações.
Percorremos o array do segundo elemento (índice 1) até o fim. A cada iteração, comparamos arr[i] com *val; se arr[i] for maior, atualizamos *val e *pos com o novo valor e índice.

Passo 4

Terminada a varredura, todos os elementos já foram comparados, então retornamos true para indicar sucesso.

Resposta

#include <stdbool.h>
bool buscar_maior(int arr[], int n, int *pos, int *val) {
if (n <= 0)
return false;
*val = arr[0];
*pos = 0;

for (int i = 1; i < n; i++) {
    if (arr[i] > *val) {
        *val = arr[i];
        *pos = i;
    }
}

return true;
}

Exercícios relacionados