Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 167, средняя оценка - 4.60
MrGluck
Модератор
Эксперт CЭксперт С++
7981 / 4862 / 1423
Регистрация: 29.11.2010
Сообщений: 13,237
#1

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

22.03.2011, 00:40. Просмотров 31425. Ответов 7
Метки нет (Все метки)

как "забрать" у функции несколько значений?

допустим:

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) }; 
}

http://www.cyberforum.ru/cpp-beginners/thread749148.html
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2011, 00:40
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Функция, которая возвращает несколько значений (C++):

Функция которая возвращает класс
Есть функция считывания вектора с формы Вызов функции выглядит так ...

Функция, которая возвращает массив
Здравствуйте. Подскажите, пожалуйста, как правильно написать код - есть...

Функция, которая возвращает массив
Как сделать так чтобы функция возвращала указатель на рандомно сгенерированный ...

Функция, которая возвращает значение в классе
Уважаемые, подскажите пожалуйста. У меня есть программа. (созд. списка;...

Функция, которая возвращает требуемое значение
Дан одномерный массив из n чисел. Элементами массива являются случайные целые...

7
silent_1991
Эксперт С++
5007 / 3065 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
22.03.2011, 00:44 #2
Либо ссылки, либо указатели, либо описать структуру, представляющую весь набор желаемых значений и возвращать её экземпляр.
0
neske
1526 / 893 / 191
Регистрация: 26.03.2010
Сообщений: 3,073
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, сор, уже поздно увидел пост))
3
silent_1991
22.03.2011, 00:46
  #4

Не по теме:

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

1
Ариман
20 / 20 / 3
Регистрация: 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;
}
1
MrGluck
Модератор
Эксперт CЭксперт С++
7981 / 4862 / 1423
Регистрация: 29.11.2010
Сообщений: 13,237
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); // передается значение
}
0
neske
1526 / 893 / 191
Регистрация: 26.03.2010
Сообщений: 3,073
22.03.2011, 01:02 #7
MrGluck, в таком случае объяви переменные maxzn и maxrank в основной функции main (), а в фукнции работай уже с адресами этими переменных ( как показано в примере выше), тогда окажется, что после выполнения функции обе переменные изменились.

Другого, более просто варианта ,у вас нет.
1
vx5
187 / 171 / 12
Регистрация: 04.09.2010
Сообщений: 656
22.03.2011, 01:31 #8
MrGluck, функция, возвращающая несколько значений неверна уже логически. вы пытаетесь склеить несколько функций, разбейте ее на две различные.
1
22.03.2011, 01:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2011, 01:31
Привет! Вот еще темы с решениями:

Функция, которая возвращает максимальное и минимальное
Кто может дать материал на тему: Функция, которая возвращает максимальное и...

Функция, которая только возвращает значение
Как реализовать функцию, которая только возвращает значение. Вот, например:...

Функция которая возвращает значение и цикл
Задача функции: Ввод прекращается при наполнении массива либо когда...

Функция, которая возвращает количество её вызовов
Напишите функцию, которая возвращает количество её вызовов (вызвали в первый...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru