#3794: 奇怪了怎麼我入的跟檢查的不一樣><


s50217 (凱哥~~)


#include <iostream>
#include <string>
using namespace std;
string convert(char number);
int main()
{
 string x;
 int count = 0;
 string output;
 while(cin >> x)
 {
 count = x.length();
 for(int i = 0;i < x.length();i++)
 {
  switch(count)
  {
  case 10:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "拾";
   }
   break;
  case 9:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "億";
   }
   else
   {
    output += "億";
   }
   break;
  case 8:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "仟";
   }
   else if(x[i] == '0' &&
     (x[i + 1] != '0' || x[i + 2] != '0'
     || x[i + 3] != '0' || x[i + 4] != '0' || x[i + 5] != '0' || x[i + 6] != '0'))
   {
    output += "零";
   }
   break;
  case 7:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "佰";
   }
    else if(x[i] == '0' &&
     (x[i + 1] != '0' || x[i + 2] != '0'
     || x[i + 3] != '0' || x[i + 4] != '0' || x[i + 5] != '0'))
   {
    output += "零";
   }
   break;
  case 6:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "拾";
   }
   else if(x[i] == '0' && (x[i + 1] != '0' || x[i + 2] != '0' || x[i + 3] != '0' || x[i + 4] != '0'))
   {
    output += "零";
   }
   break;
  case 5:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "萬";
   }
   else
   {
    output += "萬";
   }
   break;
  case 4:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "仟";
   }
   else if(x[i] == '0' && (x[i + 1] != '0' || x[i + 2] != '0' || x[i + 3] != '0'))
   {
    output += "零";
   }
   break;
  case 3:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "佰";
   }
   else if(x[i] == '0' && (x[i + 1] != '0' || x[i + 2] != '0'))
   {
    output += "零";
   }
   break;
  case 2:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "拾";
   }
   else if(x[i] == '0' && x[i + 1] != '0')
   {
    output += "零";
   }
   break;
  case 1:
   if(x[i] != '0')
   {
    output += convert(x[i]);
   }
   else if(x.length() == 1)
   {
    output += convert(x[i]);
   }
   break;
  }
  count--;
 }
 int j;
 for(int k = 0;k < output.length();k++)
 {
  if((j = output.find("零零零")) != -1) output.erase(j,4);
  if((j = output.find("零零")) != -1) output.erase(j,2);
  if((j = output.find("億萬")) != -1) output.erase(j + 2,2);
  if((j = output.find("零拾")) != -1) output.erase(j,2);
  if((j = output.find("零萬")) != -1) output.erase(j,2);
  if((j = output.find("零仟")) != -1) output.erase(j,2);
  if((j = output.find("零佰")) != -1) output.erase(j,2);
  if((j = output.find("零億")) != -1) output.erase(j,2);
 }
 cout << output << endl;
 output = "";
 }
 return 0;
}

string convert(char number)
{
 string str;
 switch(number)
 {
 case '0':
  str = "零";
  break;
 case '1':
  str = "壹";
  break;
 case '2':
  str = "貳";
  break;
 case '3':
  str = "參";
  break;
 case '4':
  str = "肆";
  break;
 case '5':
  str = "伍";
  break;
 case '6':
  str = "陸";
  break;
 case '7':
  str = "柒";
  break;
 case '8':
  str = "捌";
  break;
 case '9':
  str = "玖";
  break;
 default:
  cout << "ERROR!\n";
  exit(1);
 }
 return str;
}

 

我問老師她說我第11行出錯 可是我不知道怎麼改 拜託哪位高手可以救我 我快哭ㄌ ㄒ^ㄒ

#3795: Re:奇怪了怎麼我入的跟檢查的不一樣><


linishan (L)


