-2

ファイルに次のデータが書き込まれています。最初のすべてのゼロと、配列内の 181 から始まるセル内の各番号を無視して、簡単に使用できるようにしたいと思います。

データを配列に入れる方法は知っていますが、これらすべてのゼロを無視するにはどうすればよいでしょうか??

0 177 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 181 98 1 2 28 0 104 93 165 3 7 110 239 5 172 164 176 29 56 147 4 0 234 215 3 0 166 6 0 0 78 5 0 0 164 145 181 98 1 8 6 1 2 5 28 9 110 239 5 172 164 176 29 56 147 4 0 234 215 3 0 169 6 0 0 78 5 0 0 147 117 181 98 1 2 28 0 56 101 165 3 7 110 239 5 172 164 176 29 0 173 6 0 0 81 5 0 0 134 109 181 98 1 2 28 0 32 105 165 3 7 110 239 5 172 164 176 29 56 147 4 0 234 215 3 0 181 6 0 0 85 2 5 1 6 103 2 28 0 8 109 165 3 7110 239 5 172 164 176 29 56 147 4 0 234 215 3 0 182 6 0 0 87 5 0 0 109 101

4

2 に答える 2

1

私はあなたの質問を理解しているかどうかわからないので、複数の回答を投稿します。問題の説明に当てはまるものを選択してください。

ケース 1:前 (または前と含む) のすべてを無視します181

#include <iostream>
#include <fstream>
#include <vector>

int main() {
  std::ifstream in("input.txt");
  std::vector<int> vec;
  int reached_181 = 0, x;

  while(in >> x) {
    if(x == 181) reached_181 = 1;
    if(reached_181) vec.push_back(x);
    // if you also want to neglect 181 then just change the order of the two commands
    // if(reached_181) vec.push_back(x);
    // if(x == 181) reached_181 = 1;
  }

  for(std::vector<int>::size_type i=0; i<vec.size(); ++i) {
    std::cout << vec[i] << " ";
  }

  return 0;
}

ケース 2:前のすべてのゼロを無視する181

#include <iostream>
#include <fstream>
#include <vector>

int main() {
  std::ifstream in("input.txt");
  std::vector<int> vec;
  int reached_181 = 0, x;

  while(in >> x) {
    if(x == 181) reached_181 = 1;
    if(reached_181 || x) vec.push_back(x);
  }

  for(std::vector<int>::size_type i=0; i<vec.size(); ++i) {
    std::cout << vec[i] << " ";
  }

  return 0;
}

ケース 3:入力ファイルのすべてのゼロを無視する

#include <iostream>
#include <fstream>
#include <vector>

int main() {
  std::ifstream in("input.txt");
  std::vector<int> vec;
  int x;

  while(in >> x) {
    if(x) vec.push_back(x);
  }

  for(std::vector<int>::size_type i=0; i<vec.size(); ++i) {
    std::cout << vec[i] << " ";
  }

  return 0;
}
于 2013-06-09T18:07:19.043 に答える
0

これを試して:

#include <fstream>
#include <vector>
#include <iostream>

int main()
{
    std::vector<int> v;
    std::fstream out("out.txt"); // name of your file
    bool hit;

    for (int n; (out >> n);)
    {
        if (n == 181 && !hit)
            hit = true;
        if (!hit)
            if (n)
                v.push_back(n);

        if (hit)
            v.push_back(n);
    }

    typedef std::vector<int>::const_iterator iter_type;

    for (iter_type it = v.begin(); it != v.end(); ++it)
        std::cout << *it << std::endl;

}
于 2013-06-09T17:14:09.917 に答える