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:
  1. Parâmetros por referência: Usamos int *soma, int *maior e int *menor para que a função possa modificar as variáveis soma, maior e menor diretamente.
  2. Inicialização: Começamos assumindo que o primeiro elemento do vetor é tanto a soma quanto o maior e o menor.
  3. Laço de repetição: Iteramos pelo vetor a partir do segundo elemento, acumulando a soma e atualizando maior e menor conforme encontramos valores maiores ou menores.
  4. 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

Exercícios relacionados