找回密碼
 註冊

[請益][C++]數字加碼後,在解碼回去

来源: 新聞 gimball1220 2010-9-21 08:34 只看這個作者 |閱讀模式
5 4977
本文章最後由 site-admin 於 2015-12-27 18:09 編輯 1.輸入四位數。每個數字個別+7 - > 分別 %10 - > 1,3互換  2,4互換
2.把1加碼後的數字(可能為3位數的0189或4位數)
現在要做的是第二點...輸入189可以順利跑出1234(正確),但其他答案就不行了...都跑出 X - XXXX ,不知道哪錯,請達人教導!
#include<iostream
using namespace std ;
int main ()
{
        int i ;
        int a ;
        int b ;
        int c ;
        int d ;
       
        cout << "Enter an encrypted number : " ;
        cin >> i ;
            
            if(i / 1000 == 0)   {                                   
                   a = 0 ;
                   b = i / 100      ;
                   c = i / 10  % 10 ;
                   d = i       % 10 ;
                       
                        a= 10;
            
                        if(b >= 7)
                                        b = b ;
                        else
                                        b += 10 ;
                    
                    if(c >= 7)
                                        c = c ;
                        else
                                        c += 10 ;
                    if(d >= 7)
                                        d = d ;
                    else
                                        a += 10 ;
                                a -= 7 ;
                b -= 7 ;
                c -= 7 ;
                d -= 7 ;
                               
                                cout << c << d << a << b <<endl ;  
                          }
                else   {
                   a= i / 1000      ;
                   b= i / 100  % 10 ;
                   c= i / 10   % 10 ;
                   d= i        % 10 ;
               
            if(a >= 7)
                                    a = a ;
                        else
                    a += 10 ;
                    
                    if(b >= 7)
                                        b = b ;
                        else
                                        b += 10 ;
                    
                    if(c >= 7)
                                        c = c ;
                        else
                                        c += 10 ;
                    if(d >= 7)
                                        d = d ;
                    else
                                        a += 10 ;
                                a -= 7 ;
                b -= 7 ;
                c -= 7 ;
                d -= 7 ;
                               
                                cout << c << d << a << b <<endl ;  
                              }
               
               
                system ("PAUSE") ;
                return 0 ;
}

JSD-Google [/img] :.| .. [/url]
收藏
收藏0
原 來 " 平 淡 " 也 可 以 這 麼 美 好 ! !

網友回覆5

跳到指定樓層
本文章最後由 site-admin 於 2015-12-27 18:09 編輯 很想幫妳,不過c已經兩年沒用了
程式也都沒灌起來093.gif

JSD-Google [/img] :.| ..┦┦ [/url]
本文章最後由 site-admin 於 2015-12-27 18:09 編輯 寫這種非遞回程式碼需要考慮很周延,各個情況都要顧慮,且空間複雜度占的很多
或許你可以從遞回去想想


JSD-Google [/img] :.| ..エエ [/url]
4#
ng01 2010-9-21 09:17 只看這個作者
本文章最後由 site-admin 於 2015-12-27 18:09 編輯 請問%是取餘數吧?
0189==全+7之後==>7 8 15 16==%10==>7 8 5 6==>13 24換位==>5678
為什麼是1234呢@@
第2點的目的是要做什麼?我看不懂XD

JSD-Google [/img] ≤≤.≤≤. .. [/url]
本文章最後由 site-admin 於 2015-12-27 18:09 編輯 阿....
依小弟的淺見
幫您做了大幅度修改,請見諒[請益][C++]數字加碼後,在解碼回去3215
這是解碼的,測試一下對不對吧
int main(int argc, char *argv[])
{
   
   
    int i ;
        int a ;
        int b ;
        int c ;
        int d ;
       
       
        cout << "Enter an encrypted number : " ;
        cin >> i ;
               
        if(i<9999){
                         
                a = i / 1000;
                b = i / 100 % 10 ;
                c = i / 10  % 10 ;
                d = i       % 10 ;
           
                if(a < 7) a += 10;
                if(b < 7) b += 10;
               
                if(c < 7) c += 10;
               
                if(d < 7) d += 10;
               
                a -= 7 ;
                b -= 7 ;
                c -= 7 ;
                d -= 7 ;
                  
                cout << c << d << a << b <<endl ;  
               
        }
   
   
    system("[請益][C++]數字加碼後,在解碼回去1851AUSE");
    return EXIT_SUCCESS;
}

JSD-Google [/img] :.| ..覀覀 [/url]
本文章最後由 site-admin 於 2015-12-27 18:09 編輯 搞定了嚕~~~~~~~~~~~~~~~~

由小老婆網管Jorsindoズズ.ズズ. .. [/url]
原 來 " 平 淡 " 也 可 以 這 麼 美 好 ! !