看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《Propagator (傳來傳去)》之銘言: 恕刪。問題蠻有意思,我認為視情況,不一定有解答, 但普遍性的回答是: double A[] ---> (一連串處理) ----> double B[] 如果不用 double B[], 可以接受 double A[] 會被修改, 那「可能」有解答;如果不能接受 double A[] 會被修改, 那有解法的機率不大。 ---- 翻譯原 po 原意做參考。 引述 期末調分數 的問題,調分數分二個步驟 (是亂寫的): (1) 先算班上平均,得到 double ave; (2) 每個人的成績扣掉 ave ,絕對值乘以 1.2 再加 ave,存到 double adj[]。 示意如下。 double average(double* score, size_t n); void adjust_score(double* des_score, size_t n, double ave); int main(){ const size_t n=20; double score[n], adj_score[n]; double ave = average(score, n); adjust_socre(adj_score, n, ave); } 原 po 提到一點是他想解決的問題 因為那個N很大 再多宣告一個B 記憶體會不夠 但Func又不能硬拆 因為有太多地方需要用到Func了...如果把它拆出來 整個版面會超級大超級醜...非常難debug 想把 adj_score 整個拿掉,省下記憶體,以這例子而言的話只需這麼做 ave = average(score, n); adjust_score(score, n, ave); // don't write it one line : adjust_score(score, n, average(score, n)); 和函式指標拉不上太大關係,關鍵是在於, 若能接受 運算前的array 在經運算後原始資料流失的話, 這麼做無妨;反之,必須拿一份新的記憶體存運算結果。 -- 我知道 ~ 但別說出來 , 說出來讓人感到特別難過... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.165.40
LPH66:我覺得原 PO 想做的比較像是「想要計算調分後的平均」這種事 03/08 21:56
LPH66:然後他想要傳原始分數和調分公式進去這樣 03/08 21:56
tropical72:我似乎看懂了Orz..這問題挺複雜的,我會做額外interface 03/08 22:17
shadow0326:感覺有點像是for_each? C的話可以用macro兜出來 03/08 23:01
henry666666:functor? 03/10 17:55