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

Как возвратить несколько значений в функции? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Артем1909
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 7
16.09.2013, 17:13     Как возвратить несколько значений в функции? #1
Функция, реализующая обобщенный алгоритм Евклида. Нужно вернуть 3 значения: gcd, x и y. То есть нужно возвратить значения массива U. Подскажите как это лучше сделать?

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
__int64 Low2(__int64 a, __int64 b)
{   if (a<0 || b<0)
    printf("\nUslovie ne vipolneno. Zadaite a ili b zanovo");
    else 
    {
    if (a<b)
    {
        int z;
        z=a; a=b; b=z;
    }
 
    int U[3], V[3], T[3], q, k;
    U[0]=a; U[1]=1; U[2]=0;
    V[0]=b; V[1]=0; V[2]=1;
 
    do
    {
        q=U[0]/V[0];
        T[0]=U[0]%V[0];
        T[1]=U[1]-q*V[1];
        T[2]=U[2]-q*V[2];
        int i;
        for (i=0; i<=2; i++)
        {
        U[i]=V[i];
        V[i]=T[i];
        }
    }
    while (V[0]>0);
    return .........
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Артем1909
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 7
16.09.2013, 18:09  [ТС]     Как возвратить несколько значений в функции? #21
Еще раз повторю задание: в функции у меня вычисляется 3 значения - НОД, x, y по обобщенному алгоритму Евклида, здесь это U[0],U[1] и U[2]. Мне нужно, чтобы функция возвращала все 3 значения, так как буду использовать эту функцию в дальнейшем.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
16.09.2013, 18:09     Как возвратить несколько значений в функции? #22
Цитата Сообщение от Артем1909 Посмотреть сообщение
Да, сказали, что можно с помощью указателей возвратить значения массива U. Но я не знаю как это сделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
void func(int* one, int* two, int* three)
{
    *one = 1;
    *two = 2;
    *three = 3;
}
 
int main()
{
    int a, b, c;
    func(&a, &b, &c);
    std::cout << a << ' ' << b << ' ' << c << '\n';
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.09.2013, 18:10     Как возвратить несколько значений в функции? #23
Цитата Сообщение от Voivoid Посмотреть сообщение
В задании указано, что нужно просто возвратить три значения.
...
Цитата Сообщение от Croessmah Посмотреть сообщение
ну сделайте тогда структуру
Цитата Сообщение от Артем1909 Посмотреть сообщение
у меня не получается, можешь помочь? препод сказал, что можно также с помощью указателей...
Цитата Сообщение от Артем1909 Посмотреть сообщение
Да, сказали, что можно с помощью указателей возвратить значения массива U. Но я не знаю как это сделать
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,915
Записей в блоге: 2
Завершенные тесты: 1
16.09.2013, 18:12     Как возвратить несколько значений в функции? #24
rangerx,
Цитата Сообщение от Артем1909 Посмотреть сообщение
возвращала 3 эти значения с помощью return.
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,284
16.09.2013, 18:12     Как возвратить несколько значений в функции? #25
Цитата Сообщение от Raali Посмотреть сообщение
C++
1
2
3
4
5
6
int* getArray()
{
int* ret = new int[3];
...
return ret;
}
только не забыть потом удалить
Ага и на ровном месте получаем возможность утечки памяти плюс возможность выхода за пределы массива. Ну еще и можно упомянуть низкую эффективность из-за необходимости выделения динамической памяти ( ну, на случай, если придется многократно вызывать данную функцию )

у меня не получается, можешь помочь? препод сказал, что можно также с помощью указателей...
Можно, но не нужно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.09.2013, 18:15     Как возвратить несколько значений в функции? #26
Цитата Сообщение от rangerx Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
void func(int* one, int* two, int* three)
{
    *one = 1;
    *two = 2;
    *three = 3;
}
 
int main()
{
    int a, b, c;
    func(&a, &b, &c);
    std::cout << a << ' ' << b << ' ' << c << '\n';
}
...
Цитата Сообщение от Артем1909 Посмотреть сообщение
Мне нужно, чтобы функция возвращала все 3 значения,
Добавлено через 2 минуты
Цитата Сообщение от Артем1909 Посмотреть сообщение
Мне нужно, чтобы функция возвращала все 3 значения
Тогда, лучше всего, подходит вариант со структурой.
Raali
16.09.2013, 18:18
  #27

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
Чем это отличается от моего предложения?
Ну тс попросил другой вариант еще xD

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2013, 18:39     Как возвратить несколько значений в функции?
Еще ссылки по теме:

C++ Как из функции вытащить несколько значений.
C++ Вернуть несколько значений из функции С++
C++ Как функции возвратить ссылку на объект?

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

Или воспользуйтесь поиском по форуму:
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
16.09.2013, 18:39     Как возвратить несколько значений в функции? #28
Цитата Сообщение от Артем1909 Посмотреть сообщение
Еще раз повторю задание: в функции у меня вычисляется 3 значения - НОД, x, y по обобщенному алгоритму Евклида, здесь это U[0],U[1] и U[2]. Мне нужно, чтобы функция возвращала все 3 значения, так как буду использовать эту функцию в дальнейшем.
/del
Yandex
Объявления
16.09.2013, 18:39     Как возвратить несколько значений в функции?
Ответ Создать тему
Опции темы

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