Я преподаю C++ и делаю проблему из учебника. До сих пор я освещал основы, такие как типы данных, декларации, отображения, назначение, интерактивный ввод, выбор (if-else) и повторение (для циклов/while), функции и массивы. Я ничего не сделал с указателями, но я знаю, что они есть ...Возвращающийся массив из функции C++
Я наткнулся на эту проблему:
Ответы на истинное-ложное испытание следующим образом: TTFF T. Учитывая двухмерный массив ответов, в котором каждая строка соответствует ответам, предоставленным в одном тесте, напишите функцию, которая принимает двумерный массив и количество тестов в качестве параметров и возвращает одномерный массив, содержащий оценки для каждого теста. (Каждый вопрос стоит 5 очков, так что максимально возможная оценка 25.) Проверьте свою функцию со следующими данными:
Я понимаю, что функции C++ не могут возвращать массивы - По крайней мере, это то, что я читал на других сообщениях на этом форуме. Это верно? Если да, то как они ожидают, что вы сделаете эти проблемы, потому что я еще не накрыл указатели. Единственный другой способ, который, как я думал, МОЖЕТ быть возможным, - это передать массив по ссылке ... но вопрос только говорит, что есть 2 аргумента функции, поэтому я подумал, что, возможно, этот метод был исключен. Для этого метода потребуется третий аргумент, который является массивом, который вы изменяете, чтобы он неявно возвращался.
У меня есть код, но его не правильно (только моя функция calcgrade нуждается в работе), и я не уверен, как двигаться вперед. Может кто-нибудь проконсультироваться? Спасибо!!
#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;
}
Правильный ответ должен возвращать 'VECTOR'. Если ваш учебник учит вас массивам вместо 'vector', автору не разрешается писать снова. –
Моя книга даже не говорит о векторах .... :( – user1527227
Если у вас есть книга на C++, в которой нет разделов, охватывающих стандартную библиотеку C++, а в случае 'std :: vector <>', возможно самый используемый тип внутри этой библиотеки во всех современных программах на C++, вам нужна другая книга (и этот автор нуждается в другой карьере). – WhozCraig