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

伊莉討論區

搜索
發表文章前請先閱讀相關版規尊貴會員無限觀看附件圖片儲值後自動升級用戶組
cosplay中出中文世紀帝國mg自慰adobe
菊花rki 490三國志10瑩瑩三國志10林莎天生仙種

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

[繁]無職轉生 第二季1

(4月新番)[簡]被稱為

[繁]為美好的世界獻上

桃園龜山 女騎士煞不

衝進中橫水溝 紅牌重

快艇正妹豪乳吸睛
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 3244|回復: 10
打印上一主題下一主題

[作業]檢查數值是否有重複[複製鏈接]

Rank: 2Rank: 2

帖子
511
積分
346 點
潛水值
21850 米
跳轉到指定樓層
樓主
發表於 2016-11-9 04:48 PM|只看該作者|倒序瀏覽
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。
本帖最後由 abcd345107 於 2016-11-9 04:54 PM 編輯

我又來請教惹,以下是題目 還有我的問題





問題描述 :

...
瀏覽完整內容,請先 註冊登入會員
分享分享0收藏收藏0支持支持0

幻想無限
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com

使用道具檢舉

Rank: 2Rank: 2

帖子
475
積分
967 點
潛水值
31609 米
頭香
發表於 2016-11-9 05:46 PM|只看該作者
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php
首先~版規好像有說程式碼要用 代碼 包起來...就是長得像 <> 的圖示...找一下應該看的到
第二....看來我說的讓你誤會太大了....大大把我昨天說的東西忘光光吧...咱們走正規路線
首先....往後cin接收的容器請用字串...直到您完全懂資料型態之前....
然後在C++裡面~字串可以...如下
  1. char test[10]; //這是由10個字元所組成的字串...不懂沒關係...總之記得這是普遍在C++裡面說的字串...也即是字元陣列所組成的

  2. string test_2; //這也是字串...他沒所謂的固定長度....只有最大長度~印象中沒設定好像可以4294967295...吧
複製代碼
因為根據您昨天的留言~得知課堂有教您使用下面那種~那就先用下面那種吧~對新手比較容易懂...也比較不會因為寫錯讓程式當掉^^

另外再補充一個大大現在應該還沒學到的觀念...昨天提過的~字串怎麼轉成數字呢?最簡單的方法是用atoi...範例如下
  1.         char test[10] = "123";
  2.         int n = atoi( test ) ;
複製代碼
範例出來結果會是 n = 123....那假如test裡面放的不是正規數字呢?假如放ABC會怎麼樣...那樣就會轉換失敗....n = 0
或許您又會問~不對阿~可是這字串用的是上面提到的字元陣列的字串...不是叫我用的string阿...
那是因為~string也有可以把自己內容轉成字元陣列的輸出函式囉...範例如下
  1. string test = "456";
  2.         int n = atoi( test.c_str() ) ;
複製代碼
吹了半天...終於要進入題目...直接給程式碼 + 註解說明....建議看完後~覺得理解後~蓋起來重新自己寫寫看
  1. #include <iostream>
  2. using namespace std;
  3. #include <string>
  4. int num[128];
  5. void main()
  6. {
  7.         int sum;
  8.         string buf ;

  9.         cout<<"請輸入你要輸入多少個值 : ";
  10.         cin>>sum;

  11.         cout<<"請輸入那串落落長的數字 : ";

  12.         for( int i = 0 ; i < sum ; i++ )        // 額外補充...很重要...這邊能這樣寫是因為空格對cin來說跟按下Enter可以理解為一樣動作
  13.         {
  14.                 cin>>buf;
  15.                 cout<<"內容是 : "<<buf<<endl;
  16.                 num[ i ] = atoi( buf.c_str() );
  17.                 cout<<"轉換出來的數字是 : "<<num[ i ]<<endl;
  18.         }

  19.         //至於後面的檢查....自己動手~快樂無窮
  20. }
複製代碼
...
瀏覽完整內容,請先 註冊登入會員
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。

使用道具檢舉

Rank: 2Rank: 2

