Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,913
1

Массив значений, как результат функции

13.03.2019, 15:00. Показов 4511. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте,

Подскажите пожалуйста, передаю в функцию 4 параметра, итог расчета функции массив значений.
Вопрос, как этот массив возвратить, как результат функции ?

С одним значением понятно, а вот с массивом, как то не очень.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.03.2019, 15:00
Ответы с готовыми решениями:

Массив как результат функции
В результате выполнения функции мне надо получить массив из четырех строк. Как правильно объявить, что результатом функции должен быть...

Как записать в массив результат запроса если результат-массив данных а не 1 значение
Здравствуйте , подскажите пож-та как организовать в 2010-ом бэйсике работу с запросами, возвращающими большой массив данных из бд Access...

Построить массив значений функции, для всех значений функции
Помогите найти ошибки в программе:) Построить массив значений функции, для всех значений функции ує найти произведение этих значений....

10
Модератор
Эксперт С++
 Аватар для zss
13735 / 10931 / 6483
Регистрация: 18.12.2011
Сообщений: 29,172
13.03.2019, 15:04 2
C++ Скопировано
1
void f(int p1,int p2,int p3,int p4,int* result);
Запишите в массив result, и всё!
вызов
C++ Скопировано
1
2
3
int i1=1,i2=3,i3=100,i4=500;
int a[10];
f(i1,i2,i3,i4,a);
1
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
13.03.2019, 15:12 3
Optimus11,

C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
using namespace std;
 
std::vector<int> GroupAsVector(int a, int b, int c, int d)
{
    return { a*10, b*10, c*10, d*10};
}
 
int main()
{
    const auto arr = GroupAsVector(1, 2, 3, 4);
    for (const auto& it : arr)
    {
        std::cout << it << std::endl;
    }
}
0
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,913
13.03.2019, 15:44  [ТС] 4
C++ Скопировано
1
2
...
f(i1,i2,i3,i4,a);
На запятой после i1, ругается, что требуется круглая скобка.
0
Модератор
Эксперт С++
 Аватар для zss
13735 / 10931 / 6483
Регистрация: 18.12.2011
Сообщений: 29,172
13.03.2019, 15:46 5
Значит, Вы как-то не так объявили функцию f.
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
13.03.2019, 16:02 6
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
template<class T, size_t N>
struct Array
{
    T data[N];
};
 
Array<int, 4> foo()
{
    Array<int, 4> result;
    //...
    return result;
}
или использовать std::array/std::vector
0
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,913
13.03.2019, 18:52  [ТС] 7
Не понимаю, пытаюсь понять это вообще должно работать, делаю вот так, вроде как в первом примере(все остальные вообще сложные для меня ):


C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
string Set_range(string Cell_adress_1, string Cell_adress_2, string*result)
{
string Massiv[10];
 
Massiv[0] = Cell_adress_1;
Massiv[1] = Cell_adress_2;
Massiv[2] = Cell_adress_1;
Massiv[3] = Cell_adress_2;
Massiv[4] = Cell_adress_1;
}
 
 
main()
{
string Ranges[10];
 
Set_range("A1","A10", Ranges); // Error: Слишком много аргументов в вызове функции...
 
}
Но не работает.
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
13.03.2019, 19:02 8
Лучший ответ Сообщение было отмечено Optimus11 как решение

Решение

Цитата Сообщение от Optimus11 Посмотреть сообщение
делаю вот так, вроде как в первом примере
В первом примере имелось ввиду
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <std::string>
using namespace std;
void Set_range(string Cell_adress_1, string Cell_adress_2, string*result)
{
result[0] = Cell_adress_1;
result[1] = Cell_adress_2;
result[2] = Cell_adress_1;
result[3] = Cell_adress_2;
result[4] = Cell_adress_1;
}
 
 
main()
{
string Ranges[10];
 
Set_range("A1","A10", Ranges); // Error: Слишком много аргументов в вызове функции...
 
}
1
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,913
13.03.2019, 22:00  [ТС] 9
Большое спасибо! Заработало

Добавлено через 14 минут
Извините пожалуйста еще спрошу, а если размер массива заранее не известен, то есть размер массива будет вычисляться по ходу выполнения кода в зависимости от значений переданных в функцию.

Единственный способ - это сделать еще одну предварительную функцию, которая будет возвращать размер вычесленного массива, чтобы его установить до вызова основной функции ?

Добавлено через 2 часа 12 минут
Вот так можно сделать:

C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <std::string>
using namespace std;
void Set_range(string Cell_adress_1, string Cell_adress_2, vector<string>*result)
{
(*result).push_back(Cell_adress_1);
(*result).push_back(Cell_adress_2);
(*result).push_back(Cell_adress_1);
(*result).push_back(Cell_adress_2);
(*result).push_back(Cell_adress_1);
}
 
 
main()
{
 
vector<string>Ranges;
 
Set_range("A1","A10", &Ranges); 
 
cout<<Ranges[0]<<Ranges[1]<<endl;
 
}
Добавлено через 6 минут
Единсвенно, что то я запутался, если * - это указатель на адрес переменной в памяти и & - тоже адрес переменной, то почему, я не могу передать в функцию *Ranges ? А работает только &Ranges ?
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
13.03.2019, 22:11 10
Лучший ответ Сообщение было отмечено Optimus11 как решение

