#2171: 奇怪~就是跑不出來


joleen60626 (香蕉)

學校 : 國立臺南女子高級中學
編號 : 3947
來源 : [140.127.200.66]
最後登入時間 :
2012-11-21 10:27:00
a020. 身分證檢驗 | From: [218.165.53.132] | 發表日期 : 2009-07-17 19:55

#include<iostream>
using namespace std;

int main(){
    string s;
    int a,b,c,d;
    while(cin>>s){
                  if((int)s[0]>=65&&(int)s[0]<=72)
                  a=(int)s[0]-55;
                  if((int)s[0]>=74&&(int)s[0]<=78)
                  a=(int)s[0]-56;
                  if((int)s[0]>=80&&(int)s[0]<=86)
                  a=(int)s[0]-57;
                  if((int)s[0]==88||(int)s[0]==89)
                  a=(int)s[0]-58;
                  if((int)s[0]==87)
                  a=(int)s[0]-55;
                  if((int)s[0]==90)
                  a=(int)s[0]-57;
                  if((int)s[0]==73)
                  a=(int)s[0]-39;
                 
                  b=a/10;    
                  c=a%10;
                  d=b+c*9+s[1]*8+s[2]*7+s[3]*6+s[4]*5+s[5]*4+s[6]*3+s[7]*2+s[8]*1+s[9];
                  if(d%10==0)
                  cout<<"real"<<endl;
                  else
                  cout<<"fake"<<endl;
                  }
     system("pause");
     return 0;
     }                

請問我的程式出了什麼問題嗎~

 
#2174: Re:奇怪~就是跑不出來


david942j (文旋)

學校 : 臺北市立成功高級中學
編號 : 6086
來源 : [115.43.75.16]
最後登入時間 :
2017-02-18 13:17:39
a020. 身分證檢驗 | From: [58.115.138.158] | 發表日期 : 2009-07-18 16:26

#include
using namespace std;

int main(){
    string s;
    int a,b,c,d;
    while(cin>>s){
                  if((int)s[0]>=65&&(int)s[0]<=72)
                  a=(int)s[0]-55;
                  if((int)s[0]>=74&&(int)s[0]<=78)
                  a=(int)s[0]-56;
                  if((int)s[0]>=80&&(int)s[0]<=86)
                  a=(int)s[0]-57;
                  if((int)s[0]==88||(int)s[0]==89)
                  a=(int)s[0]-58;
                  if((int)s[0]==87)
                  a=(int)s[0]-55;
                  if((int)s[0]==90)
                  a=(int)s[0]-57;
                  if((int)s[0]==73)
                  a=(int)s[0]-39;
                 
                  b=a/10;    
                  c=a%10;
                  d=b+c*9+s[1]*8+s[2]*7+s[3]*6+s[4]*5+s[5]*4+s[6]*3+s[7]*2+s[8]*1+s[9];
                  if(d%10==0)
                  cout<<"real"<                  else
                  cout<<"fake"<                  }
     system("pause");
     return 0;
     }                

請問我的程式出了什麼問題嗎~


上面字母換數字沒檢查對不對

但是

s[1]*8+s[2]*7+s[3]*6+s[4]*5+s[5]*4+s[6]*3+s[7]*2+s[8]*1+s[9];

這些地方s[]是字元,不是數字

好比說如果s[1]是'1'

那s[1]*8會判斷成49*8而=392  不是想要的8

所以每個都要這樣改

(s[1]-'0')*8+(s[2]-'0')*7+........+(s[8]-'0')+(s[9]-'0');

試試看吧~

 
ZeroJudge Forum