我很新的C++編碼,所以我很抱歉如果這個問題有一個非常明顯的簡單答案。我試圖創建隨機數從-1到1。這些矩陣是我現在用的是兩個功能:傳遞多維數組時分段錯誤,C++
#include <iostream>
#include "matrix_fill_random.cpp"
using namespace std;
int main(int argc, int argv[]){
int n1, n2, n3;
if (argc != 4) {
cerr << "This program requires 3 argument!" <<endl;
return 1;
}
else{
n1 = argv[1];
n2 = argv[2];
n3 = argv[3];
double** a;
matrix_fill_random(n1, n2, a);
return 0;
}
}
和
#include <iostream>
using namespace std;
int matrix_fill_random(int n1, int n2, double** a){
for (int i=0; i<n1; i++){
for (int j=0; j<n2; j++){
double num = rand() % 2 - 1;
a[i][j]=num;
}
}
return 0;
}
最後,我想創建兩個矩陣然後將它們相乘,這樣n1,n2和n3代表兩個矩陣的行和列,但這並不是太重要。我認爲錯誤可能在於我如何聲明變量或將它們傳遞給其他函數,但我不完全確定。
我覺得如果我能理解創建其中一個矩陣的原理,那麼這將轉化爲我需要使用的其他功能。
'matrix_fill_random'正在爲'a [i] [j]'賦值,但是您沒有爲'a'分配任何內存。 – lurker
另外,'main'的第二個參數是'char * argv []'not'int argv []'。這會導致你的'n1 = argv [1]'編譯失敗(應該是因爲它無效)。您需要將'argv [1]'轉換爲int。對於其他n也是如此。 – lurker
如果使用C++,不要使用普通的c數組(除非必須)。更喜歡std :: vector。 – user1595178