[問題] 陣列宣告問題

作者: arashi2011 (QQ)   2017-04-17 17:15:38
關於陣列的一個小問題 如果我想要這樣的結果
Enter numbers of points: 5
Enter points: -1 2 3 6 -3 -5 -1 0 10 -24
The points are: (-1.00, 2.00), (3.00, 6.00), (-3.00, -5.00), (-1.00, 0.00),
(10.00, -24.00)
我目前是想用二維陣列把數字存起來 像這樣
printf("Enter numbers of points: ");
scanf("%d", &n);
for(i=0; i<n; i++){
for(j=0; j<2; j++) scanf(" %d", &num[i][j])
for(i=0; i<n; i++){
for(j=0; j<2; j++) printf("%lf", num[i][j]); }
但是這樣數字只能一個一個輸入 如果要像題目一次輸入的話 要怎麼改比較好呢
另外想問像這樣類似的問題 如果輸入n之後才能知道需要的陣列大小
宣告的時候要怎麼宣告呢 我目前是把大小設成一個相對大的數字 但我想應該有更好的方法 謝謝
作者: MOONRAKER (㊣牛鶴鰻毛人)   2017-04-17 17:20:00
當一個大字串輸入 然後照空白自己劈開轉換夠大就好了 1024也可以 不要糾結什麼「最好」的方法新手會在這種地方想很久還發明很奇葩的作法以前在本版看過一個不斷malloc 一次增加一個byte初學階段後可以用其他更方便的資料結構
作者: Hazukashiine (私は幸せです)   2017-04-17 17:22:00
如果接受 C99 的話, Variable-length Array 試試看如果不行的話 還是可以 malloc 出剛剛好大小的陣列
作者: longlongint (華哥爾)   2017-04-18 07:47:00
讀檔 把檔案重導到標準輸入樓上講的方法 or 用 c++ vector or 動態配置
作者: steve1012 (steve)   2017-04-18 14:03:00
可以用stl 的話可以用vector of pair
作者: ilms49898723 (LittleBird)   2017-04-18 15:04:00
你的寫法不是就能一次輸入了...?
作者: hunandy14 (Charlott.HonG)   2017-04-19 02:13:00
空白會自己變成下一個,這樣寫就可以一次導入了,試試
作者: bbalabababa (巴拉巴巴巴)   2017-04-19 03:48:00
開夠大的陣列while scanf!=EOF

Links booklink

Contact Us: admin [ a t ] ucptt.com