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