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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 167, средняя оценка - 4.60
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,019
#1

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

22.03.2011, 00:40. Просмотров 25300. Ответов 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) }; 
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2011, 00:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция, которая возвращает несколько значений (C++):

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

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

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

Функция которая возвращает класс - C++
Есть функция считывания вектора с формы Вызов функции выглядит так Vector1.GetVector(GridOfVector1); CVector...

Функция, которая только возвращает значение - C++
Как реализовать функцию, которая только возвращает значение. Вот, например: #include "stdafx.h" #include <locale> #include <iostream>...

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

7
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
22.03.2011, 00:44 #2
Либо ссылки, либо указатели, либо описать структуру, представляющую весь набор желаемых значений и возвращать её экземпляр.
0
neske
1501 / 868 / 84
Регистрация: 26.03.2010
Сообщений: 2,973
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 / 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;
}
1
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,019
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
1501 / 868 / 84
Регистрация: 26.03.2010
Сообщений: 2,973
22.03.2011, 01:02 #7
MrGluck, в таком случае объяви переменные maxzn и maxrank в основной функции main (), а в фукнции работай уже с адресами этими переменных ( как показано в примере выше), тогда окажется, что после выполнения функции обе переменные изменились.

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

Функция, которая возвращает требуемое значение - C++
Дан одномерный массив из n чисел. Элементами массива являются случайные целые числа от -10 до 10 включительно. Напишите функцию, которая...

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

Функция, которая возвращает максимальное и минимальное - C++
Кто может дать материал на тему: Функция, которая возвращает максимальное и минимальное Теорию или задачу.. Заранее благодарен)

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


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

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

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