Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Антон541
0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 8
#1

Из функции вернуть более одного значения - C++

30.10.2015, 10:39. Просмотров 248. Ответов 11
Метки нет (Все метки)

У меня есть функция:
C++
1
2
3
4
5
6
7
8
code(int y, int z){
int g=y+z;
int f=y*z;
return g,f;
}
main(){
int sum=code(5,15);
}
Как прописать в main чтобы функция выдавала два значения. Ведь при присваивании происходит присваивание только одного.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2015, 10:39     Из функции вернуть более одного значения
Посмотрите здесь:

C++ Как вернуть сразу 2 значения из функции?
C++ return из функции более одного элемента как это сделать
строка содержащая более одного слова C++
Отправка более, чем одного POST запроса C++
Необходимо вернуть значение функции из Булевского значения и посчитать факториал C++
Как вернуть сразу 2 значения массива в функции? C++
как вернуть (вывести) 4 значения C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
6124 / 5727 / 1852
Регистрация: 18.12.2011
Сообщений: 14,631
Завершенные тесты: 1
30.10.2015, 10:43     Из функции вернуть более одного значения #2
C++
1
2
3
4
5
6
7
8
9
10
11
void code(int y, int z,int& g,int& f)
{
   g=y+z;
   f=y*z;
}
int main()
{
   int s1,s2;
   code(5,15,s1,s2);
   cout<<s1<<' '<<s2<<endl;
}
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2305 / 1021 / 232
Регистрация: 30.11.2013
Сообщений: 3,391
30.10.2015, 10:49     Из функции вернуть более одного значения #3
www.cplusplus.com/reference/utility/pair/
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
2041 / 1837 / 639
Регистрация: 14.05.2014
Сообщений: 5,359
Записей в блоге: 1
Завершенные тесты: 5
30.10.2015, 10:52     Из функции вернуть более одного значения #4
Антон541, можно сделать так, как написал zss, а можно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
struct Code
{
    int g, f;
};
 
Code code(int x, int y)
{
    Code temp {x+y, x*y};
    return temp;
}
 
int main()
{
    Code sum = code (5, 15);
    cout << sum.g << ' ' << sum.f << endl;
}
ishellstrike
77 / 13 / 7
Регистрация: 23.10.2015
Сообщений: 83
30.10.2015, 13:08     Из функции вернуть более одного значения #5
std::tuple как вариант
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2305 / 1021 / 232
Регистрация: 30.11.2013
Сообщений: 3,391
30.10.2015, 13:23     Из функции вернуть более одного значения #6
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
struct Code
{
* * int g, f;
};
Врядли так можно
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4253 / 2785 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
30.10.2015, 13:30     Из функции вернуть более одного значения #7
rikimaru2013, почему?
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2305 / 1021 / 232
Регистрация: 30.11.2013
Сообщений: 3,391
30.10.2015, 13:33     Из функции вернуть более одного значения #8
Проверил - компилится) Первый раз вижу такое)) Мне бы даже в голову не пришло так написать поля (((
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4253 / 2785 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
30.10.2015, 13:48     Из функции вернуть более одного значения #9
rikimaru2013, обычная же запись
C++
1
2
3
int a, b, c, d;
std::string str1, str2, str3;
MyType ob1, ob2, ob3;
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2305 / 1021 / 232
Регистрация: 30.11.2013
Сообщений: 3,391
30.10.2015, 14:40     Из функции вернуть более одного значения #10
Цитата Сообщение от Kastaneda Посмотреть сообщение
обычная же запись
Для перечисления полей методов НЕ обычно


класса*
ishellstrike
30.10.2015, 14:58
  #11

Не по теме:

rikimaru2013, не знаю что вас удивило, даже у Страуструпа в "Язык программирования С++" самое первое упоминание о классах выглядит так

C++
1
2
3
4
5
6
7
8
class date {
 int month, day, year;
 public:
 void set(int, int, int);
 void get(int*, int*, int*);
 void next();
 void print()
};

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2015, 15:23     Из функции вернуть более одного значения
Еще ссылки по теме:

Как вернуть из функции два значения C++
Класс содержит более одного конструктора по умолчанию C++
C++ Компиляция более одного файла вместе
C++ Вернуть из функции 2 значения
Динамическое выделение памяти внутри функции (что вернуть из функции, если не удалось выделить память?) C++

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
30.10.2015, 15:23     Из функции вернуть более одного значения #12
Совместно с std::tuple удобно использовать std::tie (не нужно создавать лишних переменных):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
#include <tuple>
 
using namespace std;
 
tuple<int, double, string> f() {
    return make_tuple(42, 100.500, string("kokoko"));
}
 
int main()
{
    int i = 999;
    double d = 123.456;
    string s = "ololo";
    
    tie(i,ignore,s) = f();
    
    cout << i << '\n' << d << '\n' << s << endl;
    
    return 0;
}
Код
42
123.456
kokoko
Live example
Yandex
Объявления
30.10.2015, 15:23     Из функции вернуть более одного значения
Ответ Создать тему
Опции темы

Текущее время: 13:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru