Olá José!
Pelo que entendi, você está com dúvidas se o código que você escreveu atende ao enunciado do exercício. Vamos analisar!
No enunciado, é solicitado que a função potencia
receba um ponteiro de inteiro para o resultado. No seu código, você está passando o endereço de memória da variável resultado
para a função, o que está correto.
Além disso, você está utilizando corretamente o ponteiro para modificar o valor de resultado
dentro do loop, elevando a
à potência b
.
No entanto, notei que você está multiplicando (*resultado)
por ((*a)*1)
. Multiplicar por 1 não altera o valor, então você pode simplificar essa linha para (*resultado) *= (*a)
.
Outro detalhe é que você não está tratando o caso em que b
é igual a 0. Nesse caso, a potência seria sempre 1. Você pode adicionar uma verificação no início da função para retornar 1 se b
for igual a 0.
Com essas alterações, o seu código ficaria assim:
#include <stdio.h>
void potencia(int* a, int* b, int* resultado) {
if (*b == 0) {
*resultado = 1;
return;
}
for (int i = 0; i < *b; i++) {
*resultado *= *a;
}
printf("A potência de %d elevado a %d é = %d", *a, *b, *resultado);
}
int main() {
int a = 10;
int b = 5;
int resultado = 1;
potencia(&a, &b, &resultado);
}
Espero ter ajudado! Bons estudos!