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

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

Войти
Регистрация
Восстановить пароль
 
HAIRY
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 231
#1

можно ли вернуть функцию? - C++

02.03.2014, 00:25. Просмотров 376. Ответов 17
Метки нет (Все метки)

можно ли как вернуть функцию? напистаь что-то типа этого, но чтобы работало?
#include <iostream>
using namespace std;

C++
1
2
3
4
5
6
7
8
9
10
11
12
int main (void)
{
        char c='y';
        while(c=='y'||c=='Y')
        {
            cout<<"Continue?(Y/N)"<<endl;
            cin>>c;
        }
 
 
  return float depo_1 (float a);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2014, 00:25     можно ли вернуть функцию?
Посмотрите здесь:

Вернуть указатель на функцию класса - C++
Добрый день!! У меня есть класс, в котором есть указатель на функцию: class foo_1{ public: void (*test_1) (int); };

Передать массив в функцию и вернуть из функции - C++
Доброго времени суток. Пытаюсь считать из файлов числа и попарно их перемножить. Проблема в функциях void EnterMassive и void Multi. В...

Можно из функции вернуть статический массив? - C++
Есть функция float calculation_Psi( float Psi_old, float Omega ){ Psi_old=0.221; return Psi_old; } На входе принимает...

Как вернуть экземпляр класса через шаблонную функцию - C++
Вот программа, два класса и функция main #pragma once class BaseClass { public: BaseClass(); ~BaseClass();

Как вернуть функцию, которая потерялась при наследовании классов? - C++
Предположим есть два класса: class Parent { public: void foo() { std::cout &lt;&lt; &quot;parent foo &quot; &lt;&lt; std::endl; } }; class Child...

Вернуть из функции значение; при этом прервать саму функцию - C++
Всех приветствую! Прощу прощения за глупый вопрос, но не знаю на него ответа. Требуется вернуть из функции значение при этом прервать саму...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
02.03.2014, 00:27     можно ли вернуть функцию? #2
В данном случае лучше скажите чего Вы хотите добиться и зачем такое вообще нужно.
HAIRY
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 231
02.03.2014, 00:32  [ТС]     можно ли вернуть функцию? #3
нужно сделать чтобы при Y начинала работать функция, а при другом каком-нибудь выборе, просто выход из программы
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
02.03.2014, 00:42     можно ли вернуть функцию? #4
C++
1
2
3
if ( *проверяем Y или нет* ) {
  *вызываем функцию*
}
HAIRY
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 231
02.03.2014, 00:48  [ТС]     можно ли вернуть функцию? #5
все просто))
ZloiSabak
1 / 1 / 1
Регистрация: 25.02.2014
Сообщений: 16
02.03.2014, 01:57     можно ли вернуть функцию? #6
Может если очень надо передавать функцию, то просто вернуть указатель на нее?
gromo
370 / 269 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
02.03.2014, 04:03     можно ли вернуть функцию? #7
Цитата Сообщение от HAIRY Посмотреть сообщение
можно ли вернуть функцию?
Нет.
C++
1
2
3
// typedef представляет собой тип функции
typedef int func( int*,int );
func ff( int ); // ошибка: тип возврата ff() - функция
HAIRY
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 231
02.03.2014, 11:53  [ТС]     можно ли вернуть функцию? #8
ну в общем написал я вот такое
C++
1
2
3
4
5
6
7
8
int quest(void)
{
        char c='y';
            if (c=='y'||c=='Y'){
            int main();
            }
  return 0;
}
и вот вызов
C++
1
2
3
4
else  
cout << "Continue?(Y/N)" << endl;
cin >> c;
int quest(c);
что бы я не нажимал программа закрывается, что не так?
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.03.2014, 14:25     можно ли вернуть функцию? #9
Цитата Сообщение от HAIRY Посмотреть сообщение
ну в общем написал я вот такое
Вы совершенно не понимаете то, что пишите. Путаете объявление функции и ее вызов.
C++
1
2
void f(int); // объявление функции, принимающей int и ничего не возвращающей
f(42); // вызов функции с параметром 42
Помимо этого функция должна быть где-то определена, т.е. иметь тело. Например:
C++
1
2
3
4
void f(int i) 
{
   std::cout << i << std::endl; // вывод числа на консоль
}
HAIRY
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 231
02.03.2014, 14:35  [ТС]     можно ли вернуть функцию? #10
вот сама функция, она обращается к другой, все нормально работает
C++
1
2
3
4
5
6
int main()
{
    float a;
    cin >> a;
    depo_1(a);
}
вот код в конце функции depo_1;
C++
1
2
3
4
5
6
7
8
9
10
else { 
        char c='y';
        cout<<"Continue?(Y/N)"<<endl;
        cin>>c;
        if(c=='y'||c=='Y')
        {
                           cout<<"XXX"<<endl;
            int main();
        }
}
при нажатии Y текст выводится, но функция не срабатывает мне в int main() не надо ничего передавать, мне надо просто, чтобы она опять сработала
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
02.03.2014, 14:42     можно ли вернуть функцию? #11
Цитата Сообщение от HAIRY Посмотреть сообщение
нужно сделать чтобы при Y начинала работать функция, а при другом каком-нибудь выборе, просто выход из программы
А зачем спрашиваешь про возврат функции? Предположим, так можно. Но если ты так и сделаешь, то функция не будет вызвана в любом случае, для её выполнения надо её вызвать в той программе/подпрограмме, куда ты возвращаешь. Вернул значение-функцию, в другом месте получил и полученное значение вызвал. Но даже это не решит проблему, так так если реализовать такой вариант, то возвращаемая функция будет вызываться всегда. Сначала надо понять смысл собственных действий, а потом спрашивать, как их осуществить.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.03.2014, 14:44     можно ли вернуть функцию? #12
Цитата Сообщение от HAIRY Посмотреть сообщение
чтобы она опять сработала
Вызывать main() вручную запрещено стандартом.
Если нужно повторить какие-то действия, используйте цикл. Например:
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
#include <iostream>
using namespace std;
     
