Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Fiz dessa forma

Eu tive dificuldade nesse exercício, porque fiquei testando o código, removendo os * e os & dos parâmetros para ver se funcionava sem, mas recebia erros por causa dos tipos de dados distintos. Acredito que é porque a função pow() trabalha com valores double, ao invés de int . Acabou que meu código funciona e compila porque utilizei as mesma variáveis criadas na função main(). Com isso, o programa não irá criar outras variáveis dentro da função potencia(). Correto?

#include <stdio.h>
#include <math.h>

int potencia(int* resultado, int* base, int* expoente) {
    (*resultado) = pow(*base, *expoente);
    return (*resultado);
}

int main() {
    int base, expoente, resultado;

    printf("Digite o valor da base: ");
    scanf("%d", &base);

    printf("Digite o valor do expoente: ");
    scanf("%d", &expoente);

    resultado = potencia(&resultado, &base, &expoente);

    printf("%d ^ %d = %d\n", base, expoente, resultado);
}

Terminal: Insira aqui a descrição dessa imagem para ajudar na acessibilidade Acho que vale a pena ficar fazendo esses testes e brincando com o programa para fixar o aprendizado.

1 resposta
solução!

Oi, Lucas! Tudo bem?

Parabéns pelo código, é ótimo ver você experimentando para entender melhor como os ponteiros funcionam, continuar testando e brincando com o código é uma excelente forma de aprender!

Apenas uma dica: ao usar a função pow(), é sempre bom estar ciente de que ela pode introduzir pequenas imprecisões devido à natureza dos cálculos com ponto flutuante, mas para a maioria dos casos práticos, isso não será um problema.

Caso tenha ficado alguma dúvida em relação ao curso ou atividade, sinta-se à vontade em comunicar, estou à disposição e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!