#2321: Dev執行結果跟送出的結果不一樣


azreal (NewC)


#include<iostream>

using namespace std;
int main()
{int s ;
while(cin >>s)
{
  int a,j[10]={0},i=0,b=0,c=0,e=0;
   {
     for(i=0;i>=0;i++)
     {j[i]=s%10;
      s=(int)s/10;
      if(s==0)
      break;}


     for(;i>=0;i--)
     {
      a=j[i];
      switch(a)
      {
       case 1:cout<<"壹";break;
       case 2:cout<<"貳";break;
       case 3:cout<<"參";break;
       case 4:cout<<"肆";break;
       case 5:cout<<"伍";break;
       case 6:cout<<"陸";break;
       case 7:cout<<"柒";break;
       case 8:cout<<"捌";break;
       case 9:cout<<"玖";break;
      }


      if(a)
      {
       b=(i+1)%4;c=(i+1)/4;
       if(b==2&&c==0||b==c&&c==2||b==2&&c==1)
       {cout<<"拾";}
       if(b==3&&c==0||b==3&&c==1)
       {cout<<"佰";}
       if(b==0&&c==1||b==0&&c==2)
       {cout<<"仟";}
      }


      if(i==4&&e==0)
       {cout<<"萬";}
       if(i==8)
       {cout<<"億";}


      if(j[i]==0&&j[i-1]!=0)
      {cout<<"零";}else
      {continue;}     
     }
     }
cout <<endl;
}  
return 0;
}

在Dev上輸入10,輸出結果是壹拾

但是送出以後出現WA顯示我的答案是壹拾零

是測資有問題還是我的程式碼有漏洞

小弟自學不久還請各位前輩幫忙一下,謝謝^^

#2324: Re:Dev執行結果跟送出的結果不一樣


david942j (文旋)


#include

using namespace std;
int main()
{int s ;
while(cin >>s)
{
  int a,j[10]={0},i=0,b=0,c=0,e=0;
   {
     for(i=0;i>=0;i++)
     {j[i]=s%10;
      s=(int)s/10;
      if(s==0)
      break;}


     for(;i>=0;i--)
     {
      a=j[i];
      switch(a)
      {
       case 1:cout<<"壹";break;
       case 2:cout<<"貳";break;
       case 3:cout<<"參";break;
       case 4:cout<<"肆";break;
       case 5:cout<<"伍";break;
       case 6:cout<<"陸";break;
       case 7:cout<<"柒";break;
       case 8:cout<<"捌";break;
       case 9:cout<<"玖";break;
      }


      if(a)
      {
       b=(i+1)%4;c=(i+1)/4;
       if(b==2&&c==0||b==c&&c==2||b==2&&c==1)
       {cout<<"拾";}
       if(b==3&&c==0||b==3&&c==1)
       {cout<<"佰";}
       if(b==0&&c==1||b==0&&c==2)
       {cout<<"仟";}
      }


      if(i==4&&e==0)
       {cout<<"萬";}
       if(i==8)
       {cout<<"億";}


      if(j[i]==0&&j[i-1]!=0)
      {cout<<"零";}else
      {continue;}     
     }
     }
cout <}  
return 0;
}

在Dev上輸入10,輸出結果是壹拾

但是送出以後出現WA顯示我的答案是壹拾零

是測資有問題還是我的程式碼有漏洞

小弟自學不久還請各位前輩幫忙一下,謝謝^^

看了一下你的程式碼

發現有個漏洞是如果測資打0的話妳的程式不會輸出

另外的確DEV跟網路主機對於錯誤處理可能有些不同

我想問題應該在於你判斷要不要輸出"零"的時候有問題

因為j[i-1]可能不存在(當i<1的時候!)

所以那邊改成這樣試試看

if(j[i]==0&&i>=1&&j[i-1]!=0)
      {cout<<"零";}

另外記得處理一下s一開始就輸入0的情況

#2329: Re:Dev執行結果跟送出的結果不一樣


azreal (NewC)


 

看了一下你的程式碼

發現有個漏洞是如果測資打0的話妳的程式不會輸出

另外的確DEV跟網路主機對於錯誤處理可能有些不同

我想問題應該在於你判斷要不要輸出"零"的時候有問題

因為j[i-1]可能不存在(當i<1的時候!)

所以那邊改成這樣試試看

if(j[i]==0&&i>=1&&j[i-1]!=0)
      {cout<<"零";}

另外記得處理一下s一開始就輸入0的情況

一開始輸入0的情況俢正了,i<1的狀況也有加入了

但是輸入10答案顯示還是壹拾零,可能就像是文旋大講的是Dev跟測資處理有差別

還是多謝解答^^

#2330: Re:Dev執行結果跟送出的結果不一樣


azreal (NewC)


 

看了一下你的程式碼

發現有個漏洞是如果測資打0的話妳的程式不會輸出

另外的確DEV跟網路主機對於錯誤處理可能有些不同

我想問題應該在於你判斷要不要輸出"零"的時候有問題

因為j[i-1]可能不存在(當i<1的時候!)

所以那邊改成這樣試試看

if(j[i]==0&&i>=1&&j[i-1]!=0)
      {cout<<"零";}

另外記得處理一下s一開始就輸入0的情況

一開始輸入0的情況俢正了,i<1的狀況也有加入了

但是輸入10答案顯示還是壹拾零,可能就像是文旋大講的是Dev跟測資處理有差別

還是多謝解答^^



剛剛試了幾次把程式碼修改城下面這樣就成功了

if(i>=1){

if(j[i]==0&&j[i-1]!=0)
      {cout<<"零";}

}