2015-02-10 84 views
-4

我開始編寫一個程序,生成一個數組,遵循用戶輸入的元素數量,第一個元素和比率的幾何級數。出於某種原因,它的迴歸非常令人沮喪。返回不可能的值的代碼

下面的代碼:

#include <stdio.h> 

void GenProg(float input[], int n, float first, float ratio, float *last){ 

for (int i = 1; i < n; i++){ 
    first = input[0]; 
    input[i] = input[i - 1] * ratio; 
    } 
*last = input[n - 1]; 
for (int i = 0; i < n; i++){ 
    printf("Element %i is: %f. \n", i + 1, input[i]); 
    } 
} 

int main(){ 
float arr[25]; 
float a; 
int n; 
printf("Number of elements: "); 
scanf("%i", &n); 
printf("\n"); 
float first; 
printf("First element: "); 
scanf("%f", &first); 
printf("\n"); 
printf("Ratio: "); 
float ratio; 
scanf("%f", &ratio); 
GenProg(arr, n, first, ratio, &a); 
printf("Last element: %f.\n", a); 
} 

感謝。

對於n = 5; first = 1; ratio = 2 我得到:

`Element 1: -107374176.000000` 
`Element 2: -214748352.000000` 
`Element 3: -429496704.000000` 
`Element 4: -858991408.000000` 
`Element 5: -1717986816.000000` 
+6

不要讓我們猜 - 告訴我們究竟是什麼問題。 *令人沮喪的數字*根本不是描述性的。 – Caleb 2015-02-10 17:24:24

+0

調試器顯示你正在發生什麼? – pm100 2015-02-10 17:24:58

+0

我猜41或43是令人沮喪的數字,因爲他們*不是*答案 – pm100 2015-02-10 17:25:22

回答

2
first = input[0]; 

敢肯定你有一個向後之前添加arr[0] = first。應該是

input[0] = first; 

另外,沒有理由它應該在循環體中。它應該在第一個for循環之前。

2

你需要調用GenProg