提问人:freech 提问时间:1/27/2023 最后编辑:freech 更新时间:1/27/2023 访问量:69
为什么该函数只打印上一个项目的结果?
Why does the function prints the results of the last project only?
问:
我正在尝试创建一个函数来计算每个项目的净现值 (NPW),NPW 最高的项目将是我们的选择。
该程序适用于一个项目,如果我输入多个项目,它只会打印重复的最后一个项目结果以及项目的数量。
法典:
#include <iostream>
#include <cmath>
using namespace std;
void npwMethod(int nproj,int *pv,int *n, int *oc, int *ai,int *sv ,float marr){
float npw[nproj], sum[nproj];
for(int i=1;i<=nproj;i++){
for(int j=1;j<=n[i];j++){
sum[i]+=(oc[j]*(pow(1+marr,-j)));
}
for(int j=1;j<=n[i];j++){
sum[i]+=(ai[j]*(pow(1+marr,-j)));
}
npw[i]=pv[i]+sv[i]*(pow(1+marr,-n[i]))+sum[i];
}
for(int i=1;i<=nproj;i++){
cout<<"NPW"<<i<<"="<<npw[i]<<endl;
}
}
int main() {
int nProj,methodNum, *OC, *AI;
float MARR;
cout<<"Enter the number of projects please:";
cin>>nProj;
int *PV=new int[nProj], *N=new int[nProj], *SV=new int [nProj];
for(int i=1;i<=nProj;i++){
cout<<"------Project"<<i<<"------\n";
cout<<"PV"<<i<<":";
cin>>PV[i];
cout<<"n"<<i<<":";
cin>>N[i];
OC=new int[N[i]], AI=new int [N[i]];
for(int j=1;j<=N[i];j++){
cout<<"OC"<<j<<":";
cin>>OC[j];
}
for(int j=1;j<=N[i];j++){
cout<<"AI"<<j<<":";
cin>>AI[j];
}
cout<<"SV"<<i<<":";
cin>>SV[i];
}
cout<<"-------------------\nMARR:";
cin>>MARR;
MARR=MARR/100;
cout<<"------RESULTS------\n";
npwMethod(nProj, PV, N, OC, AI, SV, MARR);
}
输入:
Enter the number of projects please:2
------Project1------
PV1:-1000
n1:2
OC1:-200
OC2:-300
AI1:0
AI2:0
SV:2000
------Project2------
PV1:-1000
n1:2
OC1:-200
OC2:-300
AI1:500
AI2:0
SV:2000
-------------------
MARR:10
预期输出:
NPW1:223.14
NPW2:677.686
谁能帮忙解决这个问题?
答:
0赞
Chronial
1/27/2023
#1
您的问题可以归结为以下几行:
int* OC;
for(int i=1; i <= nProj; i++){
OC = new int[N[i]];
for(int j=1; j <= N[i]; j++){
cout << "OC" << j << ":";
cin >> OC[j];
}
}
npwMethod(nProj, PV, N, OC, AI, SV, MARR);
使用 ,则覆盖上一个项目中 OC 的值。人工智能也是如此。您需要将 OC 设置为数组数组。当您使用 时,这要容易得多。然后你可以做这样的事情:OC = new int[N[i]]
std::vector
int main() {
std::vector<std::vector<int>> OCs;
for(int i=1; i <= nProj; i++){
OCs.emplace_back();
OC = OCs.back();
for(int j=1; j <= N[i]; j++){
cout << "OC" << j << ":";
int oc;
cin >> oc;
OC.push_back(oc);
}
}
npwMethod(nProj, PV, N, OCs, AI, SV, MARR);
}
void npwMethod(..., std::vector<std::vector<int>> const& oc, ...) {
for(int i=1; i<=nproj; i++){
for(int j=1 ;j<=n[i]; j++){
sum[i] += oc[i][j]*...;
}
}
}
上一个:libcbor 和嵌套结构
下一个:嵌套类的模式?[已结束]
评论
0
1
std::vector
new[]
std::vector
OC=new int[N[i]], AI=new int [N[i]];
float npw[nproj], sum[nproj];
int *PV=new int[nProj]