所以,我目前正在学校学习,需要做作业。我是C ++的初学者,因此编译器以某种方式向我显示了我的代码中的错误。基本上,我有一个.txt
文件,用于存储数据。
.txt
文件看起来像这样:
5
Petras 23.25 10.50
Rimas 125.40 1.20
Romas 55.00 1.00
Jurgis 1000.90 0.25
Algis 15.00 25.50
第一行显示列表中有多少人,因此我创建了整数n
。
接下来,我们有一个人员列表。该列表告诉该人的姓名,他用不同货币拥有的货币数量,并显示对欧元的汇率。
问题是我试图找出他们所拥有的欧元货币总和。这是我的代码。
#define USE_MATH_DEFINES
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cmath>
using namespace std;
const int Cn = 100;
const int Cname = 15;
int n;
struct listofpeople {
string name;
double MoneyInOtherCurrency;
double RateOfExchange;
double MoneyInEuros;
};
listofpeople A[Cn + 1];
void data();
void ChangeCurrency();
double sum(double C[], int m);
int main () {
data();
ChangeCurrency();
cout << sum(A[].MoneyInEuros, n);
return 0;
}
//-------------------------------------------------------
void data(){
ifstream is ("U2duom.txt");
is >> n;
char symbols[Cname + 1];
for(int i = 1; i <= n; i++){
is.ignore(80, '\n');
is.get(symbols, Cname);
A[i].name = symbols;
is >> A[i].MoneyInOtherCurrency;
is >> A[i].RateOfExchange;
}
}
//----------------------------------------------------------
void ChangeCurrency(){
for(int i = 1; i <= n; i++){
A[i].MoneyInEuros = A[i].MoneyInOtherCurrency*A[i].RateOfExchange;
cout << A[i].name << " " << A[i].MoneyInEuros << " " <<
A[i].MoneyInOtherCurrency << " " << A[i].RateOfExchange << endl;
}
}
//---------------------------------------------------------------
double sum(double C[], int m){
double a = 0;
for(int i = 1; i <= m; i++){
a= a + C[i];
}
return a;
}
问题是编译器在我尝试打印总和的行中向我显示错误。有人可以帮我吗?谢谢。
编辑:
我的编译器显示此错误:
error: expected primary-expression before ']' token
如果我指定要使用的数组元素,例如:
sum(A[n].MoneyInEuros, n);
编译器显示此错误:
cannot convert 'double' to 'double*' for argument '1' to 'double
sum(double*, int)'
答案 0 :(得分:0)
double sum(double C[], int m);
包含一个双精度数组,但是您只有一个listofpeople
数组。这不起作用。
您必须更改sum
,使其采用listofpeople
的数组,或者将数据结构从“数组结构”更改为“结构数组”(性能更好,处理起来更复杂) )。
通常,sum
需要重新实现:
double sum(listofpeople *s, int m);
请注意,在C ++中,我们不对类型使用[]表示法。