Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Артем1909
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 7
#1

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

16.09.2013, 17:13. Просмотров 1573. Ответов 27
Метки нет (Все метки)

Функция, реализующая обобщенный алгоритм Евклида. Нужно вернуть 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 .........
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2013, 17:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как возвратить несколько значений в функции? (C++):

Как из функции вернуть несколько значений? - C++
Здравствуйте)! Не могу понять как из функции вернуть несколько значений,например чтобы функция инкрементировала 2 переменные взятые...

Как из функции вытащить несколько значений. - C++
Люди помогите,не могу нигде найти, как из функции вытащить несколько значений.

Как вернуть из функции несколько значений? - C++
Привет :) Собственно говоря вопрос понятен из темы) Вот код, не знаю как реализовать возвращение трёх вычислений (Площади, Диагонали и...

Как функции возвратить ссылку на объект? - C++
//Есть некая функция что писать перед функцией??? Инт написал. int func(){ // Создаем какой-то обьект Obj object_1; //что-то с ней...

Как принять и возвратить массив в другой функции? - C++
пример: прототип функции ??? int main() { создаём функцию которая задаёт массив b выводим обнавлённый массив }

Как возвратить созданый динамический двухмерный массив из функции в main? - C++
Надо из функции mtx возвртить матрицу в главную функцию. Матрица создаеться и заполняеться в mtx. Подскажите как правильно его...

27
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.09.2013, 17:19 #2
Цитата Сообщение от Артем1909 Посмотреть сообщение
То есть нужно возвратить значения массива U. Подскажите как это лучше сделать?
Передать его в функцию.
0
Артем1909
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 7
16.09.2013, 17:22  [ТС] #3
Мне нужно чтобы эта функция возвращала 3 эти значения с помощью return.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
16.09.2013, 17:23 #4
Цитата Сообщение от Артем1909 Посмотреть сообщение
Мне нужно чтобы эта функция возвращала 3 эти значения с помощью return.
ну сделайте тогда структуру
0
Артем1909
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 7
16.09.2013, 17:25  [ТС] #5
у меня не получается, можешь помочь? препод сказал, что можно также с помощью указателей...
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.09.2013, 17:27 #6
Цитата Сообщение от Артем1909 Посмотреть сообщение
Мне нужно чтобы эта функция возвращала 3 эти значения с помощью return.
Задание такое? Три, и через return?
0
Артем1909
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 7
16.09.2013, 17:28  [ТС] #7
Да, сказали, что можно с помощью указателей возвратить значения массива U. Но я не знаю как это сделать
0
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
16.09.2013, 17:29 #8
возвращай std::tuple<int, int, int>
0
Артем1909
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 7
16.09.2013, 17:30  [ТС] #9
Что это? Надо с помощью return
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
16.09.2013, 17:39 #10
Цитата Сообщение от Артем1909 Посмотреть сообщение
что можно с помощью указателей возвратить значения массива U
Конечно можно:
1) Выделить память динамически, скопировать туда значения массива, потом забыть освободить память и получить утечку памяти.
2) Возвратить указатель на локальный массив, и получить UB при использовании этого указателя.
3) Сделать, например, сам массив статическим и возвратить указатель на него, но тогда каждый вызов будет перезаписывать старые данные.
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.09.2013, 17:39 #11
Цитата Сообщение от Артем1909 Посмотреть сообщение
можно с помощью указателей возвратить значения массива U. Но я не знаю как это сделать
Я тоже.
0
Артем1909
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 7
16.09.2013, 17:42  [ТС] #12
Можешь подсказать, как тогда лучше написать?

Добавлено через 59 секунд
Цитата Сообщение от Croessmah Посмотреть сообщение
Конечно можно:
1) Выделить память динамически, скопировать туда значения массива, потом забыть освободить память и получить утечку памяти.
2) Возвратить указатель на локальный массив, и получить UB при использовании этого указателя.
3) Сделать, например, сам массив статическим и возвратить указатель на него, но тогда каждый вызов будет перезаписывать старые данные.
Можешь подсказать, как тогда лучше написать?
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.09.2013, 17:45 #13
Вернуть указатель на динамический массив.
0
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
16.09.2013, 17:50 #14
Цитата Сообщение от alsav22 Посмотреть сообщение
Вернуть указатель на динамический массив.
Ни в коем случае. Зачем на ровном месте все усложнять.

Вариант 1:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
std::tuple<int, int, int> func() {
  int a = 0;
  int b = 1;
  int c = 2;
  return std::make_tuple( a, b, c );
}
 
int main() {
 
  std::tuple<int, int, int> r = func();
  int a = std::get<0>( r );
  int b = std::get<1>( r );
  int c = std::get<2>( r );
 
  return 0;
}
Вариант 2:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct data {
  int a;
  int b;
  int c;
};
 
data func() {
  data s;
  s.a = 1;
  s.b = 2;
  s.c = 3;
  return s;
}
 
int main() {
 
  data r = func();
  int a = r.a;
  int b = r.b;
  int c = r.c;
 
  return 0;
}
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.09.2013, 17:54 #15
Цитата Сообщение от Voivoid Посмотреть сообщение
Ни в коем случае. Зачем на ровном месте все усложнять.
Где указатель, который нужно вернуть?
Цитата Сообщение от Артем1909 Посмотреть сообщение
с помощью указателей возвратить значения массива U
0
16.09.2013, 17:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2013, 17:54
Привет! Вот еще темы с ответами:

Несколько значений функции - C++
Здравствуйте. Нужно написать рекурсивную функцию, к-ая возвращает наибольный элемент массива и его индекс. Я могу сделать функции по...

Вернуть несколько значений из функции С++ - C++
Здравствуйте!!! Нужна помощь. В общем есть ДЛЛ написанная мною на плюсах в VS 2005,она подключается к проекту на vb 6.0. Сейчас все...

Возвратить массив из функции - C++
Вот код на FPC Lazarus, нада его точь в точь перевести в си++, я специально придумал этот пример для наглядности, мне нужно научиться...

Возвратить массив из функции - C++
Вопрос стар как мир it, но неопытному человеку, пока его не ткнут носом почти невозможно самому разобраться. Вообщем, как возвратить из...


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

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

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