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


joleen60626 (香蕉)


#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 (文旋)


#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');

試試看吧~