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.
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
Conteúdo envolvido: operações com ponteiros, laços de repetição e manipulação de variáveis em C.
O que vamos precisar:
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
). - 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 e um expoente
, calcula
Exponenciação é a operação que, dado um número base
Por exemplo,
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:
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:
- Inicializar
*resultado
com 1, pois, multiplicação neutra é 1. - Fazer um
for
que vai de 1 atéexpoente
, em cada passo multiplicar o valor atual de*resultado
porbase
. - 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;
}
}