帖子
511
積分
346 點
潛水值
21850 米
3
發表於 2016-11-9 08:03 PM|只看該作者
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。
baepi 發表於 2016-11-9 05:46 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

首先~版規好像有說程式碼要用 代碼 包起來...就是長得像  的圖示...找一下應該看的到
第二....看來我說的讓 ...

...
瀏覽完整內容,請先 註冊登入會員

點評

baepi 有不理解或是想要參考方向就問吧~畢竟剛踏入程式~能利用的函式也不多(因為根本不知道有那些東西)~腦袋也銹銹的轉不動(畢竟沒啥經驗)  發表於 2016-11-9 08:18 PM

幻想無限
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php

使用道具檢舉

Rank: 2Rank: 2

帖子
511
積分
346 點
潛水值
21850 米
4
發表於 2016-11-10 07:48 PM|只看該作者
abcd345107 發表於 2016-11-9 08:03 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

感謝大大 我會好好研究~ 其實我又有新的問題但一直問 會變成太依賴大大X) 那就明天再問吧(也沒差多久X) ) ...

我有個問題 那就 我們老師說過 string 也有包含數字 那為何我們又特別轉變成真正數字?...
瀏覽完整內容,請先 註冊登入會員

點評

snowflying 要怎麼用迴圈從字串的 1 跑道字串的 128 呢? 寫起來會比較難做吧。轉成整數可以拿來當作陣列索引值,判斷是否重複  發表於 2016-11-10 08:19 PM

幻想無限
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

Rank: 2Rank: 2

帖子
475
積分
967 點
潛水值
31609 米
5
發表於 2016-11-10 08:55 PM|只看該作者
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。
本帖最後由 baepi 於 2016-11-10 09:24 PM 編輯
abcd345107 發表於 2016-11-10 07:48 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

我有個問題 那就 我們老師說過 string 也有包含數字 那為何我們又特別轉變成真正數字? ...
...
瀏覽完整內容,請先 註冊登入會員





點評

abcd345107 大大們 可賜教 我已經很感謝了 不過腦袋混亂 還是有點疑惑 =w 所以發問一下  發表於 2016-11-11 02:38 AM
abcd345107 比方說 string s; cin>>s;(假如我輸入123) cout<<s[0]<<s[1]<<s[2]; (也就是1 2 3)  發表於 2016-11-11 02:35 AM
snowflying 編輯時切換到純文本模式,在 [/code] 後面補字就行了 (也可以補幾個字,切回非純文本模式編輯),如果編輯後程式碼縮排跑掉,再修就行了  發表於 2016-11-10 11:42 PM
snowflying 沒錯,"string 也有包含數字" 這句話看來看去還是不太明白,只好先自行猜測意思了 Q__Q  發表於 2016-11-10 11:40 PM

使用道具檢舉

Rank: 2Rank: 2

帖子
511
積分
346 點
潛水值
21850 米
6
發表於 2016-11-11 02:29 AM|只看該作者
本帖最後由 abcd345107 於 2016-11-11 02:42 AM 編輯

我最後解出來了 感謝大大提點,然後我的意思是這樣的 不是用以下程式碼也可以?
#include <iostream>
using namespace std;
#include <string>

