【问题标题】:How to print only assigned elements in an array in c++?如何在 C++ 中仅打印数组中分配的元素?
【发布时间】:2014-04-19 13:53:18
【问题描述】:

您好,我需要打印出数组中的一些元素,但实际上只有那些元素已被赋值。到目前为止,我有这个:

for(int h = 0; h < max; h++)
{
    ofile <<  v[h].getDay() << '/' << v[h].getMonth() << '/' << v[h].getYear() << ", "
          << v2[h].getHour() << ':' << v2[h].getMinute() << ':' << v2[h].getSecond() << v2[h].getAMPM() << ", "
          << v3[h].getPrice() << ", " << v3[h].getVolume() << ", " << v3[h].getValue() << endl; ///outputs the data to an output file

}

其中最大值 = 40

但是,我的输出将是:

 10/10/2013, 4:57:27 PM, 5.81, 5000, 29050
 10/10/2013, 4:48:5 PM, 5.81, 62728, 364450
 10/10/2013, 4:10:33 PM, 0, 0, 0
 10/10/2013, 4:10:33 PM, 0, 0, 0
 10/10/2013, 4:10:33 PM, 0, 0, 0
 10/10/2013, 4:10:33 PM, 5.55, 451, 2620.31
 10/10/2013, 4:10:33 PM, 5.81, 5000, 29050
 10/10/2013, 4:10:33 PM, 5.81, 145, 842.45
 10/10/2013, 4:10:33 PM, 5.81, 9241, 53690.2
 10/10/2013, 4:10:33 PM, 5.81, 8759, 50889.8
 10/10/2013, 4:10:33 PM, 5.81, 1875, 10893.8
 10/10/2013, 4:10:33 PM, 5.81, 58, 336.98
 10/10/2013, 4:10:33 PM, 5.81, 1370, 7959.7
 10/10/2013, 4:10:33 PM, 5.81, 90000, 522900
 10/10/2013, 4:10:33 PM, 5.81, 638, 3706.78
 10/10/2013, 4:10:33 PM, 5.81, 4231, 24582.1
 10/10/2013, 4:10:33 PM, 5.81, 71191, 413620
 10/10/2013, 4:10:33 PM, 5.81, 21878, 127111
 10/10/2013, 4:10:33 PM, 5.81, 6760, 39275.6
 10/10/2013, 4:10:33 PM, 5.81, 21340, 123985
 10/10/2013, 4:10:33 PM, 5.81, 4000, 23240
 10/10/2013, 4:10:33 PM, 5.81, 4750, 27597.5
 0/0/0, 0:0:0, 0, 0, 0
 0/0/0, 0:0:0, 0, 0, 0
 0/0/0, 0:0:0, 0, 0, 0
 0/0/0, 0:0:0, 0, 0, 0
 0/0/0, 0:0:0, 0, 0, 0
 0/0/0, 0:0:0, 0, 0, 0
 0/0/0, 0:0:0, 0, 0, 0
 0/0/0, 0:0:0, 0, 0, 0
 0/0/0, 0:0:0, 0, 0, 0
 0/0/0, 0:0:0, 0, 0, 0
 0/0/0, 0:0:0, 0, 0, 0
 0/0/0, 0:0:0, 0, 0, 0
 0/0/0, 0:0:0, 0, 0, 0
 0/0/0, 0:0:0, 0, 0, 0
 0/0/0, 0:0:0, 0, 0, 0
 0/0/0, 0:0:0, 0, 0, 0
 0/0/0, 0:0:0, 0, 0, 0
 0/0/0, 0:0:0, 0, 0, 0

这些 0 是未分配的值,但我只想打印分配的值 我该怎么做?

谢谢

【问题讨论】:

    标签: c++ arrays for-loop iostream


    【解决方案1】:

    只需修改你的循环条件,这样循环就会在遇到第一个零时立即停止:

    for(int h = 0; (h < max) && (v[h].getDay() > 0); h++)
    

    【讨论】:

      【解决方案2】:

      您可以添加一个if-elseclause 并测试某个值是否为 0,例如 v3[h].getPrice() 或可能是v[h].getDay(),这取决于您是否希望分配的日期为零值..

      类似:

      for(int h = 0; h < max; h++)
      {
          if(v3[h].getPrice()==0){
              continue;
          } else {
          ofile <<  v[h].getDay() << '/' << v[h].getMonth() << '/' << v[h].getYear() << ", "
                << v2[h].getHour() << ':' << v2[h].getMinute() << ':' << v2[h].getSecond() << v2[h].getAMPM() << ", "
                << v3[h].getPrice() << ", " << v3[h].getVolume() << ", " << v3[h].getValue() << endl; ///outputs the data to an output file
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2022-11-20
        • 1970-01-01
        • 1970-01-01
        • 2012-09-25
        • 2020-04-23
        • 1970-01-01
        • 1970-01-01
        • 2021-03-11
        • 1970-01-01
        相关资源
        最近更新 更多