[問題] 將文字檔讀取數值後做計算再存入excel

看板C_and_CPP (C/C++)作者 (wodada)時間15年前 (2011/05/23 01:26), 編輯推噓0(0050)
留言50則, 6人參與, 最新討論串1/1
小弟最近在寫一個程式,是將記事本的檔案讀出之後做計算再存入excel 想了很久終於有初步成果,可是現在遇到麻煩了。 我終於成功把data複製在excel上,接下來只要計算後面兩項就可(r和fruit) (本人把data做註解在最上面程式碼上) 接下來我要讀取data裡30筆資料的X和Y,將兩筆資料做點到點距離的平方根 再存入excel檔案裡(例如第1筆X,Y和第2筆X,Y做完之後,接者換第1筆X,Y和第3筆做, 以此類推做到第30筆X,Y;接者再從第2筆和第3筆開始做,也是做 第30筆之後換第3筆和第4筆做....以此類推做到第29筆到第30 筆結束) <----此部分不止30份數據,只是想請版友教我存入 excel和for loop的應用 接者再經過種種計算(小弟自己做),便有30個數據 程式碼如下: http://codepad.org/bpzPzFq6 本人真的事試了很久也想了一整天,請各位指點迷津 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.39.152.239

05/23 01:52, , 1F
... csv not excel
05/23 01:52, 1F

05/23 02:12, , 2F
我用.csv檔開的時候是excel,哪裡有錯??= =a
05/23 02:12, 2F

05/23 03:03, , 3F
那是因為你電腦裡面 csv 是設用 excel 開的
05/23 03:03, 3F

05/23 03:07, , 4F
回到問題,有N筆資料,你是要算N*(N-1)次的距離?怎存?
05/23 03:07, 4F

05/23 08:45, , 5F
你要分兩次讀檔,第一次讀檔是把30筆資料儲存到陣列
05/23 08:45, 5F

05/23 08:47, , 6F
接著fclose->rewind->fopen,這動作你可以視為重新讀檔
05/23 08:47, 6F

05/23 08:48, , 7F
接下來你就可以每讀一筆,就去跟其他筆數去比較.
05/23 08:48, 7F

05/23 08:50, , 8F
可是為什麼要問讀檔?我看你知道怎麼讀阿
05/23 08:50, 8F

05/23 08:52, , 9F
存入excel<==你已經用csv做到了,為何還要請教?
05/23 08:52, 9F

05/23 11:20, , 10F
@_@
05/23 11:20, 10F

05/23 12:14, , 11F
?.?
05/23 12:14, 11F

05/23 12:51, , 12F
抱歉,我早上去上課現在才回來....
05/23 12:51, 12F

05/23 12:52, , 13F
其實我不懂你的問題點在哪裡...
05/23 12:52, 13F

05/23 12:53, , 14F
事實上我是想將X,Y讀出來之後在程式裡計算,接者在帶公式
05/23 12:53, 14F

05/23 12:56, , 15F
那你的問題是不會讀、不會計算還是不會代公式?
05/23 12:56, 15F

05/23 12:56, , 16F
計算出來後再存到r選項裡面,可是現再我想要把上述每一筆
05/23 12:56, 16F

05/23 12:59, , 17F
的X,Y做SQRT(),例如:SQRT((X1-X2)^2+(Y1-Y2)^2)
05/23 12:59, 17F

05/23 13:01, , 18F
接者再做SQRT((X1-X3)^2+(Y1-Y3)^2)
05/23 13:01, 18F

05/23 13:02, , 19F
做到SQRT((X1-X30)^2+(Y1-Y30)^2)完後,換第二筆X,Y資料
05/23 13:02, 19F

05/23 13:05, , 20F
因為SQRT((X2-X1)^2+(Y2-Y1)^2)與先前的值一樣所以不算
05/23 13:05, 20F

05/23 13:07, , 21F
直接從SQRT((X2-X3)^2+(Y2-Y3)^2)開始做,做到第30筆資料
05/23 13:07, 21F

05/23 13:08, , 22F
也就是SQRT((X2-X30)^2+(Y2-Y30)^2)時換第三筆X,Y開始做
05/23 13:08, 22F

05/23 13:09, , 23F
以此類推....做到SQRT((X29-X30)^2+(Y29-Y30)^2)便可結束
05/23 13:09, 23F

05/23 13:11, , 24F
先到記憶體, 之後再慢慢算
05/23 13:11, 24F

05/23 13:11, , 25F
^存
05/23 13:11, 25F

05/23 13:11, , 26F
看原po推了一堆,我還是不知道"問題點"是什麼...XD
05/23 13:11, 26F

05/23 13:14, , 27F
緊接者挑一項最大值的數值代入公式(我程式裡有growth,
05/23 13:14, 27F

05/23 13:15, , 28F
問題就是他想要在剛好讀完檔的時間點, 也剛好把計算完
05/23 13:15, 28F

05/23 13:15, , 29F
的結果都輸出
05/23 13:15, 29F

05/23 13:15, , 30F
和fruit的註解公式),計算完後分別存入r和fruit數值在excel
05/23 13:15, 30F

05/23 13:17, , 31F
我最主要是邊寫邊COMPILE時無法把數值存到r裡面,不知道該如
05/23 13:17, 31F

05/23 13:19, , 32F
是好??如果沒有要求讀檔的話,我有把握寫出....
05/23 13:19, 32F

05/23 13:20, , 33F
可是老師要我們讀它所附的檔案(註解在程式最上面),做出後面
05/23 13:20, 33F

05/23 13:20, , 34F
讀不讀檔有差嗎? 這只是你記憶體運用的策略而已
05/23 13:20, 34F

05/23 13:21, , 35F
的兩個數值在存入檔案...這我真的就寫了很久.....= =||
05/23 13:21, 35F

05/23 13:22, , 36F
你的檔案應該只是數字跟空格而已 不難處理的
05/23 13:22, 36F

05/23 13:22, , 37F
先用stdin當輸入阿
05/23 13:22, 37F

05/23 13:23, , 38F
不然你先把計算部份完成吧
05/23 13:23, 38F

05/23 13:24, , 39F
OK,我在試試看!!
05/23 13:24, 39F

05/23 13:43, , 40F
~"~你被自己的害怕混亂思緒,1.fscanf<==讀文字檔
05/23 13:43, 40F

05/23 13:44, , 41F
2.fprintf就可以將計算的結果寫入到excel
05/23 13:44, 41F

05/23 13:45, , 42F
3.你一定是要先把讀取的數據,放入array,再重新讀檔一次
05/23 13:45, 42F

05/23 13:47, , 43F
每讀一筆去跟其他的資料做計算,不論你有怎樣的記憶空間
05/23 13:47, 43F

05/23 13:49, , 44F
策略,記住人類無法預測未來,機器也是.我去找找我以前的
05/23 13:49, 44F

05/23 13:49, , 45F
作業給你參考吧
05/23 13:49, 45F

05/23 13:54, , 46F
= =後來看那個作業,用大量的vector和overload,幫助不大
05/23 13:54, 46F

05/23 13:54, , 47F
不放上來了
05/23 13:54, 47F

05/23 14:04, , 48F
那個欄位蠻整齊的, 隨機存取應該可做, 這樣就不用陣列
05/23 14:04, 48F

05/23 14:28, , 49F
~"~版主是對的,http://0rz.tw/9tMCT 裡面有隨機讀檔
05/23 14:28, 49F

05/23 14:28, , 50F
觀念
05/23 14:28, 50F
文章代碼(AID): #1DsKSgpt (C_and_CPP)
文章代碼(AID): #1DsKSgpt (C_and_CPP)