Falta pouco!

0 dias

0 horas

0 min

0 seg

3
respostas

[Dúvida] Esta certo?

#include<stdio.h>
#include<stdlib.h>

int potecia(int base,int expoente){

int resultado = base * base;
for(int i=1;i < (expoente-1);i++){
    resultado = resultado * base;
}

return resultado;

}

int main(){

int resultado;
int base = 4;
int expoente = 3;

resultado = potecia(base,expoente);
printf("%d elevado a %d e igual a %d",base,expoente,resultado);

return 0;

}

3 respostas

Oi, João! Como vai?

Com o que você descreveu, percebi que sua função já está próxima do esperado, mas inicia com base * base, o que muda o cálculo para expoentes diferentes. Isso pode impactar quando o expoente for menor que 2.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Então Qual seria o jeito certo?

Oi, João!

Você começou multiplicando base * base, o que já assume que o expoente será pelo menos 2. O jeito certo é iniciar o resultado em 1 e ir multiplicando a cada iteração até o valor do expoente.

Ajuste seu código assim:


#include <stdio.h>
#include <stdlib.h>

int potencia(int base, int expoente) {
    int resultado = 1;
    for (int i = 0; i < expoente; i++) {
        resultado = resultado * base;
    }
    return resultado;
}

int main() {
    int resultado;
    int base = 4;
    int expoente = 3;

    resultado = potencia(base, expoente);
    printf("%d elevado a %d é igual a %d", base, expoente, resultado);

    return 0;
}

Assim, quando o expoente for 0, o resultado será 1, quando for 1 o resultado será a própria base, e para os demais valores funcionará corretamente.

Fico à disposição.