C++ 如何将2D数组类型字符(字符串)作为函数参数传递?

C++ 如何将2D数组类型字符(字符串)作为函数参数传递?,c++,arrays,string,function,2d,C++,Arrays,String,Function,2d,我不能编译这个程序。我的函数参数有什么问题吗?是因为我的数组声明(char category[SIZE][15])?我把它做成了2D数组,因为列部分保持了字母表的大小。你们能指出我的代码有什么问题,以及如何将数组作为函数参数传递吗?很抱歉,我对这个话题一无所知 #include<iostream> #include<string.h> using namespace std; const int COLSIZE=3; const int NAMESIZE=30; void

我不能编译这个程序。我的函数参数有什么问题吗?是因为我的数组声明(char category[SIZE][15])?我把它做成了2D数组,因为列部分保持了字母表的大小。你们能指出我的代码有什么问题,以及如何将数组作为函数参数传递吗?很抱歉,我对这个话题一无所知

#include<iostream>
#include<string.h>
using namespace std;
const int COLSIZE=3;
const int NAMESIZE=30;
void inputPersonalData(int, long[],int,char[],float[],float[]);
void calcBMI(int,float[],float[],float[]);
void bmiCategory(int,float[],char[]);
void displayPersonalData(int,long[],char[],float[],float[],float[],char[]);
void inputCal(int,char[],long[],float[][COLSIZE],char[]);
int main()
{
    int SIZE;
    long ID[SIZE];
    char name[NAMESIZE];
    float weight[SIZE];
    float height[SIZE];
    float BMI[SIZE];
    char category[SIZE][15];
    char meal[COLSIZE][10];
    float calIntake[SIZE][COLSIZE];

    cout<<"Enter the number of models: ";
    cin>>SIZE;

    inputPersonalData(SIZE,ID,NAMESIZE,name,weight,height);
    calcBMI(SIZE,weight,height,BMI);
    bmiCategory(SIZE,BMI,category);
    displayPersonalData(SIZE,ID,name,weight,height,BMI,category);

    strcpy(meal[0],"BREAKFAST");
    strcpy(meal[1],"LUNCH");
    strcpy(meal[2],"DINNER");
    inputCal(SIZE,name,ID,calIntake,meal);

    return 0;
}
void inputPersonalData(int rowSize, long id[],int nameSize, char nama[],float berat[],float tinggi[])
{
    for(int i=0;i<rowSize;i++)
    {
        cout<<"\nModel "<<i+1<<"'s information\n\n";
        cout<<"ID: ";
        cin>>id[i];
        cout<<"Name: ";
        cin>>ws;
        cin.getline(nama,nameSize);
        cout<<"Weight in kg: ";
        cin>>berat[i];
        cout<<"Height in m: ";
        cin>>tinggi[i];
        cout<<endl<<"***************************************"<<endl;
    }
}
void calcBMI(int rowSize,float berat[],float tinggi[],float bmi[])
{

    for(int j=0;j<rowSize;j++)
    {
        bmi[j]=(berat[j]/tinggi[j])/tinggi[j];
    }

}
void bmiCategory(int rowSize,float bmi[],char category[])
{
    for(int k=0;k<rowSize;k++)
    {
        if(bmi[k]>25)
            strcpy(category[k],"OVERWEIGHT");
        else if(bmi[k]>18)
            strcpy(category[k],"NORMAL");
        else
            strcpy(category[k],"UNDERWEIGHT");
    }
}
void inputCal(int rowSize,char nama[],long id[],float calorie[][COLSIZE],char mealName[])
{
    for(int row=0;row<rowSize;row++)
    {
        cout<<"Model "<<row+1<<" ("<<nama[row]<<", ID: )"<<id[row]<<" DAILY CALORIE INTAKE:\n";
        for(int col=0;col<COLSIZE;col++)
        {
            cout<<"Calorie intake for "<<mealName[col]<<": ";
            calorie[row][col];
        }
    }
}
void displayPersonalData(int rowSize,long id[],char nama[],float berat[],float tinggi[],float bmi[],char category[])
{
    cout<<"No.\tID\tName\t\t\tWeight(kg)\tHeight(m)\tBMI\tCategory\n";
    for(int m=0;m<rowSize;m++)
    {
        cout<<m+1<<"\t"<<id[m]<<"\t"<<nama[m]<<"\t"<<berat[m]<<"\t"<<tinggi[m]<<"\t"<<bmi[m]<<"\t"<<category[m]<<endl;
    }
}
#包括
#包括
使用名称空间std;
常数int COLSIZE=3;
常量int NAMESIZE=30;
void inputPersonalData(int,long[],int,char[],float[],float[]);
void calcBMI(int,float[],float[],float[]);
无效类别(int,float[],char[]);
void displayPersonalData(int,long[],char[],float[],float[],float[],char[]);
void inputCal(int,char[],long[],float[][COLSIZE],char[]);
int main()
{
整数大小;
长ID[大小];
字符名[名称];
浮子重量[尺寸];
浮动高度[尺寸];
浮动体重指数[大小];
炭类[大小][15];
炭粉[COLSIZE][10];
浮动卡林塔克[SIZE][COLSIZE];
coutSIZE;
输入个人数据(尺寸、ID、名称、姓名、体重、身高);
calcBMI(体型、体重、身高、BMI);
体重指数类别(大小、体重指数、类别);
显示个人数据(尺寸、ID、姓名、体重、身高、BMI、类别);
strcpy(餐[0],“早餐”);
strcpy(餐[1],“午餐”);
strcpy(餐[2],“晚餐”);
输入(尺寸、名称、ID、卡号、膳食);
返回0;
}
void inputPersonalData(int rowSize,long id[],int nameSize,char nama[],float berat[],float tinggi[]))
{

对于(int i=0;i您没有以正确的方式将2D数组传递给函数。有关更多详细信息,请阅读。顺便说一句,以下是您的代码,并进行了一些修改:

#包括
#包括
使用名称空间std;
常数int COLSIZE=3;
常量int NAMESIZE=30;
void inputPersonalData(int,long[],int,char[],float[],float[]);
void calcBMI(int,float[],float[],float[]);
无效类别(int,float[],char[][15]);
void displayPersonalData(int,long[],char[],float[],float[],float[],char[]15]);
void inputCal(int,char[],long[],float[][COLSIZE],char[][10]);
int main()
{
整数大小;
长ID[大小];
字符名[名称];
浮子重量[尺寸];
浮动高度[尺寸];
浮动体重指数[大小];
炭类[大小][15];
炭粉[COLSIZE][10];
浮动卡林塔克[SIZE][COLSIZE];
coutSIZE;
输入个人数据(尺寸、ID、名称、姓名、体重、身高);
calcBMI(体型、体重、身高、BMI);
体重指数类别(大小、体重指数、类别);
显示个人数据(尺寸、ID、姓名、体重、身高、BMI、类别);
strcpy(餐[0],“早餐”);
strcpy(餐[1],“午餐”);
strcpy(餐[2],“晚餐”);
输入(尺寸、名称、ID、卡号、膳食);
返回0;
}
void inputPersonalData(int rowSize,long id[],int nameSize,char nama[],float berat[],float tinggi[]))
{
对于(int i=0;i固定

#包括
#包括
#包括
使用名称空间std;
常数int COLSIZE=3;
常数int SIZE=15;
常量int NAMESIZE=30;
void inputPersonalData(int,long[],char[][NAMESIZE],float[],float[]);
void calcBMI(int,float[],float[],float[]);
无效类别(int,float[],char[][15]);
void displayPersonalData(int,long[],char[][NAMESIZE],float[],float[],float[],char[]15]);
void inputCal(int,char[][NAMESIZE],long[],float[][COLSIZE],char[][10]);
void totalCal(int,float[][COLSIZE],float[]);
void idealCal(int rowSize,float bmi[],float idealCal[]);
无效条件(int,float[],float[],long[],char[][NAMESIZE]);
void searchId(int,long[],char[][NAMESIZE],float[],float[],float[],char[][15]);
int main()
{
int numdata;
长ID[大小];
字符名称[大小][名称];
浮子重量[尺寸];
浮动高度[尺寸];
浮动体重指数[大小];
炭类[大小][15];
炭粉[COLSIZE][10];
浮动卡林塔克[SIZE][COLSIZE];
浮动totalCalIntake[大小];
浮点数[大小];
coutnumdata;//假定用户输入小于大小
输入个人数据(numdata、ID、姓名、体重、身高);
calcBMI(数值、体重、身高、BMI);
BMI类别(numdata、BMI、类别);
显示个人数据(numdata、ID、姓名、体重、身高、BMI、类别);
strcpy(餐[0],“早餐”);
strcpy(餐[1],“午餐”);
strcpy(餐[2],“晚餐”);

这是因为您有一个同名的局部变量
bmicography
。Oohhh okay2谢谢您,首先您声明了未定义大小的数组,然后您将大小置于输入之上,更不用说此方法需要扩展。我对未定义大小没有问题,因为我可以编译与e未定义的大小,直到我包含2D数组类型的字符函数。我感谢你的链接和修改。现在我也要修复其他部分。无论如何,非常感谢你。