Re: [問題] Dev C++ 如何將txt檔內的數據做處理

看板C_and_CPP作者 (DP)時間11年前 (2013/07/18 03:09), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《koogoo (Killen)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : Dev C++ : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : 問題(Question): : 以下是我txt黨內的數據資料,我想把它用c++,去將數字大小做分類 : 0-100內的數字有幾個,然後100-200內的數字有幾個,依此類推, : 我是打算把數據存到矩陣之中,然後將每個數字除以100,就可以分類 : 但是我數據資料太多了,共有1048576個數據,我矩陣好像無法設定這麼大 : 所以請問有其他的寫法嗎???我的程式碼在下面,謝謝!!!! : 278 : 427 : 454 : 555 : 989 : 1070 : 1195 : 1420 : 914 : 933 : 1251 : 1387 : 1883 : 1770 : 2266 : 1954 : 2147 : 2395 : 2423 : 3113 : . : . : . : . : . : . : 餵入的資料(Input): : 預期的正確結果(Expected Output): : 錯誤結果(Wrong Output): : 程式碼(Code):(請善用置底文網頁, 記得排版) : #include <stdio.h> : #include <stdlib.h> : #include <math.h> : main(){ : int NX,NY,i,j,n,time; : NX=59; : NY=17; : int x[NX],y[NY]; : FILE *read; : read=fopen("123.txt","r"); : if(read==NULL) printf("can't\n"); : else printf("yes\n"); : for(i=1;i<1048577;++i){ : fscanf(read,"%d",&x[i]); : } : for(n=1;n<175418;++n){ : y[n]=0; : } : for(i=1;i<1048577;++i){ : for(n=1;n<175418;++n){ : if ((n-1) < (x[i]*0.01) && (x[i]*0.01) < n){ : y[n]=y[n]+1; : } : 補充說明(Supplement): 其實要分辨它的百位數就像原PO說的除以100就好。 所以只要這樣: #include<stdio.h> main(){ int i,num[175418]; //num為紀錄數量用,按照上面打175418 int temp; FILE *read; read=fopen("123.txt","r"); if(read==NULL) printf("can't\n"); else printf("yes\n"); for(i=0;i<175418;++i) //歸零 num[i]=0; for(i=0;i<1048576;++i) //其實從0開始跑到1048576就好 fscanf(read,"%d",&temp),num[temp/100]++; } 然後就結束了。 基本上比起跑雙層for一個一個去try, 還不如主動的分發他們該去的位置好。 然後上面的code應該是看得懂@@ 如果不懂的話再問@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.127.191

07/18 03:56, , 1F
07/18 03:56, 1F

07/18 09:15, , 2F
對嘛,次數累計為什麼要通通塞陣列。
07/18 09:15, 2F
文章代碼(AID): #1HvklnNG (C_and_CPP)
文章代碼(AID): #1HvklnNG (C_and_CPP)