void depo_1(float a)
{
    cout << a*2 << endl;    
}
     
int main() {
     
    bool repeat = true;
     
    while( repeat )
    {
        float a;
        cin >> a;
        depo_1(a);
        char c='y';
        cout<<"Continue?(Y/N)"<<endl;
        cin>>c;
        repeat = c=='y'||c=='Y';
    }
     
    return 0;
}
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
02.03.2014, 14:51     можно ли вернуть функцию? #13
Цитата Сообщение от HAIRY Посмотреть сообщение
при нажатии Y текст выводится, но функция не срабатывает мне в int main() не надо ничего передавать, мне надо просто, чтобы она опять сработала
Даже если предположить, что main можно вызывать самому, рекурсия, в том числе, косвенная рекурсия бесконечна, если нет условия, при выполнении которого функция отработает не рекурсивно, а оно неизбежно учитывает параметр функции. Пусть ты запихал условие в depo_1, но но из функции main сама depo_1 вызовется с теми же значениями всех параметров, так как функция main не может получить ни какой информации о необходимости их изменения. Поэтому при косвенной рекурсии параметры должны иметь все косвенно-рекурсивные функции.
HAIRY
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 231
02.03.2014, 14:52  [ТС]     можно ли вернуть функцию? #14
в общем, что нужно сделать в функции depo_1(), есть if-else, при if все работает нормально, а при else должно вывести сообщение, задать вопрос и если ответ положительный опять должна начать работать функция depo_1(), но в else ее нельзя вызвать, так как аргумент она получает в int main().
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
02.03.2014, 14:54     можно ли вернуть функцию? #15
Цитата Сообщение от HAIRY Посмотреть сообщение
положительный опять должна начать работать функция depo_1(), но в else ее нельзя вызвать, так как аргумент она получает в int main().
Во-первых не путай функциональную парадигму с процедурной. А во-вторых вызовы друг на друга не влияют.
HAIRY
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 231
02.03.2014, 15:09  [ТС]     можно ли вернуть функцию? #16
если честно я вас не пойму((
в общем попробую объяснить так
вот 1 функция
int main()
C++
1
2
3
4
5
{
    float a;
    cin >> a;
    depo_1(a);
}
передает a в depo_1().
вот функция depo_1() образно
float depo_1(float a)
C++
1
2
3
4
5
6
7
8
9
{
    if (если число подходит) { 
        выполняется
    } else {если нет, выводится причина, и задается вопрос, типа "Вести подходящее число"
       а для этого надо вернуться в int main(). Можно сделать цикл в int main, но у меня будет 4 функции.
с похожими условиями и надо будет в случае не правильного ввода, спрашивать в каждой функции.
    }
    return 0;
}
ну в общем вот так(ну понятно дело, что я ток начал пытаться программировать и если пишу что-то непонятное или не логичное,не надо меня пинать)
а и еще, 4 функции сразу не будут работать, пользователя нужно будет выбрать только одну.
zss
Модератор
Эксперт С++
6280 / 5883 / 1904
Регистрация: 18.12.2011
Сообщений: 15,093
Завершенные тесты: 1
02.03.2014, 15:14     можно ли вернуть функцию? #17
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void depo_1(float);
int main()
{
     char c;
     cin>>c;
    while(c!='y' && c!='Y')
    {
            float a=0.5;
            depo_1(a);
            cout<<"Continue?(Y/N)"<<endl;
            cin>>c;
    }    
}
void depo_1(float y)
{
    cout<<"a="<<a<<endl;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2014, 15:24     можно ли вернуть функцию?
Еще ссылки по теме:

Можно ли вернуть имя функции, вернувшей ошибку? Стандартами winapi - C++
например FormatMessage может вернуть описание ошибки, а может ли она или какая ни будь другая функция вернуть имя функции которая вызвала...

В функцию передается несколько целых чисел. Создать из всех параметров динамический массив и вернуть указатель - C++
В функцию передается несколько целых чисел. Создать из всех параметров динамический массив и вернуть указатель на него. Первым элементом...

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

Можно ли сделать функцию с параметром - C++
Допустим у меня есть функция, проверяющая четное число или нет. bool chet(int x) { if(x%2==0) { return true; } ...

на что можно заменить функцию? - C++
#include &lt;vcl.h&gt; #include &lt;iostream.h&gt; #include &lt;iomanip.h&gt; float yearzp(float z); //описание функции годовая 3/п const int m=20;...


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

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
02.03.2014, 15:24     можно ли вернуть функцию? #18
Цитата Сообщение от HAIRY Посмотреть сообщение
если честно я вас не пойму((
в общем попробую объяснить так
Кого ты понять не можешь, так это ты сам.
Yandex
Объявления
02.03.2014, 15:24     можно ли вернуть функцию?
Ответ Создать тему
Опции темы

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