0

I have a file with 256 coefficient and I want to inverse each 64 coefficient of this file and keep the result in another file. I try to program my idea but the result is wrong.

int main()
{     
    /***********************************inversion coefficients*****************/
    FILE* org = NULL; // original file
    FILE* inv = NULL; // file content inverse coefficient
    float det; // readed coefficient 
    float tabinv[256]; // intermediate table witch will content iverse coefficient
    org = fopen("det.txt", "r");
    inv = fopen("inverse.txt", "w");
    int j = 64;
    int p = j;
    int copt = 0;
    while (copt < 256)
    {
        for (int i = j - 64; i < j; i++)
        {

            fscanf(org, "%f", &det);

            tabinv[p - 1 - i] = det;

            copt++;

        }

        p = p + 64;

        j = p;
    }
    for (int k = 0; k < 256; k++){
        fprintf(inv, "%f\n", tabinv[k]);

    }
    fclose(org);
    fclose(inv);
    return 0;
}
Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129

1 Answers1

0

You have Fix in this line-

 tabinv[p - 1 - i] = det; // Don't use same variable i.

Normally From the expression int i = j - 64,when p=j=64, i=0, that time it stores the value from tabinv[63] to tabinv[0]. But when p=j=128, i=64, that time also it start stores the value from tabinv[63] to tabinv[0]. You need to fix this to avoid the error.

Try the following change-

for (int i = j - 64,int k = 0; i < j; i++,k++) // Fix 1
{

    fscanf(org, "%f", &det);

    tabinv[p - 1 - k] = det; // Fix 2

    copt++;

}
Sathish
  • 3,740
  • 1
  • 17
  • 28