Re: [問題] 作業卡關 懇請協助了(讀檔 & 結構部分)

看板C_and_CPP (C/C++)作者時間12年前 (2013/06/23 19:16), 編輯推噓6(608)
留言14則, 7人參與, 最新討論串2/3 (看更多)
※ 引述《eric123415 (鋼絲螺絲)》之銘言: : 開發平台(Platform): VC++ : 問題(Question): 讀檔部分卡關 只設計了結構體的部分 : 不知道這種資料要怎讀入結構體 : 餵入的資料(Input): : txt檔內容 : 第1個數字代表"10個人" 第二個數字代表每個人有"5科"成績 : 接下來一連串數字為成績(等於要每個人 要有五科成績) : 10 5 53 66 16 77 81 73 9 57 66 98 61 84 68 35 67 86 77 72 8 : 51 35 98 4 45 5 60 77 5 52 89 67 40 32 42 47 82 11 57 52 : 70 5 3 27 72 37 14 38 55 95 50 : 預期的正確結果(Expected Output): : 能計算每個同學的五科總分+成績 以及全班總分+平均... : 錯誤結果(Wrong Output): : 程式碼(Code):(請善用置底文網頁, 記得排版) : http://ideone.com/KREKY4 : 補充說明(Supplement): : 不好意思 小弟c++菜鳥...對讀檔方面有點頭痛.... : 懇請大家幫忙了... 用getline讀資料看是要用空白鍵/tab/換行都可以做 google 可以搜尋這個api怎麼使用 寫法自己可以再做調整 ---- void main() { int studuent = 0; int subject = 0; float* scoreArray; String data; ifstream file ("data.txt"); if (file.is_open()) { if (getData(file, data)) { student = atoi(data.c_str()); } else { return; } if (getData(file, data)) { subject = atoi(data.c_str()); } else { return; } int scoreCount = student * subject; scoreArray = new float(scoreCount); int count = 0; while (getData(file, data) && scoreCount > count) { *(scoreArray + count) = atof(data.c_str()); ++count; } ... delete [] scoreArray; } } bool getData(ifstream& file, string& data) { if (file.good()) { getline(file, data, ' '); //以空白鍵區分資料段 return true; } return false; } -- ※ 發信站: 批踢踢實業坊(ptt.cc)

06/23 19:24, , 1F
原po人真好,不過為啥要用字串讀進來,再用atoi來轉@@...
06/23 19:24, 1F

06/23 19:26, , 2F
是因為這樣比用數字一個一個讀還快嗎?
06/23 19:26, 2F

06/23 19:27, , 3F
因為有現成的API可以區分判斷條件讀檔
06/23 19:27, 3F

06/23 19:29, , 4F
自己寫還要重寫判斷做法 也是要字元轉成數字
06/23 19:29, 4F
※ 編輯: FAITHY 來自: 114.25.194.56 (06/23 19:31)

06/23 19:35, , 5F
直接file >> *(scoreArray + count)不行嗎?
06/23 19:35, 5F

06/23 19:40, , 6F
恩恩 OK operator >> 應該都做掉了
06/23 19:40, 6F

06/23 19:41, , 7F
這樣不用getline法寫也是可以做到... 看起來還更乾脆
06/23 19:41, 7F

06/23 19:45, , 8F
如果我沒記錯scoreArray應該可以寫成陣列scoreArray[count]
06/23 19:45, 8F

06/23 22:09, , 9F
恩恩 也可以~
06/23 22:09, 9F

06/23 23:04, , 10F
( ̄y▽ ̄)╭ 好人(蓋章
06/23 23:04, 10F

06/24 00:42, , 11F
感謝您 和課堂上得有點不一樣 來研究一下...
06/24 00:42, 11F

06/24 11:27, , 12F
怎麼感覺是一個完全C++的寫法...突然間完全看不懂了..
06/24 11:27, 12F

06/24 15:19, , 13F
c++允許void main()?
06/24 15:19, 13F

06/24 15:33, , 14F
c++不允許但是MSVC允許void main()XD
06/24 15:33, 14F
文章代碼(AID): #1Hnja4Kf (C_and_CPP)
文章代碼(AID): #1Hnja4Kf (C_and_CPP)