Exponenciação de dois números inteiros x e y em C/C++

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

int main(void) {
    
    /*
    Site: http://programjm.blogspot.com.br/
    Author: Mathias Santos Assis.
    Creation date: 05/07/2012.
    Last updated: 06/07/2016.
    Description: Recebe do usuário o valor da base e do expoente,
        ambos inteiros, e calcula através de um laço de repetição
        o valor resultante da exponenciação.
    */
    
    
    // Declarando as variáveis base e expoente do tipo inteiro.
    int base, expoente;
    
    /*
    Declarando e inicializando a variável potencia do tipo double.
    O tipo de dado double possui maior precisão (dígitos) em relação ao float.
    */
    double potencia = 1;
    
    printf("\n\t\tPotencia com Expoente Inteiro.\n\n");
    
    printf(" Base....: ");
    scanf("%d", &base);
    
    printf(" Expoente: ");
    scanf("%d", &expoente);
    
    printf("\n %d elevado a %d: ", base, expoente);
    
    if (expoente >= 0) {
        // A potenciação equivale a uma multiplicação de fatores iguais.
        for (int i = 0; i < expoente; ++i)
            potencia *= base;
        /*
        Como o expoente é maior que zero e a base é um número inteiro, não é
        necessário a utilização de casa decimais, já que sempre teremos números
        naturais. Por este motivo, utiliza-se .0f para exibir a variável potencia.
        */
        printf("%.0f\n\n", potencia);
    } else {
        for (int i = expoente; i < 0; ++i)
            /*
            A variável base é convertida para float para ter o mesmo tipo de 
            dado de potencia. Quando o expoente é negativo inverte-se a base.
            */
            potencia *= 1 / float(base);
        printf("%.10f\n\n", potencia);
    }
    
    system("pause");
    return 0;
}




Expoente Positivo
Feito no Dev C++ 4.9.9.2 | Executável



Expoente Negativo
Feito no Dev C++ 4.9.9.2 | Executável



Palavras-Chaves: Base, Expoente, Potencialização, Estrutura de Seleção, Laço de Repetição, Programação em C/C++.



Artigos relacionados em C/C++: