//---------------------------------------------------------------------------
//  以下の 3つのソース
//    ・ipowruijo.h
//    ・ipowruijo.c
//    ・kadai143.c
//  を用意し、
//    $ gcc -o kadai143 -Wall  kadai143.c ipowruijo.c
//  でビルドして kadai143 を作成
//---------------------------------------------------------------------------
// ipowruijo.h
#ifndef __IPOWRUIJO_H__
#define __IPOWRUIJO_H__

extern double ruijo(double y, int m);
extern double ipow(double x, int n);

#endif//__IPOWRUIJO_H__
// End of ipowruijo.h
//---------------------------------------------------------------------------
// ipowruijo.c
#include "ipowruijo.h"

double ruijo(double y, int m)
{
    int i;
    double mult;
    mult = 1.0;
    for (i = 0; i < m; i++) {
        mult *= y;
    }

    return mult;
}

double ipow(double x, int n)
{
    double res;
    int i;
    if (n >= 0) {
        res = ruijo(x, n);
    } else {
        res = 1.0 / ruijo(x, -n);
    }

    return res;
}

// End of ipowruijo.c
//---------------------------------------------------------------------------
// kadai143.c
// 参考課題

#include <stdio.h>
#include "ipowruijo.h"

int main()
{
    double num, ans;
    int i;

    printf("整数を入力してください\n");
    scanf("%lf", &num);

    for (i = -5; i <= 5; i++) {
        ans = ipow(num, i);
        printf("%f の %d 乗の値：%f\n", num, i, ans);
    }

    return 0;
}

// End of kadai143.c
//---------------------------------------------------------------------------
