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

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

Восстановить пароль Регистрация
 
Антон541
0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 8
30.10.2015, 10:39     Из функции вернуть более одного значения #1
У меня есть функция:
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 чтобы функция выдавала два значения. Ведь при присваивании происходит присваивание только одного.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,204
Завершенные тесты: 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
2139 / 972 / 223
Регистрация: 30.11.2013
Сообщений: 3,241
30.10.2015, 10:49     Из функции вернуть более одного значения #3
www.cplusplus.com/reference/utility/pair/
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1866 / 1662 / 579
Регистрация: 14.05.2014
Сообщений: 4,772
Записей в блоге: 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
2139 / 972 / 223
Регистрация: 30.11.2013
Сообщений: 3,241
30.10.2015, 13:23     Из функции вернуть более одного значения #6
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
struct Code
{
* * int g, f;
};
Врядли так можно
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
30.10.2015, 13:30     Из функции вернуть более одного значения #7
rikimaru2013, почему?
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2139 / 972 / 223
Регистрация: 30.11.2013
Сообщений: 3,241
30.10.2015, 13:33     Из функции вернуть более одного значения #8
Проверил - компилится) Первый раз вижу такое)) Мне бы даже в голову не пришло так написать поля (((
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 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
2139 / 972 / 223
Регистрация: 30.11.2013
Сообщений: 3,241
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     Из функции вернуть более одного значения
Еще ссылки по теме:

как вернуть (вывести) 4 значения C++
Как вернуть из функции два значения C++
C++ Вернуть из функции 2 значения

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4378 / 3221 / 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     Из функции вернуть более одного значения
Ответ Создать тему
Опции темы

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