繁体   English   中英

需要帮助将结构数组传递给函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM