Есть код. В функции double f(double x[], int n)
делается вычисление нескольких функций с несколькими переменными. Несколько переменных мы передадим в виде массива double x[]
, int n
- количество элементов массива; к примеру, пусть будут вычислятся две функции - я их решил записать в массив double g[n]
, так как мне надо, что бы функция возвращала оба вычисления функции: g[0] = x[0] + x[1]; g[1] = x[0] * x[1]
. Как вернуть массив g[n]
, и каким быть должно обращение к функции (в примере кода сразу в функции memcpy
)? Что не так, поправьте.
Пример кода.
#include <iostream>
using namespace std;
double f(double x[], int n)
{
double g[n];
g[0] = x[0] + x[1];
g[1] = x[0] * x[1];
return /* Что? */;
}
main()
{
int n = 2;
double a[2], b[2];
for (int i = 0; i < n; i++)
{
cout << " a[" << i << "] = ";
cin >> a[i];
}
memcpy(b, f(a, n), sizeof(a));
for (int i = 0; i < n; i++) cout << " b[" << i << "] = " << b[i];
return 0;
}
Возвращать массив как таковой нельзя. Можно вернуть указатель на него - но тогда массив не должен быть локальной переменной! (Кстати, в C++ нельзя объявлять массив с размером, неизвестным во время компиляции.)
Поэтому нужно иначе..
Выделить массив динамически, и вернуть (только потом не забыть освободить память!)
int * g = new int[n];
...
return g;
Использовать, скажем, вектор (наилучший вариант):
std::vector<int> g(n);
...
return g;
Можно обернуть массив в структуру, но опять же, нужно знать размер во время компиляции:
struct Array {
int g[10];
}
...
Array f()
{
Array g;
g.g[0] = 5;
...
return g;
}
Но лучше всего - использовать готовый вектор, тем более что у вас количество элементов заранее не известно, так что std::array<>
вам не подойдет.
PS Ну и, конечно, вариант с передачей возвращаемого массива в функцию:
int g[10];
... f(..., int* g)
{
// работа с g[i]
...
}
...
f(...,g);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Делаю генератор мемов и хочу сделать нормальный текст а шрифт получается маленьким как его сделать большим?Я добавил spinBoX и собираюсь в нем...
Есть код, который плавно меняет значение свойства, нужно чтобы при втором нажатии на элемент значение менялось !!! вот моя попытка, но получеться...
Заливаю лабу в gitlab, но там не отображаются комментарии русскими буквами в CSS файле, в html файле все нормальноКак сделать чтобы русские буквы...
Ситуация следующая, есть слайдер - каждый слайд в нём сдвинут влево (это нужно, чтоб кусочек следующего слайда был виден) и стоит бесконечная...