#include
#include
using namespace std;
string convert(char number);
int main()
{
 string x;
 int count = 0;
 string output;
 while(cin >> x)
 {
 count = x.length();
 for(int i = 0;i < x.length();i++)
 {
  switch(count)
  {
  case 10:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "拾";
   }
   break;
  case 9:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "億";
   }
   else
   {
    output += "億";
   }
   break;
  case 8:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "仟";
   }
   else if(x[i] == '0' &&
     (x[i + 1] != '0' || x[i + 2] != '0'
     || x[i + 3] != '0' || x[i + 4] != '0' || x[i + 5] != '0' || x[i + 6] != '0'))
   {
    output += "零";
   }
   break;
  case 7:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "佰";
   }
    else if(x[i] == '0' &&
     (x[i + 1] != '0' || x[i + 2] != '0'
     || x[i + 3] != '0' || x[i + 4] != '0' || x[i + 5] != '0'))
   {
    output += "零";
   }
   break;
  case 6:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "拾";
   }
   else if(x[i] == '0' && (x[i + 1] != '0' || x[i + 2] != '0' || x[i + 3] != '0' || x[i + 4] != '0'))
   {
    output += "零";
   }
   break;
  case 5:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "萬";
   }
   else
   {
    output += "萬";
   }
   break;
  case 4:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "仟";
   }
   else if(x[i] == '0' && (x[i + 1] != '0' || x[i + 2] != '0' || x[i + 3] != '0'))
   {
    output += "零";
   }
   break;
  case 3:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "佰";
   }
   else if(x[i] == '0' && (x[i + 1] != '0' || x[i + 2] != '0'))
   {
    output += "零";
   }
   break;
  case 2:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "拾";
   }
   else if(x[i] == '0' && x[i + 1] != '0')
   {
    output += "零";
   }
   break;
  case 1:
   if(x[i] != '0')
   {
    output += convert(x[i]);
   }
   else if(x.length() == 1)
   {
    output += convert(x[i]);
   }
   break;
  }
  count--;
 }
 int j;
 for(int k = 0;k < output.length();k++)
 {
  if((j = output.find("零零零")) != -1) output.erase(j,4);
  if((j = output.find("零零")) != -1) output.erase(j,2);
  if((j = output.find("億萬")) != -1) output.erase(j + 2,2);
  if((j = output.find("零拾")) != -1) output.erase(j,2);
  if((j = output.find("零萬")) != -1) output.erase(j,2);
  if((j = output.find("零仟")) != -1) output.erase(j,2);
  if((j = output.find("零佰")) != -1) output.erase(j,2);
  if((j = output.find("零億")) != -1) output.erase(j,2);
 }
 cout << output << endl;
 output = "";
 }
 return 0;
}

string convert(char number)
{
 string str;
 switch(number)
 {
 case '0':
  str = "零";
  break;
 case '1':
  str = "壹";
  break;
 case '2':
  str = "貳";
  break;
 case '3':
  str = "參";
  break;
 case '4':
  str = "肆";
  break;
 case '5':
  str = "伍";
  break;
 case '6':
  str = "陸";
  break;
 case '7':
  str = "柒";
  break;
 case '8':
  str = "捌";
  break;
 case '9':
  str = "玖";
  break;
 default:
  cout << "ERROR!\n";
  exit(1);
 }
 return str;
}

 

我問老師她說我第11行出錯 可是我不知道怎麼改 拜託哪位高手可以救我 我快哭ㄌ ㄒ^ㄒ


按照你的邏輯

似乎是

switch(count)

改成

switch( i ) 

#3796: Re:奇怪了怎麼我入的跟檢查的不一樣><


s50217 (凱哥~~)


