2013-11-02 147 views
0
{ 
    // FIRST ARRAY 
    int NumberOfXValues; 
    double* FirstArray; 
    NumberOfXValues = 0; 
    FirstArray = new double[NumberOfXValues]; 
    // END FIRST ARRAY 

    // SECOND ARRAY 
    int NumberOfProbabilities; 
    double* SecondArray; 
    NumberOfProbabilities = 0; 
    SecondArray = new double[NumberOfProbabilities]; 
    // END SECOND ARRAY 

    // THIRD ARRAY 
    int Product; 
    double* ThirdArray; 
    Product = 0; 
    ThirdArray = new double[Product]; 
    // END THIRD ARRAY 

    // OBTAINING THE NUMBER OF X VALUES 
    cout << "Please input the number of \"x\" values we will be using: "; 
    cin >> NumberOfXValues; 
    // END OF OBTAINING THE NUMBER OF X VALUES 

    // OBTAINING THE VALUES IN THE FIRST ARRAY 
    int x; 
    cout << "Please input the \"x\" values in order from least to greatest: " << endl; 
    cout << endl; 
    for (int x = 0; x < NumberOfXValues; x++) 
    { 
     cout << "Enter number: "; 
     cin >> FirstArray[x]; 
    } 
    cout << endl; 
    // END OF OBTAINING THE VALUES IN THE FIRST ARRAY 

    // OBTAINING THE VALUES IN THE SECOND ARRAY 
    cout << "Please input the probabilities corresponding to their \"x\" values: " << endl; 
    cout << endl; 
    for (int x = 0; x < NumberOfXValues; x++) 
    { 
     cout << "Enter probability in decimal form: "; 
     cin >> SecondArray[x]; 
    } 
    cout << endl; 
    // END OF OBTAINING THE VALUES IN THE SECOND ARRAY 

    // MULTIPLYING THE FIRST TWO ARRAYS TO OBTAIN THE THIRD 
    for (int x = 0; x < NumberOfXValues; x++) 
    { 
     ThirdArray[x] = FirstArray[x] * SecondArray[x]; 
    } 
    // END OF MULTIPLYING THE FIRST TWO ARRAYS TO OBTAIN THE THIRD 

    //TEST 
    for (int x = 0; x < NumberOfXValues; x++) 
    { 
     cout << ThirdArray[x]; 
     cout << endl; 
    } 
    //TEST 
} 

這是我第一次使用這些網站之一,但我已經工作了近一個小時來解決這個問題。它運行完全平滑,直到它顯示第三個數組中的第三個值。它總是給我一個奇怪的數字。我的動態陣列發生故障

+1

您正在爲數組分配空間爲0的項目。等到你得到尺寸來分配它們。 –

回答

4

的問題是,當你創建數組,你使用的大小變量設置爲0

int NumberOfXValues; 
double* FirstArray; 
NumberOfXValues = 0; 
FirstArray = new double[NumberOfXValues]; 

這裏FirstArray0所以它會創建0元素的數組。

您必須在獲取元素數量後創建數組。

cout << "Please input the number of \"x\" values we will be using: "; 
cin >> NumberOfXValues; 
FirstArray = new double[NumberOfXValues]; 
1

當你說new Foo[NumItems],該數組僅會NumItems項目,它不會通過自己成長。如果您稍後想調整大小,則需要分配適當大小的新數組並將其複製到各個成員。有時候,您可以通過realloc來延長您的當前分配。

你的問題是雙重的:

  • 您初始化大小爲0陣列,這是沒有意義的。一旦你知道你需要多少物品,用這個數字分配數組。
  • 您正在假設陣列會在您添加項目時自行增長。

對於第二種情況,您應該只使用std::vector,它會自動增長併爲您節省麻煩。

std::vector<double> firstArray(initialSize); 
firstArray.push_back(firstItem); 
firstArray.push_back(secondItem); 
//... 

在您當前的情況下,您可以推遲創建數組,直到您知道需要存儲的項目的總數。