2015-09-26 18 views
0

所以我在這裏是一個非常初級的C,我正在構建一個程序,它將找到多項式的根。我負責打印分數和整數的根。但我真的不知道該怎麼做。我嘗試了浮點數,但基本上它是小數點,而int不打印除整數之外的任何內容。我希望你能幫助我。保存分數在C

我收錄了迄今爲止編寫的代碼。

int last; 
    int n=0; 
    int lastfactor_arr[20]; 
    for(last=1; last<=input[token_counter-1]; last++) 
    { 
     if(input[token_counter-1]%last == 0) 
      { 
      lastfactor_arr[n] = last; 
      printf("factors are: %d\n", lastfactor_arr[n]); 
      n++; 
      lastfactor_arr[n] = last * -1; 
      printf("last factors are: %d\n", lastfactor_arr[n]); 
      n++; 
      }  
    } 
    printf("Total number of factors are: %d\n", n); 

    int roots_arr[20]; 
    int answer; 
    int root; 
    int k, j, f=0; 
    int s_root; 
    int nume, deno; 

    for(k=0; k<=m-1; k++) //LOOP FOR FIRST FACTOR 
    { 
     for(j=0; j<=n-1; j++) //LOOP FOR LAST FACTOR 
     { 
     answer = firstfactor_arr[k]/lastfactor_arr[j]; 
     if(answer==0) 
      { 
     nume = firstfactor_arr[k]; 
     deno = lastfactor_arr[j]; 
     s_root = (input[token_counter-1]*(nume/deno*nume/deno)) + (input[token_counter-2]*nume/deno) + input[0]; 
      if(s_root == 0) 
       { 
      roots_arr[f] = nume/deno; 
      f++; 
       } 
      } 
     else 
      { 
     root = (input[token_counter-1]*(answer*answer)) + (input[token_counter-2]*answer) + input[0]; 
      if(root == 0) 
       { 
      roots_arr[f] = answer; 
      f++; 
       } 
      } 
     } 
    } 
    int p; 
    printf("The rational roots of the input polynomial are: "); 
    for(p=0; p<=f; p++) 
    { 
    printf("%.d,", roots_arr[p]); 
    } 

回答

0

你想在<stdlib.h>要麼div_tldiv_t。請參閱div()標準庫函數的文檔。您可以致電此得到您的除法的商和餘數的東西,如:

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

int main(void) 
{ 
    static const int n = 10, d = 7; 
    const div_t result = div(n, d); 
    const double x = n/(double)d; 

    printf("%f = %d %d/%d\n", 
     x, result.quot, result.rem, d); 

    return EXIT_SUCCESS; 
} 

另一種方法是用n/dresult.remn%d更換result.quot。這可以讓你拿出宣佈result的行,而你不再需要這行。

+2

這些函數可能會有幫助,但它們不是必需的(有一個'%'和'/'操作符也可以)。但是你沒有對如何使用它們做很多解釋。 –

+0

這些可能無法完全按預期的方式使用負數。 – Davislor

+0

增加了一些示例代碼。 – Davislor