Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Poderiam Avaliar?

Favor avaliar se a teoria foi devidamente aplicada na prática! Grato!

// Inclui as bibliotecas
# include <stdio.h>
# include <string.h>


void potencia (int* resultado, int a, int b){

*resultado = 1;

for (int i = 0; i<b; i++){

    *resultado = *resultado*a;

}

printf("Resultado é:%d\n", *resultado);
printf("Resultado é:%d\n", &resultado);

}


    int main(){

int base;
int expoente;
int resultado;

printf("Qual a base? \n");
scanf (" %d", &base);

printf("Qual o expoente: \n");
scanf (" %d", &expoente);



potencia (&resultado, base,expoente);


}
2 respostas

Olá Giliandro.

Está correto sim, mas tenho algumas sugestões.

Por exemplo nessa parte:

void potencia (int* resultado, int a, int b){

    *resultado = 1;

    for (int i = 0; i<b; i++){

        *resultado = *resultado*a;

    }

    printf("Resultado é:%d\n", *resultado);
    printf("Resultado é:%d\n", &resultado);

}

É melhor imprimir (printf) a variável resultado fora da função, imprimir ela no main por exemplo:

    potencia (&resultado, base,expoente);
    printf("Resultado é:%d\n", resultado);

Porque dessa maneira, utilizar o ponteiro teria um proposito, da maneira que estava antes a variável resultado não era utilizada fora da função então não seria necessário um ponteiro, mas agora utilizando ela com o printf no main damos um proposito para o seu uso.

Outra recomendação que faço é para utilizar parenteses quando for acessar um ponteiro, (*resultado), isso porque quando vamos ler o código eles facilitam o entendimento.

Por exemplo, nas linhas abaixo temos o mesmo resultado, porem na primeira fica confuso quando estamos usando asterisco * para acessar o ponteiro e quando estamos multiplicando, já na segunda linha fica claro que estamos acessando o ponteiro da variável resultado e estamos multiplicando com a variável 'a'.

(1)

*resultado = *resultado*a;

(2)

  (*resultado) = (*resultado) * a;

Agora uma ultima sugestão é inserir comentários no seu código quando você julgar que aquele trecho é complicado ou seu proposito não é claro para quem está lendo, fiz algumas sugestões de comentários no código abaixo:


void potencia (int* resultado, int a, int b){
    // atribuindo o valor neutro da multiplcação na variavel resultado
    (*resultado) = 1;

    for (int i = 0; i<b; i++){
        // salvando a multiplicação de 'a' com o valor acumulado em 'resultado' e salvando na variavel 'resultado'
        (*resultado) = (*resultado) * a;

    }

}

O código com todas as minhas sugestões segue abaixo:

// Inclui as bibliotecas
# include <stdio.h>
# include <string.h>


void potencia (int* resultado, int a, int b){

    *resultado = 1;

    for (int i = 0; i<b; i++){

        *resultado = *resultado*a;

    }

    printf("Resultado é:%d\n", *resultado);
    printf("Resultado é:%d\n", &resultado);

}


void potencia (int* resultado, int a, int b){
    // atribuindo o valor neutro da multiplcação na variavel resultado
    (*resultado) = 1;

    for (int i = 0; i<b; i++){
        // salvando a multiplicação de 'a' com o valor acumulado em 'resultado' e salvando na variavel 'resultado'
        (*resultado) = (*resultado) * a;

    }

}


int main(){

    int base;
    int expoente;
    int resultado;

    printf("Qual a base? \n");
    scanf (" %d", &base);

    printf("Qual o expoente: \n");
    scanf (" %d", &expoente);



    potencia (&resultado, base,expoente);


    printf("Resultado é:%d\n", resultado);


}

Espero ter te ajudado a entender melhor e que minhas sugestões tenham sido uteis para você.

Bons Estudos.

solução!

Obrigado, Suas sugestões foram de grande valia amigo Igor!