找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
發表文章前請先閱讀相關版規伊莉需要你的贊助和支持儲值後自動升級用戶組
無修rion中文中文mg自慰
妹相隨竹北宮原歩開局去poro開局刺客教條

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]Re:Monster 06-

[簡]終末的火車前往何

[繁]蔚藍檔案06-

(4月新番)[繁]狼與辛

[繁]格林童話變奏曲02

✡ 斗破蒼穹 年番/鬥
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 1698|回復: 11
打印上一主題下一主題

[討論]請問這段程式碼所出現的問題原因為何?[複製鏈接]

Rank: 3Rank: 3Rank: 3

帖子
831
積分
1547 點
潛水值
10965 米
跳轉到指定樓層
樓主
發表於 2011-2-10 06:11 PM|只看該作者|倒序瀏覽
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com
本帖最後由 低調的宅男 於 2011-2-10 07:10 PM 編輯
  1. #include <iostream.h>
  2. #include <vector>
  3. using namespace std;
  4. int main()
  5. {   
  6.     int x;
  7.     const int j = x;
  8.     int iarr[j];
  9.     cout<<"輸入一個數:";
  10.     cin>>x;
  11.     for (int j=1;j<=x;j++)
  12.     {
  13.      iarr[j]=j;
  14.      cout<<iarr[j]<<endl;
  15.     }
  16.     system ("pause");
  17.     return 0;   
  18. }
複製代碼


小弟用Dev C++寫得
在跑得時候出現一個問題,當我輸入一個數為12以上時會出現錯誤
而且視窗出現的只出現到12

EX:我輸入10
1
2
3
4
5
6
7
8
9
10

EX:我輸入15
1
2
3
4
5
6
7
8
9
10
11
12

出現錯誤
請各位大大解答...
瀏覽完整內容,請先 註冊登入會員
分享分享0收藏收藏0支持支持0
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。

使用道具檢舉

Rank: 3Rank: 3Rank: 3

帖子
722
積分
2721 點
潛水值
16557 米
頭香
發表於 2011-2-10 06:39 PM|只看該作者
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。
先看看你的 array 多大吧
  1. cout << "Array size: " << ( sizeof( iarr ) / sizeof( int ) ) << endl;
複製代碼

使用道具檢舉

極地之星光 該用戶已被刪除
3
發表於 2011-2-10 06:51 PM|只看該作者
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。
因為未給x值
  1.     int x;         //未給初始值的x
  2.     const int j = x;     //j 的值未知
  3.     int iarr[j];            //宣告一個不明大小的陣列
複製代碼
大概是x殘值是12吧…
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。

使用道具檢舉

Rank: 1

帖子
105
積分
196 點
潛水值
7917 米
4
發表於 2011-2-10 07:12 PM|只看該作者
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。
本帖最後由 ponchi96 於 2011-2-10 07:16 PM 編輯
  1. #include <iostream.h>
  2. #include <vector>
  3. using namespace std;
  4. int main()
  5. {   
  6.     int x;//顯示前一定會輸入x值 未設就算了
  7.     int iarr[100];//直接宣告陣列大小
  8.     //const int j = x;  int iarr[j]; 這兩行我不太懂意義是什麼
  9.     cout<<"輸入一個數:";
  10.     cin>>x;
  11.     for (int j=1;j<=x;j++)
  12.     {
  13.      iarr[j]=j;
  14.      cout<<iarr[j]<<endl;
  15.     }
  16.     system ("pause");
  17.     return 0;   
  18. }
複製代碼

算了,當作要省空間好了,輸入X後,宣告一個X大的陣列
  1. #include <iostream.h>
  2. #include <vector>
  3. using namespace std;
  4. int main()
  5. {   
  6.     int x;
  7.     cout<<"輸入一個數:";
  8.     cin>>x;
  9.     int iarr[x];
  10.     for (int j=1;j<=x;j++)
  11.     {
  12.      iarr[j]=j;
  13.      cout<<iarr[j]<<endl;
  14.     }
  15.     system ("pause");
  16.     return 0;   
  17. }
複製代碼
...
瀏覽完整內容,請先 註冊登入會員
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。

使用道具檢舉

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

帖子
2979
積分
12825 點
潛水值
41478 米
5
發表於 2011-2-10 07:17 PM|只看該作者
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。
回復
下載: 訪客無法瀏覽下載點,請先 註冊登入會員
低調的宅男


0. 你的書太老了
  1. #include <iostream.h>
  2. using namespace;
複製代碼
你的書可以拿去丟了
  1. #include <iostream>
  2. using namesapce std;
複製代碼
1. const int j 未給予明確數值
  1.     int x;
  2.     const int j = x;
複製代碼
你的 j 從頭到尾都會是綁定的 x,不過在 assing to j 時, x 卻是未知的,run time error

2. 變數建議、index error
  1.     for (int j=1;j<=x;j++)
  2.     {
  3.          iarr[j]=j;
  4.          cout<<iarr[j]<<endl;
  5.     }
複製代碼
我覺得你一開始就已經有 const int j 了,
這裡面的 loop index 就不要用 j,
另外 index 應是從 0 到 x-1 ,而不是從 1 到 x

3. 你沒用到 vector

