2013-12-10 70 views
-1

我構建了一個程序,它接受來自用戶的兩個輸入,使用一個循環內的數組,它被傳遞給一個將顯示兩個數字的類中的函數。數組和函數C++

問題是當用戶輸入一個數字,它是1.該程序不斷要求用戶輸入一個數字,當輸入2時程序要求另一個數字並結束,但例如,你輸入2和3。 。它會輸出2和4(所以3 + 1),最後一個數字總是加1。下面是代碼:

main.cpp中:

#include <iostream> 
#include "newclass.h" 
using namespace std; 
int main() 
{ 
    int array_variable_main[2]; 
    for(int counter = 1; counter <= 2; counter=counter+1) 
    { 
     cout << "Enter a Number: " << endl; 
     cin >> array_variable_main[counter]; 
    } 
    newclass sum_object; 
    sum_object.loop_function(array_variable_main, 2); 
    return 0; 
} 

newclass.cpp:

#include "newclass.h" 
#include <iostream> 
using namespace std; 
newclass::newclass() 
{ 
} 
void newclass::loop_function(int array_variable[], int arraysize) 
{ 
    cout << "The numbers that are stored in the array are: " << endl; 
    for(int counter = 1; counter <= arraysize; counter = counter+1) 
    { 
     cout << array_variable[counter] << endl; 
    } 
} 

newclass.h:

#ifndef NEWCLASS_H 
#define NEWCLASS_H 
class newclass 
{ 
public: 
    newclass(); 
    void loop_function(int array_variable[], int arraysize); 
}; 
#endif // NEWCLASS_H 
+2

數組的索引從0 – chris

+0

@克里斯先生開始我已經嘗試過這樣做,並沒有解決問題,其他建議先生?謝謝。 – user3086565

+0

這是我看到的唯一明確錯誤的東西。 – chris

回答

2

你要記住,數組索引去從零到大小-1。所以對於你的數組來說,它是零和一。除此之外的任何事情都會導致未定義的行爲。未定義的行爲不容易預測,因此程序的結果可能是任何事情。

+0

先生,我已經嘗試將我的計數器聲明爲0,但它沒有解決任何其他建議先生的問題?謝謝。 – user3086565

+0

@ user3086565您是否還記得將'for'標頭的比較部分從'counter <='更改爲'counter <',並且在*兩個*位置您都發生了錯誤? –

+0

是的,你是對的,先生非常感謝你XD – user3086565

2

在C和C++數組索引通常從0開始,從而此

int array_variable_main[2]; 
for(int counter = 1; counter <= 2; counter=counter+1) 
{ 
    cout << "Enter a Number: " << endl; 
    cin >> array_variable_main[counter]; 
} 

將陣列外部訪問

做代替

int array_variable_main[2]; 
for(int counter = 0; counter < 2; ++counter) 
{ 
    cout << "Enter a Number: " << endl; 
    cin >> array_variable_main[counter]; 
} 
+0

先生,我已經試過這個,它沒有解決問題先生,任何其他建議?謝謝。 – user3086565

+0

Sir Sir im sorry,你給我的代碼工作正常!非常感謝XD,直到下一次。 – user3086565