[英]Need help passing an array of structure to a function
因此,我目前正在学校学习,需要做作业。 我是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)'
double sum(double C[], int m);
需要一个双打数组,但您只有一个listofpeople
数组。 这行不通。
您必须更改sum
,以使其采用listofpeople
数组,或者将数据结构从“数组结构”更改为“结构数组”(性能更好,处理起来更复杂)。
通常, sum
需要重新实现:
double sum(listofpeople *s, int m);
请注意,在C ++中,我们不对类型使用[]表示法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.