Решение

Цитата Сообщение от Optimus11 Посмотреть сообщение
& - тоже адрес переменной
в данном контексте & - взятия адреса переменной

вообще лучше использовать ссылки в данном случае
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <std::string>
using namespace std;
void Set_range(string Cell_adress_1, string Cell_adress_2, vector<string>& result)
{
result.push_back(Cell_adress_1);
result.push_back(Cell_adress_2);
result.push_back(Cell_adress_1);
result.push_back(Cell_adress_2);
result.push_back(Cell_adress_1);
}
 
 
main()
{
 
vector<string>Ranges;
 
Set_range("A1","A10", Ranges); 
 
cout<<Ranges[0]<<Ranges[1]<<endl;
 
}
1
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,913
14.03.2019, 20:54  [ТС] 11
Подскажите пожалуйста, а в чем разница между объявлением функции вот так:

C++ Скопировано
1
2
3
void Set_range(string Cell_adress_1, string Cell_adress_2, string*result)
{
}
и вот так:
C++ Скопировано
1
2
3
string Set_range(string Cell_adress_1, string Cell_adress_2, string*result)
{
}
void и string ? в одном случае работает только void, в другом только string.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.03.2019, 20:54
Помогаю со студенческими работами здесь

Вычислить y= k14− 18 k для 6 значений k, вводимых с клавиатуры. Результат вычислений записать в массив. Полученный массив отсортировать по возрастанию
#include&lt;iostream&gt; #include&lt;math.h&gt; #include&lt;iomanip&gt; using namespace std; double const n=20; int vvod( double y, int n) { ...

Вычислить 30 значений функции на отрезке [e,f], сохранить результат в массиве Y
Обсчитать 30 значений функции на отрезке , сохранить результат в масиве Y. Посчитать количество негативных и положительных компонентов...

Результат колбэка вернуть как результат функции
Добрый день, подскажите плииииз, такое в принципе возможно? (потери в продуктивности не важны) Есть &quot;линейная&quot; функция (без...

ТУРБО Ассемблер Вычислить 8 значений функции, результат сохранить в памяти и вывести на экран
HELP, нужно решить задачку на ТУРБО Ассемблер. Вычислить 8 значений функции f(x)=5x(x+8) (х изменяется от 1 с шагом 0,5), результат...

Написать программу для вычисления значений функции и вывести исходные данные и результат
Написать программу для вычисления значения функции и осуществления вывода исходных данных. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Создание и использование компонентов в Vue 3
Reangularity 14.03.2025
Компонент в Vue - это автономный блок интерфейса, который содержит собственную разметку, логику и стили. Представьте себе кнопку, форму ввода или даже целую панель навигации - всё это можно оформить. . .
Vue 3: Создаем современное веб-приложение с Composition API
Reangularity 14.03.2025
В фронтенд-разработке Vue 3 выделяется своим прагматичным подходом. В отличие от React с его минималистичной философией "всё — JavaScript" или Angular с его всеобъемлющим корпоративным подходом, Vue. . .
Разработка контекстных меню в iOS
mobDevWorks 14.03.2025
С приходом iOS 13 Apple представила новый API для контекстных меню, который полностью заменил предыдущую технологию 3D Touch peek & pop. Хотя многие разработчики и пользователи испытывают ностальгию. . .
Лучшие практики оптимизации Docker Image
Mr. Docker 13.03.2025
Размер Docker-образа влияет на множество аспектов работы с контейнерами. Чем больше образ, тем дольше его загрузка в реестр и выгрузка из него. Для команд разработки, работающих с CI/ CD пайплайнами,. . .
Вопросы на собеседовании по Docker
Mr. Docker 13.03.2025
Ты сидишь напротив технического специалиста, и вдруг звучит вопрос про Docker Swarm или многоэтапные сборки. Пот на лбу? Не переживай, после этой статьи ты будешь готов ко всему! Эта статья будет. . .
Поиск текста в сносках : замена дефиса на тире или тире на дефис...
РоΜа 13.03.2025
Нужно было найти текст в сносках и заменить. Почему-то метод селекшн не сработал. . . пришлось гуглить. найденный на форумвба код пришлось править. Смысл - заменяет в сносках дефисы и тире на нужные. . . .
Real PATH definitions in bash scripts
jigi33 13.03.2025
Как поймать путь и путь к директории относительно запускаемого файла в BASH 1. поймать путь через вывод $(pwd) 2. более правильно - на основе realpath (см. скриншот)
Django или Flask: что выбрать для веб-разработки на Python
py-thonny 13.03.2025
Django – это высокоуровневый фреймворк, который придерживается философии "всё включено". Он предоставляет разработчику готовые решения для большинства типичных задач веб-разработки: от аутентификации. . .
Непрерывное развертывание в Java с Kubernetes
Javaican 13.03.2025
Чем так привлекателен Kubernetes для развертывания Java-приложений? Этот оркестратор контейнеров позволяет автоматизировать развертывание, масштабирование и управление контейнеризированными. . .
Предотвращение XSS, CSRF и SQL-инъекций в JavaScript
run.dev 13.03.2025
JavaScript занимает первые позиции среди языков веб-разработки, но его распространенность делает его привлекательной целью для злоумышленников. Межсайтовый скриптинг (XSS), межсайтовая подделка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер