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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
andy_ics
0 / 0 / 0
Регистрация: 10.09.2010
Сообщений: 3
#1

функции и параметры - C++

14.09.2010, 13:55. Просмотров 1161. Ответов 26
Метки нет (Все метки)

есть фунция fun в которой аргументом является параметр p (должен передаваться из main), вычисляются в ней два значения f1 и f2. Как организовать вызов этой функции из main , чтобы она возвращала f1 и f2? Возможно ли это ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
14.09.2010, 13:59     функции и параметры #2
1. std::pair
2. Передавать f1, f2 как аргументы ф-ции по ссылке.
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
14.09.2010, 14:00     функции и параметры #3
Либо массив. Либо f1 и f2 передавать по ссылке. Либо сумму, разность и т.д. f1 и f2 можно вернуть
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
14.09.2010, 14:02     функции и параметры #4
Можно использовать глобальные переменные или передачу параметров по ссылке:
C++
1
2
3
4
void fun(int p, int &f1, int &f2)
{
 /// обработка
}
Переданные ф-ции параметры будут изменены и их можно использовать в main.
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
14.09.2010, 14:02     функции и параметры #5
про тьюплы забыли.
silent_1991
Эксперт С++
4951 / 3027 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
14.09.2010, 14:03     функции и параметры #6
andy_ics,
Только через указатели...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <conio.h>
 
int func(int p, int *f1, int *f2)
{
    *f1 = p * p;
    *f2 = p * p * p;
    
    return 0;
}
 
int main()
{
    int p, f1, f2;
    
    printf("Input p: ");
    scanf("%d", &p);
    func(p, &f1, &f2);
    printf("p^2 = %d\np^3 = %d", f1, f2);
    
    getch();
    return 0;
}
Добавлено через 43 секунды
Ну вот, ушёл код писать на пару минут, а тут уже куча ответов)))
ForEveR
14.09.2010, 14:06
  #7

Не по теме:

niXman, Ну кортеж все же еще не везде есть.

niXman
14.09.2010, 14:08
  #8

Не по теме:


если все топовые производители компиляторов это уже реализовали - значит везде

ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
14.09.2010, 14:14     функции и параметры #9
niXman, А работу с кортежем можешь показать в этом случае?
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
14.09.2010, 14:21     функции и параметры #10
вот: http://liveworkspace.org/code/8c2ffe...00c7757a8d5dad
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
14.09.2010, 14:25     функции и параметры #11
C++
1
2
3
4
5
6
7
int fun( int p )
{
  int f1 = p/2;
  int f2 = p*2;
  return f1;
  return f2;  // а вот это ещё вдогонку!
}
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
14.09.2010, 14:34     функции и параметры #12
Andrew_Lvov, Значение второго же не вернется. Разве нет?
dihlofos
14.09.2010, 14:36
  #13

Не по теме:

Насколько я понимаю, это недостижимый код Или я не так понимаю

Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
14.09.2010, 14:37     функции и параметры #14
Lavroff, ну ладно, тогда так:
C++
1
2
3
4
5
6
7
8
9
10
int fn( int p )
{
  static bool first = true;
  int f1 = p/2;
  int f2 = p*2;
  if( first )
    return f1;
  else
    return f2;
}
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
14.09.2010, 14:37     функции и параметры #15
Ну да. До второго реторна просто не дойдет
Тоже улыбнуло)))
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
14.09.2010, 14:38     функции и параметры #16
В принципе, есть ещё вариант, но тут нужно немного удачливости.
C++
1
2
3
4
5
6
7
8
9
int fun( int p )
{
  int f1 = p/2;
  int f2 = p*2;
  if( rand() % 2 )
    return f1;
  else
    return f2;
}
ForEveR
14.09.2010, 14:39
  #17

Не по теме:

Andrew_Lvov, Ахахах. Совсем чуть-чуть

niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
14.09.2010, 14:39     функции и параметры #18
Цитата Сообщение от Andrew_Lvov Посмотреть сообщение
return f1;
* return f2; *// а вот это ещё вдогонку!

Не по теме:

забавно. сопрограммы напомнило

CyBOSSeR
Эксперт C++
2298 / 1668 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.09.2010, 14:40     функции и параметры #19
По-моему, лучший способ с указателями, в т.ч. и с std::pair и std::tr1::tuple, ибо в вызывающем коде сразу видно, что объекты передаются для модификации.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2010, 14:40     функции и параметры
Еще ссылки по теме:

Параметры функции C++
C++ Параметры функции main
C++ Функции и процедуры и их параметры
C++ Параметры функции и их считывание
Параметры функции C++

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

Или воспользуйтесь поиском по форуму:
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
14.09.2010, 14:40     функции и параметры #20
Давно, когда я встретился с такой проблемой, я поступил так: добавил в функцию ещё одиу входную переменную. Она могла принимать только два значения - 1 и 2. Если перемен. ==1 ретурн ф1, елс ретурн ф2. Способ не "научный", но работает
Yandex
Объявления
14.09.2010, 14:40     функции и параметры
Ответ Создать тему
Опции темы

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