void main()
{
        int sum;
        string buf;

        cout << "請輸入你要輸入多少個值 : ";
...
瀏覽完整內容,請先 註冊登入會員

幻想無限
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。

使用道具檢舉

Rank: 2Rank: 2

帖子
511
積分
346 點
潛水值
21850 米
7
發表於 2016-11-11 02:41 AM|只看該作者
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。
baepi 發表於 2016-11-10 08:55 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

老實說~看不懂大大想表明甚麼...相信點評的超級高手S大大也不是很確定對方想表達的吧...
以下是我的猜測~ ...

多學點 當然更好 感謝大大們 願意賜教囉~  不過 可能我的問題太過新手級,而在下常常因為一些小地方鑽牛角尖
...
瀏覽完整內容,請先 註冊登入會員

幻想無限
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。

使用道具檢舉

inunu 該用戶已被刪除
8
發表於 2016-11-11 03:21 AM|只看該作者
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。
string 本身也可以被用來進行比較, 也就是說
1. 切割字串
2. 字串轉數字
3. 數字比較

1. 切割字串
2. 字串比較
是一樣的功能

但, 用字串的話要再考慮輸入規則
題目要求:
"第二行是由空白鍵分隔開的數字序列,不超過128個數。
每一個數值介於1到序列數字個數的整數。"
所以輸入範圍只有 1 ~ 128, 而且受數列位置限制
...
瀏覽完整內容,請先 註冊登入會員

點評

snowflying 那應該是輸入說明 (前提),不是使用者要做的部份  發表於 2016-11-15 01:57 AM
abcd345107 原來如此 我還太嫩了><  發表於 2016-11-11 07:57 AM
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。

使用道具檢舉

Rank: 2Rank: 2

帖子
475
積分
967 點
潛水值
31609 米
9
發表於 2016-11-11 11:21 AM|只看該作者
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。
看懂大大期望的程式邏輯...只是大大真的讓程式跑過嗎?感覺錯很大哪~
另外還是那句題外話~cin雖然可以用int去收...但還是盡量避免這麼做...更別說 while (cin >> s)  這樣的東西出現...畢竟要cin錯誤的代價就是....他將永遠的錯下去~
如果今天你要程式往下一個階段走的代價是要程式先出錯....在這作業看起來問題是不大~畢竟輸入完後就是秀出結果了...可是假如你今天這段程式只是大程式的一部分....那麼當下次要在重新使用你這部分的程式碼功能時....他仍然是壞掉的....
...
瀏覽完整內容,請先 註冊登入會員

點評

abcd345107 ok,感謝大大 ,我們老師也常說,當一個程式碼出來 自己可行 客戶用卻不行時,就是工程師的錯,由大大的文中看出了 大大不愧是老手級w  發表於 2016-11-12 12:19 AM
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

Rank: 1

帖子
9
積分
31 點
潛水值
19590 米
10
發表於 2016-11-14 09:48 PM|只看該作者
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。
  1. int CheckValue(int* array, int length)
  2. {
  3.         int ans(1);
  4.         char record_book[128];
  5.         memset(record_book, 0, 128*sizeof(char));

  6.         for(int i(0); i<length; ++i)
  7.         {
  8.                 int rec_index( (array[i]-1) );
  9.                 if( !record_book[ rec_index ] )
  10.                         ++record_book[ rec_index ];
  11.                 else
  12.                 {
  13.                         ans = 0;
  14.                         break;
  15.                 }
  16.         }

  17.         return ans;
  18. }
複製代碼
用一個 [128] 長度的陣列來記錄輸入的數字陣列中的數字出現次數,如果發現有大於 1 就是該數字重複,馬上 break & return。

上面的做法的缺點是如果輸入的陣列很短,會有很多記憶體浪費沒用到 : p...
瀏覽完整內容,請先 註冊登入會員





點評

baepi 我上面的程式碼只是入門教學~正式寫法應該是用動態記憶體 + 在cin收到資料後就可以判斷是否有重複了^^  發表於 2016-11-14 11:54 PM

使用道具檢舉

CoNsTaRwU 該用戶已被刪除
11
發表於 2016-11-20 08:25 PM|只看該作者
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php
本帖最後由 CoNsTaRwU 於 2016-11-20 08:39 PM 編輯

你只需要一個 find (下面的 elem) 然後遞迴/迭代下去就可以了
  1. noDup : [Nat] → Bool
  2. noDup [] = true
  3. noDup (x::xs) = (not $ elem x xs) && (noDup xs)
複製代碼
1. 取一個正整數 List 並回傳 Bool
2. 如果為空 List 直接回傳 true
3. 先檢查首項(x)是否在後面(xs)重複出現,沒有的話對去除首項的 List 做一樣的檢查直到變為空 List...
瀏覽完整內容,請先 註冊登入會員
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。

使用道具檢舉

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

Powered by Discuz!

© Comsenz Inc.

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