[問題] 新手請教 function 用法~!

看板C_and_CPP作者 (我是誰)時間14年前 (2011/10/12 00:33), 編輯推噓3(3033)
留言36則, 6人參與, 最新討論串1/3 (看更多)
各位高手您們好~ 想請教個問題 目前有一個程式 要讀進數個檔案(A.txt & B.txt) 然後會output 一些數值出來 輸出在 answer.txt 目前的程式碼是 #include < > #define using namespace std; int add(....) //一個function { ...... } int main(int argc, char* argv[]) { 一堆變數的宣告;(陣列 指標 linked list等等) ifstream fin(argv[1]); //讀進第一個檔案 將資料作儲存與運算; add(.....) fin.close(); ifstream fin2(argv[2]); //讀進第二個檔案 將資料作儲存 fin2.close(); //接著就將這兩個檔案的資料 進行一連串的運算 ofstream fout(argv[3], ios::app); //將檔案輸出 ........ ........ ........ 將運算結果用一維陣列紀錄answer[i] fout answer[i] //將結果輸出 return 0; } 目前就是想把這支程式變成一個function 在外圍包一層PSO 不停迭代 ( 假設把這支程式名稱 變為test ) int main() { for(迭代次數) for(粒子數) test() return 0; } 第一次迭代 所讀取的第一個檔案(A.txt) 是隨機產生的data 帶入 test()這個function後 算出某個數值 然後再用這個數值 當作目標式 , 再依照PSO的公式 變動原先從第一個檔案所讀取的資料 將變動後的資料 依舊帶入 test() 做運算 , 就會再得出一個新的目標值 反覆迭代 找出最佳的目標值! 期間 所讀取的第二個檔案 B.txt 不變, 所異動的只有從第一個檔案 A.txt所讀取的資料!!! 現在我卡在不知道要怎麼把這支大程式 變成一個function??? 只好來請板上高手來指導 XD PS: 因為完全不是科班出身~ 目前唸碩士 老闆希望我可以寫C++ 現在勉強可以看懂一些範本(數百行程式) 但是要一直coding 還是有困難 覺得自己一知半解 要改寫程式 又是錯誤百出 (甚至找個錯誤還要找很久 搞不好還找不到哪裡出錯) 越來越想放棄了......唉 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.39.175.99

10/12 00:37, , 1F
「我試著修改 但是還是有問題」←把你的程式碼跟問題
10/12 00:37, 1F

10/12 00:37, , 2F
具體的貼上來吧,這樣描述沒人能幫你
10/12 00:37, 2F

10/12 00:56, , 3F
j大 因為程式數百行 , 再加上我觀念不是很清楚
10/12 00:56, 3F

10/12 00:56, , 4F
我覺得我的修改好像有點在亂改 所以想請教這種問題
10/12 00:56, 4F

10/12 00:56, , 5F
應該要怎麼處理?!
10/12 00:56, 5F

10/12 00:57, , 6F
你的文章根本就沒辦法判斷你遇到了什麼問題啊....
10/12 00:57, 6F

10/12 00:58, , 7F
說真的, 你的描述太抽象, 不貼code只這樣寫, 很難幫....
10/12 00:58, 7F

10/12 00:58, , 8F
我知道原本的程式 讀入的資料跟輸出的資料 所代表的
10/12 00:58, 8F

10/12 00:58, , 9F
實在不能貼code, 你得試著用文字, 用圖說, 把你已經有的
10/12 00:58, 9F

10/12 00:58, , 10F
「醫生,我的身體不舒服」←誰能靠這幾個字找出病因?
10/12 00:58, 10F

10/12 00:59, , 11F
與希望修改的樣子, 像開規格一樣盡可能具體的寫出來....
10/12 00:59, 11F

10/12 00:59, , 12F
10/12 00:59, 12F

10/12 00:59, , 13F
不然我的建議是:找人直接到你家幫你看程式吧
10/12 00:59, 13F

10/12 00:59, , 14F
變數 可是我改怎麼把這支程式 變成另一支main裡面的函數
10/12 00:59, 14F

10/12 01:00, , 15F
樓上兩位的建議good :)
10/12 01:00, 15F

10/12 01:01, , 16F
我同學為了學程式到我這裡住了兩天,你也可以考慮一下
10/12 01:01, 16F

10/12 01:01, , 17F
看有沒有人可以支援你
10/12 01:01, 17F

10/12 01:02, , 18F
謝謝v大的建議 那我試著描述~~~ 謝謝你們~
10/12 01:02, 18F
※ 編輯: ching1027 來自: 114.39.175.99 (10/12 01:30)

10/12 01:06, , 19F
我的建議最近常常被無視... (畫圈圈)
10/12 01:06, 19F

10/12 01:07, , 20F
我該說的是,通常硬著頭皮寫opt.alg.的人,他們寫了什麼
10/12 01:07, 20F

10/12 01:07, , 21F
其實也不知道.
10/12 01:07, 21F

10/12 01:31, , 22F
james 大,我可以去你家住兩天嗎 XD
10/12 01:31, 22F

10/12 01:31, , 23F
我這麼弱XD
10/12 01:31, 23F

10/12 02:45, , 24F
照你這樣寫, 先用可能比較鳥但比較直接的方法就像你說的
10/12 02:45, 24F

10/12 02:45, , 25F
把原來的main()變成test(), 所以參數照著傳進去test();
10/12 02:45, 25F

10/12 02:47, , 26F
只是因為不太懂你要怎麼拿test的結果來修正a原始資料,
10/12 02:47, 26F

10/12 02:47, , 27F
所以在test()後也許多寫一個adjust()去做你說的修改,
10/12 02:47, 27F

10/12 02:49, , 28F
a的資料可以開個global var/array硬存, 可以先回避資料
10/12 02:49, 28F

10/12 02:49, , 29F
傳遞的部份. 原來的test()用個var或多傳個loop count進
10/12 02:49, 29F

10/12 02:50, , 30F
去, 用來提示是第一次要從file裡讀, 還是用global var/
10/12 02:50, 30F

10/12 02:51, , 31F
array的資料. 不知道這樣能不能拼湊出你想要做的事@_@"
10/12 02:51, 31F
參數傳進test() <---這個部份就想很久 ><" int main() { test(int argc, char* argv[]) return 0; } ※ 編輯: ching1027 來自: 114.39.166.63 (10/12 06:11)

10/12 06:12, , 32F
有這種寫法嗎 =.=? compile根本不能過 (我根本在亂寫)
10/12 06:12, 32F

10/12 07:46, , 33F
不能直接用system()呼叫原本的執行檔嗎?
10/12 07:46, 33F

10/12 08:10, , 34F
建議好好看一下怎麼call function,然後寫個小程式
10/12 08:10, 34F

10/12 08:11, , 35F
先練習看看
10/12 08:11, 35F

10/12 09:18, , 36F
推樓上d大, 還有d大前面推文的教學網頁也可以看看:)
10/12 09:18, 36F
文章代碼(AID): #1Eb6_p0p (C_and_CPP)
文章代碼(AID): #1Eb6_p0p (C_and_CPP)