【问题标题】:How do I get certain values inside of an Array?如何在数组中获取某些值?
【发布时间】:2021-07-08 14:38:29
【问题描述】:

我正在做一个程序来计算一些东西,例如我需要知道有多少员工是女性,它在我读取的文件中并将其保存在字符串数组中。 Array 上保存的数据是女性的 F,男性的 M。我如何计算阵列中有多少个 F(Female)?我已经设置好了所有我需要知道的是如何计算数组中的值,其中的特定值(只是 F)而不是所有值。

这是读取性别的代码(在示例中使用):

File.open("Gender.txt");
    for(int i=0; i<100; i++){
        File >> gender[i];
    }

这是用于存储它们的变量:

string gender[100];

性别.txt文件是这样的:

F
F
M
F
M
M
F
F
F
F
M
M
F
M
F
F
M
F
F
M
F

【问题讨论】:

  • 你问的问题是什么?如何计算数组的特定元素?然后循环遍历数组,可能同时读入它,并检查是否例如gender[i] == "F"gender[i] == "M",分别增加一个female_countermale_counter
  • “如何计算数组中的值”, std::count/std::count_if
  • 或者如果您想稍后计算,也可以使用std::count_if
  • 您是否尝试将 char 读入 int 类型的变量?
  • @TedLyngmo 不,使用什么没有限制。

标签: c++ arrays


【解决方案1】:

使用算法头的std::count_if

count_if( InputIt first, InputIt last, UnaryPredicate p );

【讨论】:

    【解决方案2】:

    一种方法是使用std::vector&lt;char&gt; 来存储FM 或文件中的其他内容。 vector 可以动态增长,因此您只需从文件中读取 push_back()vector 中。当文件被完全读取后,size() 成员函数会告诉你从文件中读取了多少条目。

    • 添加#include &lt;vector&gt; 以访问std::vector
    • main 中声明std::vector&lt;char&gt; gender; 以保留结果。
    • femalemale声明一个计数器,初始化为零。
    • 打开文件。
    • 循环:
      char gen;
      while(File >> gen) {
          gender.push_back(gen);
          // if gen is an F, increase `female`
          // else if gen is an M, increase `male`
      }
      
    • 读取整个文件后,您可以打印统计信息:
      std::cout << "Female: " << female << '\n'
                << "Male: " << male << '\n'
                << "Other: " << (gender.size() - female - male) << '\n';
      

    【讨论】:

    • 哇,这很好,很容易理解,非常感谢您的时间和耐心
    • 我刚刚在程序中做了,计数器运行良好!现在我需要做的就是对其他东西重复同样的事情。非常感谢!
    • @SaryxEze ...也请考虑accepting的答案:-)
    猜你喜欢
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 2022-11-22
    • 2014-10-01
    • 1970-01-01
    • 2020-08-21
    • 2021-07-16
    相关资源
    最近更新 更多