Implementar a função EXP com as seguintes características:
Recebe o endereço de uma variável, do tipo unsigned int, em cujo conteúdo será armazenado o resultado de baseexpoente.

Passo 1

Beleza, o enunciado pede pra gente “Implementar a função EXP” em C, que recebe uma base, um expoente e o endereço de uma variável unsigned int onde a gente vai guardar o resultado de base^expoente.
Conteúdo envolvido: operações com ponteiros, laços de repetição e manipulação de variáveis em C.
O que vamos precisar:
  • Entender o que é exponenciação (teoria de b^e).
  • Saber declarar e usar ponteiros para retornar o resultado.
  • Escrever um loop que faça multiplicações sucessivas.

Passo 2

Antes de codar, vamos ver a parte teórica:
Exponenciação é a operação que, dado um número base b e um expoente e, calcula
b^e = underbraceb times b times cdots times be vezes
Por exemplo, 2^3 = 2times2times2 = 8. Se o expoente for zero, por convenção b^0 = 1 (desde que bneq0).

Passo 3

Agora, sobre ponteiros em C: quando a gente quer que uma função “retorne” um valor por meio de um parâmetro, usamos um ponteiro.
Assinatura da função:
void EXP(unsigned int base, unsigned int expoente, unsigned int *resultado);
Aqui resultado é o endereço de quem chamou, e dentro da função a gente faz *resultado = valor;.

Passo 4

Vamos montar o corpo da função:
  1. Inicializar *resultado com 1, pois, multiplicação neutra é 1.
  2. Fazer um for que vai de 1 até expoente, em cada passo multiplicar o valor atual de *resultado por base.
  3. Ao final do laço, *resultado terá exatamente b^e.

Resposta

void EXP(unsigned int base, unsigned int expoente, unsigned int *resultado) {
    // Passo 1: valor neutro da multiplicação
    *resultado = 1u;

    // Passo 2: multiplica base por base, expoente vezes
    for (unsigned int i = 0u; i < expoente; i++) {
        *resultado *= base;
    }
}

Exercícios relacionados