从C+返回数组+;作用 我教自己C++,从教科书上做问题。到目前为止,我已经介绍了一些基础知识,如数据类型、声明、显示、赋值、交互式输入、选择(if-else)和重复(for/while循环…),函数和数组。我没有用指针做过任何事情,但我知道它们是什么
我遇到了这个问题: 真假测试的答案如下:T。给定一个二维答案数组,其中每一行对应于一个测试中提供的答案,编写一个函数,该函数接受二维数组和测试数作为参数,并返回一个包含每个测试分数的一维数组。(每个问题得5分,因此最高可能得25分。)使用以下数据测试您的功能: 我的理解是C++函数不能返回数组——至少这是我在论坛上其他帖子上看到的。这是正确的吗?如果是的话,他们希望你如何解决这个问题,因为我还没有讨论指针。我认为唯一可能的其他方法是通过引用传入数组。。。。但是问题stem只说函数有两个参数,所以我想可能这个方法被排除了。该方法需要第三个参数,该参数是您修改的数组,因此隐式返回 我有一些代码,但它不正确(只有我的calcgrade函数需要工作),我不知道如何前进。请有人建议?谢谢从C+返回数组+;作用 我教自己C++,从教科书上做问题。到目前为止,我已经介绍了一些基础知识,如数据类型、声明、显示、赋值、交互式输入、选择(if-else)和重复(for/while循环…),函数和数组。我没有用指针做过任何事情,但我知道它们是什么,c++,arrays,function,C++,Arrays,Function,我遇到了这个问题: 真假测试的答案如下:T。给定一个二维答案数组,其中每一行对应于一个测试中提供的答案,编写一个函数,该函数接受二维数组和测试数作为参数,并返回一个包含每个测试分数的一维数组。(每个问题得5分,因此最高可能得25分。)使用以下数据测试您的功能: 我的理解是C++函数不能返回数组——至少这是我在论坛上其他帖子上看到的。这是正确的吗?如果是的话,他们希望你如何解决这个问题,因为我还没有讨论指针。我认为唯一可能的其他方法是通过引用传入数组。。。。但是问题stem只说函数有两个参数,所
#include<iostream>
// Globals
const int NROW = 6, NCOL = 5;
bool answers[NCOL] = {1, 1, 0, 0, 1};
bool tests[][NCOL] = {1, 0, 1, 1, 1,
1, 1, 1, 1, 1,
1, 1, 0, 0, 1,
0, 1, 0, 0, 0,
0, 0, 0, 0, 0,
1, 1, 0, 1, 0};
int grade[NROW] = {0};
// Function Proto-Types
void display1(bool []);
void display2(bool [][NCOL]);
int calcgrade(bool [][NCOL], int NROW);
int main()
{
calcgrade(tests, NROW);
display2(tests);
return 0;
}
// Prints a 1D array
void display1(bool answers[])
{
// Display array of NCOL
for(int i = 0; i < NCOL; i++)
std::cout << std::boolalpha << answers[i] << std::endl;
return;
}
// Print 2d Array
void display2(bool answers[][NCOL])
{
// Display matrix: 6x5
for(int i = 0; i < NROW; i++)
{
for(int j= 0; j < NCOL; j++)
{
std::cout << std::boolalpha << answers[i][j] << std::endl;
}
std::cout << std::endl;
}
return;
}
int calcgrade(bool tests[][NCOL], int NROW)
{
for(int i = 0; i < NROW; i++)
{
for(int j = 0; j < NROW; j++)
{
if(tests[i][j]==answers[j])
grade[i] += 5;
}
printf("grade[%i] = %i", i, grade[i]);
}
return grade;
}
#包括
//全球的
常数int NROW=6,NCOL=5;
布尔答案[NCOL]={1,1,0,0,1};
布尔测试[][NCOL]={1,0,1,1,1,
1, 1, 1, 1, 1,
1, 1, 0, 0, 1,
0, 1, 0, 0, 0,
0, 0, 0, 0, 0,
1, 1, 0, 1, 0};
整数级[NROW]={0};
//函数原型
无效显示1(bool[]);
无效显示2(bool[][NCOL]);
内部计算等级(布尔[][NCOL],内部NROW);
int main()
{
calcgrade(测试,NROW);
显示器2(测试);
返回0;
}
//打印一维数组
无效显示1(布尔答案[])
{
//NCOL显示阵列
对于(int i=0;i
- 正如您所说,返回指向动态分配数组的指针
- 您可以使用word
struct
创建结构类型,其中包括静态数组、阅读更多内容以及返回/接受类型的参数结构
您可以:
- 正如您所说,返回指向动态分配数组的指针
- 您可以使用word
struct
创建结构类型,其中包括静态数组、阅读更多内容以及返回/接受类型的参数结构
尝试使用
向量是序列容器,表示可以改变大小的数组
你可以这样做:
vector<bool> function()
{
vector<bool> vec;
vec.push_back(true);
vec.push_back(false);
vec.push_back(true);
return vec;
}
向量函数()
{
向量向量机;
向量推回(真);
向量推回(假);
向量推回(真);
返回向量;
}
尝试使用
向量是序列容器,表示可以改变大小的数组
你可以这样做:
vector<bool> function()
{
vector<bool> vec;
vec.push_back(true);
vec.push_back(false);
vec.push_back(true);
return vec;
}
向量函数()
{
向量向量机;
向量推回(真);
向量推回(假);
向量推回(真);
返回向量;
}
如果您将测试数作为第二个参数传递,这意味着您实际上知道测试数,因此不需要使用向量。您可以返回动态分配的数组(使用new
或malloc
)
代码如下所示:
int* calcgrade(bool tests[][NCOL], int NROW){
int* array = new int[NROW];
for(int i=0;i<NROW;i++)
array[i] = calculatedGrade;
return array;
}
int*calcgrade(布尔测试[][NCOL],int-NROW){
int*数组=新的int[NROW];
对于(int i=0;i如果将测试数作为第二个参数传递,则意味着您实际上知道测试数,因此不需要使用向量。您可以返回动态分配的数组(使用new
或malloc
)
代码如下所示:
int* calcgrade(bool tests[][NCOL], int NROW){
int* array = new int[NROW];
for(int i=0;i<NROW;i++)
array[i] = calculatedGrade;
return array;
}
int*calcgrade(布尔测试[][NCOL],int-NROW){
int*数组=新的int[NROW];
对于(int i=0;i另一种方法是在主函数中创建应答数组,然后将其与T/F数组一起传递给评分函数。然后,评分函数可以对应答数组进行操作,甚至不需要返回任何内容
本质上,当您在函数中传递数组时,实际上是在传递指向数组的指针,因此您可以像通过引用传递数组一样对它们进行操作(它们就是这样)
半伪码ex:
void getGrades( const int answerVector, int gradeVector ) {
// code that computes grades and stores them in gradeVector
}
另一种方法是在主函数中创建应答数组,然后将其与T/F数组一起传递给评分函数。然后,评分函数可以对应答数组进行操作,甚至不需要返回任何内容
本质上,当您在函数中传递数组时,实际上是在传递指向数组的指针,因此您可以像通过引用传递数组一样对它们进行操作(它们就是这样)
半伪码ex:
void getGrades( const int answerVector, int gradeVector ) {
// code that computes grades and stores them in gradeVector
}
谢谢。我想知道是否有其他方法可以替代你提到的那些方法,因为我还没有涵盖任何这些主题。我只是想看看我到目前为止读到的内容中是否遗漏了什么……谢谢。我想知道是否有其他方法可以替代你提到的那些方法,因为我还没有涵盖任何这些主题。我只是想看看我到目前为止读到的内容中是否遗漏了任何内容……正确的答案是返回一个向量
。如果你的教科书教你的是数组而不是向量
,那么作者就不应该再被允许写作。我的书甚至没有提到向量(如果你有一本C++书,它没有章节覆盖C++标准库,在<代码> STD::vector < /Cord>,可以说是所有现代C++程序中那个库中最常用的类型,你需要另一本书(和那个作者NEE)。