-4

たとえば、ユーザーは数字を入力します542035。アプリケーションは、指定された数字からすべて5の および を切り取って、 print する必要があります。数字からすべての 0 と 5 を「検索して削除」するような簡単な書き方がわかりませんか? 助言がありますか?0423

4

3 に答える 3

5

数値を文字列に変換し、置換 (数字を "" に置き換える) を実行し、結果を表示します。

于 2012-06-28T20:04:37.273 に答える
0

このコードは、この問題に対して私にとってはうまくいくようです。しかし、それが最善の解決策かどうかはわかりません。

#include <iostream>
#include <string>
#include <sstream>
#include <vector>
using namespace std;

int main()
{
int userinput;

cin >> userinput;

string s;

stringstream out;

out << userinput;

s = out.str();

cout << s << " " << userinput << endl;

vector<char> editted;

string::iterator it;

for (it = s.begin() ; it < s.end(); it++ )
{
if ((*it) == '5' || (*it) == '0')
{}
else 
editted.push_back((*it));
}

for (int i = 0; i <editted.size(); i++)
{
cout << editted[i] << endl;
} 

return 0;
}
于 2012-06-28T20:49:38.527 に答える
0

C++11 を使用した例を次に示します。

注:これが宿題の質問である場合、慣用的ではありますが、教師が求めている答えではない可能性があります。

#include <string>
#include <algorithm>
#include <iostream>

int main()
{
   std::string s("542035");

   std::cout << "Input: " << s << "\n";

   auto new_end = std::remove_if(
      s.begin(),
      s.end(),
      [] (const char c) -> bool
   {
      switch(c)
      {
      case '5':
      case '0':
         return true;
      default:
         return false;
      }
   });

   s.assign(s.begin(), new_end);

   std::cout << "Result: " << s << "\n";
}
于 2012-06-28T20:17:51.070 に答える