#include
#include
using namespace std;
string convert(char number);
int main()
{
 string x;
 int count = 0;
 string output;
 while(cin >> x)
 {
 count = x.length();
 for(int i = 0;i < x.length();i++)
 {
  switch(count)
  {
  case 10:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "拾";
   }
   break;
  case 9:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "億";
   }
   else
   {
    output += "億";
   }
   break;
  case 8:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "仟";
   }
   else if(x[i] == '0' &&
     (x[i + 1] != '0' || x[i + 2] != '0'
     || x[i + 3] != '0' || x[i + 4] != '0' || x[i + 5] != '0' || x[i + 6] != '0'))
   {
    output += "零";
   }
   break;
  case 7:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "佰";
   }
    else if(x[i] == '0' &&
     (x[i + 1] != '0' || x[i + 2] != '0'
     || x[i + 3] != '0' || x[i + 4] != '0' || x[i + 5] != '0'))
   {
    output += "零";
   }
   break;
  case 6:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "拾";
   }
   else if(x[i] == '0' && (x[i + 1] != '0' || x[i + 2] != '0' || x[i + 3] != '0' || x[i + 4] != '0'))
   {
    output += "零";
   }
   break;
  case 5:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "萬";
   }
   else
   {
    output += "萬";
   }
   break;
  case 4:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "仟";
   }
   else if(x[i] == '0' && (x[i + 1] != '0' || x[i + 2] != '0' || x[i + 3] != '0'))
   {
    output += "零";
   }
   break;
  case 3:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "佰";
   }
   else if(x[i] == '0' && (x[i + 1] != '0' || x[i + 2] != '0'))
   {
    output += "零";
   }
   break;
  case 2:
   if(x[i] != '0')
   {
    output += convert(x[i]);
    output += "拾";
   }
   else if(x[i] == '0' && x[i + 1] != '0')
   {
    output += "零";
   }
   break;
  case 1:
   if(x[i] != '0')
   {
    output += convert(x[i]);
   }
   else if(x.length() == 1)
   {
    output += convert(x[i]);
   }
   break;
  }
  count--;
 }
 int j;
 for(int k = 0;k < output.length();k++)
 {
  if((j = output.find("零零零")) != -1) output.erase(j,4);
  if((j = output.find("零零")) != -1) output.erase(j,2);
  if((j = output.find("億萬")) != -1) output.erase(j + 2,2);
  if((j = output.find("零拾")) != -1) output.erase(j,2);
  if((j = output.find("零萬")) != -1) output.erase(j,2);
  if((j = output.find("零仟")) != -1) output.erase(j,2);
  if((j = output.find("零佰")) != -1) output.erase(j,2);
  if((j = output.find("零億")) != -1) output.erase(j,2);
 }
 cout << output << endl;
 output = "";
 }
 return 0;
}

string convert(char number)
{
 string str;
 switch(number)
 {
 case '0':
  str = "零";
  break;
 case '1':
  str = "壹";
  break;
 case '2':
  str = "貳";
  break;
 case '3':
  str = "參";
  break;
 case '4':
  str = "肆";
  break;
 case '5':
  str = "伍";
  break;
 case '6':
  str = "陸";
  break;
 case '7':
  str = "柒";
  break;
 case '8':
  str = "捌";
  break;
 case '9':
  str = "玖";
  break;
 default:
  cout << "ERROR!\n";
  exit(1);
 }
 return str;
}

 

我問老師她說我第11行出錯 可是我不知道怎麼改 拜託哪位高手可以救我 我快哭ㄌ ㄒ^ㄒ


按照你的邏輯

似乎是

switch(count)

改成

switch( i ) 


可是大大 我switch(cout) 她cout的意思是0 如果改成i會亂調耶(應為我自己也有試過ㄌ)
#3797: Re:奇怪了怎麼我入的跟檢查的不一樣><


linishan (L)


 

#3798: Re:奇怪了怎麼我入的跟檢查的不一樣><


linishan (L)


 


你的老師只是粗略地檢查 ..

我也是 ..

沒看到你的 count--

我有點follow不上你的想法 .

程式碼排版不是很好 ..

有空再看看囉 ...

#3799: Re:奇怪了怎麼我入的跟檢查的不一樣><


s50217 (凱哥~~)


 


你的老師只是粗略地檢查 ..

我也是 ..

沒看到你的 count--

我有點follow不上你的想法 .

程式碼排版不是很好 ..

有空再看看囉 ...


恩恩謝謝大大