首先,我根本不瞭解C++。基本上我有一個文件,看起來像讀取未知行數並將值存儲在數組中的C++
junk
junk
...
junk
3 4 5 1
-9 7 4 -7
8 6 3 1
....
junk
junk
7 5 2 -1
....
-1 7 4 1
etc.
我想要分別分析每個數字塊。即在這裏我有兩個數字塊,並希望分別對它們執行相同的分析。
我知道我將如何在Python中實現這一點,我只是不知道它在C++中的外觀。
file = open('data.text')
w = []
x = []
y = []
z = []
for line in file:
line = line.strip()
data = line.split()
w.append(data[0])
x.append(data[1])
y.append(data[2])
z.append(data[3])
file.close()
我也想對數字塊進行分析,一次比較兩行的所有可能性。在Python它會看起來像(我猜 - 沒有嘗試過):
r = []
s = []
t = []
for i in range(len(w)):
for j in range(len(w) - 1):
r.append(w[i]*x[j] - w[j]*x[i])
s.append(x[j]*y[i] - y[j]*x[i])
for i in range(len(w):
for j in range(len(s)):
t.append(s[j]*w[i] + r[j]*x[i])
best = min(t)
這裏有一對夫婦的我已經在C++中嘗試這一問題:我不知道的行數對於數據(稱爲n),雖然我知道我想分析的數字塊的數量(稱爲N - 在我的例子中N = 2)。和大量的分段錯誤。我想我可以存儲這些數據,但我似乎無法調用它。我創建一個類數據數據並從那裏開始工作。
double get_data = 0;
for (std::string line; (std::getline(file,line));)
{
std::istringstream row(line);
Data data;
row >> data.w >> data.x >> data.y >> data.z;
std::vector<double> wcol;
std::vector<double> xcol;
std::vector<double> ycol;
std::vector<double> zcol;
get_data++;
for (int j = 0; j < get_data - 1; j++) {
if(data.w > 0)
{
wcol.push_back(data.w);
xcol.push_back(data.x);
ycol.push_back(data.y);
zcol.push_back(data.z);
}
get_data = 0;
}
但我再也不知道我在用C++做什麼。
也許這應該是一個獨立的問題,但我也想打出來的分析,然後重新啓動對數字的下一塊。
解決此類問題的正確工具是您的調試器。在*堆棧溢出問題之前,您應該逐行執行您的代碼。如需更多幫助,請閱讀[如何調試小程序(由Eric Lippert撰寫)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。至少,您應該\編輯您的問題,以包含一個[最小,完整和可驗證](http://stackoverflow.com/help/mcve)示例,該示例再現了您的問題,以及您在調試器。 –
爲什麼用'python'標記? –
因爲我在裏面寫了一些例子python,所以我用Python標記了它。對不起,如果我使用錯誤的標籤。 @πάνταῥεῖ,相信我,我已經嘗試過。我搜索了以前的stackoverflow問題,並在過去的四天裏看過我的調試器 - 這是我所取得的所有進展。我提供的示例代碼編譯得很好,併產生了分段錯誤。這是經過幾個小時的調試並獲得編譯的代碼。在這一點上,我百分之百的輸了。這不是一個「小」的計劃 - 我只提供了我正在做的一件事。我正在做的其他事情。 –