討論區快速選單
知識庫快速選單
軟體開發過程中有哪些資安漏洞? 政府補助!學嵌入式+物聯網
[ 回上頁 ] [ 討論區發言規則 ]
如何在Edit1 輸入數字拆解存入陣列
更改我的閱讀文章字型大小
作者 : 5397452(Bryant)
[ 貼文 23 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/3/31 下午 05:54:50
小弟想做一個 2轉10進位的程式

但輸入2進位時不知道該如何拆解成單獨字串存入陣列中

舉例: 輸入1011 拆解成 1,0,1,1 並存入陣列
該用什麼方法來解決這個問題呢?
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4473 | 人氣 37262 | 評價 10900 | 評價/貼文 2.44 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/3/31 下午 06:36:29
http://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/EN/html/delphivclwin32/!!MEMBEROVERVIEW_System__AnsiString.html

edit component uses AnsiString class as its text's type .
you may refer to above link and understand its member functions.
try to combine some member functions , such like c_str() , ... or declare directly an AnsiString type string and copy the contents of edit's member text to it , then handle it via a binary weight system .
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4473 | 人氣 37262 | 評價 10900 | 評價/貼文 2.44 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/3/31 下午 07:12:57
http://cbuilder.borlandforum.com/impboard/attach/0000021911/ansistr.pdf
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/3/31 下午 08:10:35
>但輸入2進位時不知道該如何拆解成單獨字串存入陣列中
>
>舉例: 輸入1011 拆解成 1,0,1,1 並存入陣列
>該用什麼方法來解決這個問題呢?

把字串 "1011" 當作字元陣列 { '1', '0', '1', '1'} 來處理應該會比拆成個別字串快跟方便. 請貼出你的程式.

真的要用字串的話, 用一個長度為 2 的字元陣列來存放也就可以了, 第一個元素放字串的字元, 第二個元素永遠都是終結字元 ('\0'), 像這樣:
  char binaryInput[80] = "1011";
  char oneCharWord[2] = { 0 };
  for (char *p = binaryInput, *p; ++p)
  {
    oneCharWord[0] = *p; /* 長度為一個字元的字串 */
    printf("%s\n", oneCharWord);
  }

作者 : 5397452(Bryant)
[ 貼文 23 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/3/31 下午 09:47:33
小弟還不知道該如何下手,那照您第一個方法,該怎麼把字串存為字元陣列呢?
作者 : 5397452(Bryant)
[ 貼文 23 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/3/31 下午 10:42:49
您有其他什方法可以讓 使用者 輸入 二進位的數字丟進陣列後在轉時進位嗎?
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/4/1 上午 01:54:32
>小弟還不知道該如何下手,那照您第一個方法,該怎麼把字串存為字元陣列呢?

在 C 及 C++ 語言裡, 字串本身就是一個特殊內容的字元陣列. 其特殊的地方就是陣列的最後一個字元必須是 0 值, 這個字元叫做「終結字元」, 用來標示字串的結束. 所有處裡字元的函式都是靠這個終結字元來判斷字串的長度, 結束點.

比方說以下的這個定義兼初始化:
  char s[80] = "abcde";

編譯器會自動的把字元陣列 's' 的前 6 個字元的內容設為:
   +-------------------+
  S|’a’|’b’|’c’|’d’|’e’|0|    |
   +-------------------+
第 7 個字元後面的都是亂碼.

另一個例子, 如果你用標準輸入函式來讀字串, 輸入函式會自動的加入終結字元:
  char s[80];
  scanf("%s", s);

如果你輸入 "xyz", 輸入函式會把 s 的頭 4 個字元設為: 'x', 'y', 'z', 和 0.

只有有終結字元的字元陣列才是字串.

上面所說的是 C 及 C++ 語言在語法上「字串」的定義, 不包括各種函式庫的 string class, 函式庫的 string class 有自己內部處理字元陣列的方法.

>您有其他什方法可以讓 使用者 輸入 二進位的數字丟進陣列後在轉時進位嗎?

有, 最簡單的方法就是用 strtol() 或 strtoul() 這個標準函式, 你可以用它第 3 個 'base' 參數來設進位, 可以用第 2 個 'endptr' 參數來檢查輸入的錯誤 (比方說要 2 進位, 但使用者打入 "0112", 'endptr' 會傳回指向第 4 個字元 ('2') 的指標.

自己參考這兩個函式的說明:
http://www.cplusplus.com/reference/cstdlib/strtol/
http://www.cplusplus.com/reference/cstdlib/strtoul/
作者 : vince0122(冰火狂魔)
[ 貼文 13 | 人氣 0 | 評價 50 | 評價/貼文 3.85 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/4/7 上午 10:12:46
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString t = Edit1->Text;
char *p = t.c_str();
char s[100] = {0};
int i = t.Length()-1;
int iResult = 0;
while (*p)
{
iResult = iResult + (*p - '0')*power(2,i);
i--;
p++;
}
Edit2->Text = iResult;

}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
int TForm1::power(int a,int b) //a的b次方的函式
{
int base = 1, i = 0;

for(i = 0; i < b; i++)
{
base = base * a;
}

return base;
}
 板主 : 徵求中
 > C++ Builder - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - C++ Builder - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
C++ Builder
1 windblown 5420 
2 Raynor 3120 
3 阿泰 2980 
4 workman 1650 
5 Linkin 1360 
6 CrazyStar 1260 
7 青衫 1160 
8 jonay 1080 
9 charlie 900 
10 小呆 770 
C++ Builder
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.078125