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

Функция, которая возвращает несколько значений - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 167, средняя оценка - 4.60
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
22.03.2011, 00:40     Функция, которая возвращает несколько значений #1
как "забрать" у функции несколько значений?

допустим:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int func( int x, int y)
{
x+=5;
y+=3;
}
return (x,y)
 
int main()
{
int x=5, y=1;
// как хотелось бы сделать (arr[0] присвоилось бы х , а arr[1] присвоилось бы y)
int arr[2] = { func (x, y) }; 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
22.03.2011, 00:44     Функция, которая возвращает несколько значений #2
Либо ссылки, либо указатели, либо описать структуру, представляющую весь набор желаемых значений и возвращать её экземпляр.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
22.03.2011, 00:45     Функция, которая возвращает несколько значений #3
Нет, функция возвращает только одного значение, или вообще ничего.

Но можно сделать так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
void func (int *x, int *y)
{
    *x+=5;
    *y+=3;
}
 
int main (void)
{
    int a=5;
    int b=10;
    std::cout << "Before: a=" << a << "; b=" << b;
    std::cout << std::endl;
 
    func (&a, &b);
 
    std::cout << "After: a=" << a << "; b=" << b;
    std::cout << std::endl;
    return 0;
}
Добавлено через 15 секунд
silent_1991, сор, уже поздно увидел пост))
silent_1991
22.03.2011, 00:46
  #4

Не по теме:

neske, ничего, у меня ещё страница обновиться после отправки не успела, как пришло письмо о новом сообщении в теме)))

Ариман
20 / 20 / 1
Регистрация: 18.09.2010
Сообщений: 28
22.03.2011, 00:49     Функция, которая возвращает несколько значений #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
using namespace std;
void func(int*,int);
void main()
{
    int x=5,y=1;
    int arr[2]={0};
    func(arr,2);
}
void func(int*arr,int size)
{
    arr[0]=5;
    arr[1]=3;
    cout<<arr[0]<<" "<<arr[1]<<endl;
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
22.03.2011, 00:58  [ТС]     Функция, которая возвращает несколько значений #6
Спасибо, но не совсем то. В этом конкретном примере хотелось бы как-то взять с функции значение maxrank вместе c maxzn.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
int combo (int r[5], int s[5]) // комбинации
{
     int m=0, n=1;
     int maxzn=1; // максимальная комбинация
     int maxrank=1; // ранк максимального значения
     for (int i=0; i<4; i++)
     {
         if (r[m]==r[n+i])
         {
         for (int j=4-i; j<3; j++)
         {
             if (r[n+i]==r[j])
             {
                  maxzn=3;
                  maxrank=r[n+i];
             }
             else
             {
                 maxzn=2;
                 maxrank=r[m];
             }
         }
         }
     }
     if (maxzn==3)
     cout<<"Тройка\n";
     if (maxzn==2)
     cout<<"Двойка\n";
     if (maxzn==1)
     cout<<"Старшая карта\n";
     return (maxzn); // передается значение
}
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
22.03.2011, 01:02     Функция, которая возвращает несколько значений #7
MrGluck, в таком случае объяви переменные maxzn и maxrank в основной функции main (), а в фукнции работай уже с адресами этими переменных ( как показано в примере выше), тогда окажется, что после выполнения функции обе переменные изменились.

Другого, более просто варианта ,у вас нет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2011, 01:31     Функция, которая возвращает несколько значений
Еще ссылки по теме:

Функция, которая возвращает значение в классе C++
C++ Функция, которая только возвращает значение
Функция которая возвращает значение и цикл C++

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

Или воспользуйтесь поиском по форуму:
vx5
 Аватар для vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
22.03.2011, 01:31     Функция, которая возвращает несколько значений #8
MrGluck, функция, возвращающая несколько значений неверна уже логически. вы пытаетесь склеить несколько функций, разбейте ее на две различные.
Yandex
Объявления
22.03.2011, 01:31     Функция, которая возвращает несколько значений
Ответ Создать тему
Опции темы

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