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

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

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

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

16.09.2013, 17:13. Просмотров 1516. Ответов 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. Подскажите как правильно его...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
16.09.2013, 17:56 #16
Цитата Сообщение от alsav22 Посмотреть сообщение
Где указатель, который нужно вернуть?
Это плохой выбор для решения данной проблемы
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.09.2013, 18:01 #17
Цитата Сообщение от Voivoid Посмотреть сообщение
Это плохой выбор для решения данной проблемы
Задание такое (если, конечно, такое). Я бы вообще ничего не возвращал, а передал бы массив в функцию. Предложите другой, через возврат указателя.
0
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
16.09.2013, 18:03 #18
В задании указано, что нужно просто возвратить три значения.
0
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,061
Завершенные тесты: 1
16.09.2013, 18:04 #19
Цитата Сообщение от alsav22 Посмотреть сообщение
Предложите другой, через возврат указателя.
C++
1
2
3
4
5
6
int* getArray()
{
int* ret = new int[3];
...
return ret;
}
только не забыть потом удалить
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.09.2013, 18:08 #20
Цитата Сообщение от Raali Посмотреть сообщение
C++
1
2
3
4
5
6
int* getArray()
{
int* ret = new int[3];
...
return ret;
}
только не забыть потом удалить
Чем это отличается от моего предложения?
Цитата Сообщение от alsav22 Посмотреть сообщение
Вернуть указатель на динамический массив.
0
Артем1909
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 7
16.09.2013, 18:09  [ТС] #21
Еще раз повторю задание: в функции у меня вычисляется 3 значения - НОД, x, y по обобщенному алгоритму Евклида, здесь это U[0],U[1] и U[2]. Мне нужно, чтобы функция возвращала все 3 значения, так как буду использовать эту функцию в дальнейшем.
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
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';
}
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.09.2013, 18:10 #23
Цитата Сообщение от Voivoid Посмотреть сообщение
В задании указано, что нужно просто возвратить три значения.
...
Цитата Сообщение от Croessmah Посмотреть сообщение
ну сделайте тогда структуру
Цитата Сообщение от Артем1909 Посмотреть сообщение
у меня не получается, можешь помочь? препод сказал, что можно также с помощью указателей...
Цитата Сообщение от Артем1909 Посмотреть сообщение
Да, сказали, что можно с помощью указателей возвратить значения массива U. Но я не знаю как это сделать
0
Croessmah
Эксперт CЭксперт С++
13221 / 7493 / 845
Регистрация: 27.09.2012
Сообщений: 18,412
Записей в блоге: 3
Завершенные тесты: 1
16.09.2013, 18:12 #24
rangerx,
Цитата Сообщение от Артем1909 Посмотреть сообщение
возвращала 3 эти значения с помощью return.
0
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
16.09.2013, 18:12 #25
Цитата Сообщение от Raali Посмотреть сообщение
C++
1
2
3
4
5
6
int* getArray()
{
int* ret = new int[3];
...
return ret;
}
только не забыть потом удалить
Ага и на ровном месте получаем возможность утечки памяти плюс возможность выхода за пределы массива. Ну еще и можно упомянуть низкую эффективность из-за необходимости выделения динамической памяти ( ну, на случай, если придется многократно вызывать данную функцию )

у меня не получается, можешь помочь? препод сказал, что можно также с помощью указателей...
Можно, но не нужно
0
alsav22
5419 / 4815 / 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 значения
Тогда, лучше всего, подходит вариант со структурой.
0
Raali
16.09.2013, 18:18
  #27

Не по теме:

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

0
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
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2013, 18:39
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.09.2013, 18:39
Ответ Создать тему
Опции темы

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