2015-11-30 64 views
-1

我知道如何在列中乘以數字,但我無法應付行中的乘法。我想計算第一行每個數字的三次冪,然後再乘以第二行的數字和一個常量變量。總是有兩條線路,例如:逐行乘法

輸入:常數:x

a c ... ... 
b d ... ... 

我想有一個像這樣的輸出:

(a^3)*b*x (c^3)*d*x ... ... 

一些真正的數字輸入:常數: 0.30和四列。

1.00 2.00 4.00 7.00  
1.10 1.05 0.30 0.10 

輸出:

0.33 2.52 5.76 10.29 

希望有人幫助。謝謝。

+1

第3列和第4列應該是什麼?同樣的'a c \ b d'結構?另外,你總是隻有兩行四列嗎? – fedorqui

+0

總是隻有2行和20列。 – physicist

+0

那麼,結構又是什麼?您將其定義爲2x2 – fedorqui

回答

1

也許這將是更直觀

$ tr -s ' ' '\n' < file | pr -2t | awk -v x=0.3 '{printf "%.2f ", $1^3*$2*x} END{print ""}' 
0.33 2.52 5.76 10.29 

轉置數據文件,使相關領域都在同一行,計算,轉。

0

我建議你閱讀Python中的列表。請參閱參考文獻here。你的問題是你需要用代碼弄髒你的手。開始練習更多的編程問題。 :)

input_vals= [[1,2,3,4,5],[1,3,5,7,9]] # Can be of any form, I used 2-D Array 
a = input_vals[0] 
b = input_vals[1] 
x = 0.5 # Constant Value 
# Now all you need is to read value and do your operation 
for i in xrange(len(a)): 
    print (a[i]**3)*b[i]*x 
# Or here is one liner for your question  
print [(a[i]**3)*b[i]*0.5 for i in range(len(a))] 
1

GAWK

awk -vx=0.3 '{for(i=0;++i<=NF;)a[NR][i]=$i}NR>1{for(i=0;++i<=NF;)printf "%s ",(a[NR-1][i]^3)*a[NR][i]*x;print ""}' file 
0.33 2.52 5.76 10.29 
+3

這可能很好地解決了這個問題,但也請提供解釋。許多新用戶來到SO並用您的代碼進行解釋,這有助於他們學習如何調整代碼以解決問題。 – JenB