廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 3845 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
vwmn123 手機
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[C/C++][討論] 身份證問題
請問要如何表示字串 J=18,再問18要分開計算如 ( 1*1=1 ) +  ( 8*9=72 ) 如何寫 
以下的程式碼是我用"我目前學到的做的" = =只有教到迴圈而已
 我不要身份證的程式碼,只想問一些小細節(如字串,陣列,指標)
自學中


#include <iostream.h>
#include <stdlib.h>
using namespace std;
int main()
{ int z,y,x,a,b,c,d,e,f,g,h,i,s1,s2,s3,s4,s5;
do
{
cout<<"輸 ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



獻花 x0 回到頂端 [樓 主] From:歐洲 | Posted:2009-02-05 07:08 |
0800959595
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x2
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

你好像沒提到你的問題耶...@@?

你這樣寫會發生一個問題,例如身份證開頭B我剛開始輸入11,
並不是z=1.y=1,而是z=11.y尚未輸入。(y會是原本記憶體內垃圾值)
除非輸入1 1,則z=1.y=1。

你可以讀取一個字元(A~Z),然後參照ASCII表去轉換成你要的值,
如表中A=65,所以你要將你得到的字元-55。


接著的九碼數字也會遇到相同的問題,也可以用字元陣列去讀取。


獻花 x0 回到頂端 [1 樓] From:臺灣 | Posted:2009-02-05 08:45 |
totsi
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x53
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

J= 18拆成1*1+8*9有兩種作法..

作法一:輸入是字串的時候
先把1跟8拆成兩個字元,之後再利用atoi轉成整數來計算。
複製程式
int n1stNumber = 0, n2ndNumber = 0;
char szTitle[3];  //這邊要Title是定長度的時候會比較安全
char szNumber[2];  //這是用來作atoi轉換用的暫存
cin >> szTitle;

strcpy(szNumber, szTitle, 1); //複製第一個字元到szNum
n1stNumber = atoi(szNumber);

strcpy(szNumber, (szTitle+1), 1); //複製第二個字元到szNum
n2ndNumber = atoi(szNumber);

int nResult = n1stNumber * 1 + n2ndNumber * 9;
這個作法比較麻煩。

作法二:輸入是數字
複製程式
int nTitle = 0;
cin >> nTitle;

if ( nTitle >99 ) { messagebox( NULL, "The input value is not valid.", 0, 0); };

int n1stNumber = nTitle / 10;
int n2ndNumber = nTitle % 10;

int nResult = n1stNumber * 1 + n2ndNumber *9;
這方法比較快,不過這邊要記得加上數字長度檢查,不然值會取錯。

至於你貼的code的部份,感覺跟你問的問題差很多,因為code部分是抓整數進來,並不是抓字串。
所以你可以直接對數值處理就好。
表情


恩...
獻花 x0 回到頂端 [2 樓] From:臺灣中華電信HINET | Posted:2009-02-05 09:02 |
vwmn123 手機
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

表情 表情 表情 表情 表情 回二樓 我的問題可能是說的不夠明顯 所以 你不懂
但謝謝你的ASCII碼,我改看看,你說的問題點,老實講我用 J   O 二個英文的身份證的算法是正確
因為我也只有 J   O 的資料, 在我的程式碼裡是 J 打1 ENTER 打8再ENTER 所以會打 11次
表情 表情 表情


獻花 x0 回到頂端 [3 樓] From:歐洲 | Posted:2009-02-05 18:00 |
vwmn123 手機
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

回三樓 其實我是想改成 一次打入 A123456789   來驗證 身份證碼是 一次打入 A123456789   來驗證 身份證碼是否正確 ,再外加一些如果錯,錯在那, 長度不足--長度超過,性別不符之類的
表情 表情 表情   我貼的是能跑.........只是跑的方式很爛,想改好一點
表情 表情 表情


獻花 x0 回到頂端 [4 樓] From:歐洲 | Posted:2009-02-05 18:11 |
totsi
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x53
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

老實說,你的問題是問英文字轉成數字後如何再處理那個數字
而你的code裡面是把英文字跟數字分開讀入 表情

所以問題明確一點的話,或許你可以很快問到你要的作法 表情

至於你後來問的問題,只要一次輸入的部份,就要求使用者一次輸入就好。

反正身分證的格式是固定的,使用者輸入完後你在針對格式做字串處理就行了。

EX:A123456789->A ,123456789

之後再做你要做的內容檢查就行了

但記得抓到輸入值時也順便做長度檢查,避免抓到無意義的值 表情


恩...
獻花 x0 回到頂端 [5 樓] From:臺灣中華電信HINET | Posted:2009-02-06 09:01 |
0800959595
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x2
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

可以用長度10的字元陣列去讀取,然後再把A~Z的英文字母跟0~9轉成數字。


獻花 x0 回到頂端 [6 樓] From:臺灣 | Posted:2009-02-06 19:20 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.058985 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言