你有 include <vector> ,不過一直沒用到它,我假設你是要用 vector 方式去解這題,
簡單的方式大概會長這樣
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. int main()
  5. {   
  6.     int x;
  7.     vector<int> iarr;
  8.     cout<<"輸入一個數:";
  9.     cin>>x;
  10.     iarr.resize(x); // 重設 iarr 大小   
  11.    
  12.     for (int j=0;j<x;j++)
  13.     {
  14.         iarr[j]=j;
  15.         cout<<iarr[j]<<endl;
  16.     }
  17.     system ("pause");
  18.     return 0;   
  19. }
複製代碼
...
瀏覽完整內容,請先 註冊登入會員





如果我說,灌了二頁的水是因為lag / 系統不穩,
我想應該也不會有人相信吧..
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com

使用道具檢舉

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

帖子
2979
積分
12825 點
潛水值
41478 米
6
發表於 2011-2-10 07:21 PM|只看該作者
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。
回復
下載: 訪客無法瀏覽下載點,請先 註冊登入會員
ponchi96
  1.     cin>>x;
  2.     int iarr[x];
複製代碼
我很好奇你和原 po 的 compiler 是哪一套?
這段碼可以過讓我有點意外。
standard C/C++ 應不支援 VAL 吧?...
瀏覽完整內容,請先 註冊登入會員
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。

使用道具檢舉

Rank: 3Rank: 3Rank: 3

帖子
831
積分
1547 點
潛水值
10965 米
7
發表於 2011-2-10 07:23 PM|只看該作者
本帖最後由 低調的宅男 於 2011-2-10 07:50 PM 編輯

回復
下載: 訪客無法瀏覽下載點,請先 註冊登入會員
ponchi96


感謝~
您第二個程式碼正式我想要得那種

我找到問題了
  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {   
  5.     int x;
  6.     cout<<"輸入一個數:";
  7.     cin>>x;
  8.     int iarr[x];   //我這行程式碼放在cout<<"輸入一個數:";前面,導致它無法出現全部的數字
  9.     for (int j=1;j<=x;j++)
  10.     {
  11.      iarr[j]=j;
  12.      cout<<iarr[j]<<endl;
  13.     }
  14.     /*vector<int> ivector (iarr, iarr+5);
  15.     for (int i=0;i<ivector.size();i++)
  16.     {
  17.      cout<<ivector[i]<<" ";
  18.     }
  19.     cout<<endl;
  20.     */
  21.     system ("pause");
  22.     return 0;   
  23. }
複製代碼
vevtor那段我後來發現還真沒用到......
瀏覽完整內容,請先 註冊登入會員
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

Rank: 1

帖子
105
積分
196 點
潛水值
7917 米
8
發表於 2011-2-10 07:31 PM|只看該作者
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。
回復
下載: 訪客無法瀏覽下載點,請先 註冊登入會員
goodbye_mylove



我是用devc++ compile
原諒我見識短淺= =
standard C/C++ 應不支援 VAL
我不太懂意思
是邏輯問題還是寫法有問題
他寫的應該是c++沒錯吧
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。

使用道具檢舉

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

帖子
2979
積分
12825 點
潛水值
41478 米
9
發表於 2011-2-10 07:40 PM|只看該作者
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php
回復
下載: 訪客無法瀏覽下載點,請先 註冊登入會員
ponchi96


VAL : Variable Array Length, 可變陣列長度。

C/C++ 在「執行期前」就必須確定陣列的大小,但剛的例子是
  1. int x;
  2. cin >> x;
  3. int arr[x];
複製代碼
很明顯是在 「執行期當時」才可以確定陣列的大小,這似乎是 Compiler 實做出來的。具小弟不才所知,目前 VC, BCB 並不支援 VAL (GCC 不知道有沒有支援)

於是靜態陣列比較常用下列做法
  1. #define N 20
  2. const int x=10

  3. int arr[N]; // 可過,define 是於「編譯期前」就代入的東西
  4. int arr2[x]; // 可過, const 是於「編譯期」時的東西,「編譯期」的確是於「執行期」前
複製代碼
至於要執行期才決定陣列大小的話,就用 new/malloc 或是用 vector,
所以小弟才納悶您是用哪套 compiler...
瀏覽完整內容,請先 註冊登入會員
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。

使用道具檢舉

Rank: 1

帖子
105
積分
196 點
潛水值
7917 米
10
發表於 2011-2-10 07:45 PM|只看該作者
回復
下載: 訪客無法瀏覽下載點,請先 註冊登入會員
goodbye_mylove


正如你所說
我通常陣列也是先宣告大小
  1. #     int x;
  2. #     const int j = x;
  3. #     int iarr[j];
複製代碼
只是我看沒宣告x值都可以過了
所以也就照著打了
想說他要省空間
結果竟然compile可以過XD...
瀏覽完整內容,請先 註冊登入會員





使用道具檢舉

Rank: 3Rank: 3Rank: 3

帖子
722
積分
2721 點
潛水值
16557 米
11
發表於 2011-2-10 07:58 PM|只看該作者
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。
variable-length arrays 是 C99 的特性
Borland 跟 MS 主力都放在 C++,不支援 C99
這裡有列出支援 C99 特性的編釋器
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

使用道具檢舉

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

帖子
2979
積分
12825 點
潛水值
41478 米
12
發表於 2011-2-10 08:22 PM|只看該作者
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。
回復
下載: 訪客無法瀏覽下載點,請先 註冊登入會員
kaworucloud



謝謝指正。
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部