首页 > 解决方案 > 尽管输入正确,浮点数组仍存储垃圾值

问题描述

我正在尝试解决一个问题,我必须将浮点数存储在 3 个不同的数组中,令人惊讶的是,存储的值都是零,你能指出这里出了什么问题吗?

#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;



int main(){
 
   int n,m;
  cin>>n>>m;
 vector<float>prb(n+1,0),prft(n+1,0),loss(n+1,0);
  for(int i=1;i<=n;i++){
    float x;
    cin>>x;
    prb.push_back(x);
  }
  for(int i=1;i<=n;i++){
    float x;
    cin>>x;
    prft.push_back(x);
  }
    for(int i=1;i<=n;i++){
    float x;
    cin>>x;
    loss.push_back(x);
  }
  
  cout<<endl;
  
   for(ll i=1;i<=n;i++){
    cout<<prb[i]<<' ';
  }
  cout<<endl;
   for(ll i=1;i<=n;i++){
    cout<<prft[i]<<' ';
  }
  cout<<endl;
   for(ll i=1;i<=n;i++){
    cout<<loss[i]<<' ';
  }
 
 
 
 
  
return 0;
}

输入 :

4 2  
0.50 0.50 0.50 0.50  
4.00 1.00 2.00 3.00  
4.00 0.50 1.00 1.00

输出 :

0 0 0 0 
0 0 0 0
0 0 0 0

编辑:数组更改为浮点向量。仍然没有得到想要的价值。伙计们,您认为问题出在编译器上还是我在用 c++ 做一些愚蠢的事情。

标签: c++iofloating-point

解决方案


存储的值不是零,只是您使用给定大小初始化向量,并将这些值设置为零。

push_back将新元素附加到向量的末尾。

使用at代替push_back是解决方法。


推荐阅读