Modifique a função do item anterior de forma que ela também retorne, por referência, o maior e o menor elemento do vetor.
Passo 1
Beleza, vamos lá! O enunciado pede para modificar uma função que provavelmente já existe, de modo que além do que ela já retorna, ela também retorne, por referência, o maior e o menor elemento de um vetor. Estamos lidando com conceitos de funções e passagem de parâmetros por referência na programação. Para resolver isso, vamos precisar entender como as funções funcionam e como podemos usar referências (ou ponteiros) para retornar múltiplos valores.
Passo 2
Primeiro, vamos lembrar como uma função básica que processa um vetor pode ser estruturada. Por exemplo, suponha que já temos uma função que calcula a soma dos elementos de um vetor. Nossa tarefa agora é adicionar mais duas saídas: o maior e o menor elemento.
Passo 3
Para retornar múltiplos valores de uma função em C ou C++, usamos parâmetros por referência. Isso significa que vamos passar endereços de memória (ponteiros) para a função, e ela vai modificar esses valores diretamente. Assim, além do retorno principal, podemos obter outros resultados.
Passo 4
Vamos criar uma função chamada
processarVetor
que recebe o vetor, seu tamanho, e três ponteiros para armazenar a soma, o maior e o menor elemento. Dentro da função, vamos iterar pelo vetor, calculando a soma e determinando os valores máximo e mínimo.Passo 5
Aqui está como a função ficaria em código:
#include <stdio.h>
void processarVetor(int vetor[], int tamanho, int *soma, int *maior, int *menor) {
// Inicializa a soma, maior e menor com o primeiro elemento
*soma = vetor[0];
*maior = vetor[0];
*menor = vetor[0];
// Percorre o vetor a partir do segundo elemento
for(int i = 1; i < tamanho; i++) {
*soma += vetor[i]; // Soma os elementos
if(vetor[i] > *maior) {
*maior = vetor[i]; // Atualiza o maior
}
if(vetor[i] < *menor) {
*menor = vetor[i]; // Atualiza o menor
}
}
}
int main() {
int meuVetor[] = {5, 3, 8, 1, 9};
int tamanho = sizeof(meuVetor) / sizeof(meuVetor[0]);
int soma, maior, menor;
// Chama a função passando os endereços das variáveis
processarVetor(meuVetor, tamanho, &soma, &maior, &menor);
printf("Soma: %d\n", soma);
printf("Maior: %d\n", maior);
printf("Menor: %d\n", menor);
return 0;
}
Passo 6
Vamos detalhar o que está acontecendo:
- Parâmetros por referência: Usamos
int *soma
,int *maior
eint *menor
para que a função possa modificar as variáveissoma
,maior
emenor
diretamente. - Inicialização: Começamos assumindo que o primeiro elemento do vetor é tanto a soma quanto o maior e o menor.
- Laço de repetição: Iteramos pelo vetor a partir do segundo elemento, acumulando a soma e atualizando
maior
emenor
conforme encontramos valores maiores ou menores. - Função
main
: Criamos um vetor de exemplo, chamamos a função passando os endereços das variáveis onde queremos armazenar os resultados, e então imprimimos os valores obtidos.
Resposta
Com essa modificação, a função
processarVetor
agora retorna, por referência, o maior e o menor elemento do vetor, além da soma dos seus elementos. No exemplo fornecido, a saída seria:Soma: 26
Maior: 9
Menor: 1