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

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

Восстановить пароль Регистрация
 
HAIRY
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 225
02.03.2014, 00:25     можно ли вернуть функцию? #1
можно ли как вернуть функцию? напистаь что-то типа этого, но чтобы работало?
#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++
C++ Можно ли сделать функцию с параметром
C++ Вернуть из функции значение; при этом прервать саму функцию
C++ Можно ли вернуть имя функции, вернувшей ошибку? Стандартами winapi
C++ Какое одинаковое значение можно вернуть из функций <string> f () и vector < <string> > f()?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
02.03.2014, 00:27     можно ли вернуть функцию? #2
В данном случае лучше скажите чего Вы хотите добиться и зачем такое вообще нужно.
HAIRY
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 225
02.03.2014, 00:32  [ТС]     можно ли вернуть функцию? #3
нужно сделать чтобы при Y начинала работать функция, а при другом каком-нибудь выборе, просто выход из программы
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
02.03.2014, 00:42     можно ли вернуть функцию? #4
C++
1
2
3
if ( *проверяем Y или нет* ) {
  *вызываем функцию*
}
HAIRY
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 225
02.03.2014, 00:48  [ТС]     можно ли вернуть функцию? #5
все просто))
ZloiSabak
1 / 1 / 1
Регистрация: 25.02.2014
Сообщений: 16
02.03.2014, 01:57     можно ли вернуть функцию? #6
Может если очень надо передавать функцию, то просто вернуть указатель на нее?
gromo
 Аватар для gromo
366 / 265 / 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
Сообщений: 225
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
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
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
Сообщений: 225
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
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
02.03.2014, 14:42     можно ли вернуть функцию? #11
Цитата Сообщение от HAIRY Посмотреть сообщение
нужно сделать чтобы при Y начинала работать функция, а при другом каком-нибудь выборе, просто выход из программы
А зачем спрашиваешь про возврат функции? Предположим, так можно. Но если ты так и сделаешь, то функция не будет вызвана в любом случае, для её выполнения надо её вызвать в той программе/подпрограмме, куда ты возвращаешь. Вернул значение-функцию, в другом месте получил и полученное значение вызвал. Но даже это не решит проблему, так так если реализовать такой вариант, то возвращаемая функция будет вызываться всегда. Сначала надо понять смысл собственных действий, а потом спрашивать, как их осуществить.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
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
Ушёл с форума.
 Аватар для 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
Сообщений: 225
02.03.2014, 14:52  [ТС]     можно ли вернуть функцию? #14
в общем, что нужно сделать в функции depo_1(), есть if-else, при if все работает нормально, а при else должно вывести сообщение, задать вопрос и если ответ положительный опять должна начать работать функция depo_1(), но в else ее нельзя вызвать, так как аргумент она получает в int main().
taras atavin
Ушёл с форума.
 Аватар для 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
Сообщений: 225
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
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 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     можно ли вернуть функцию?
Еще ссылки по теме:

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

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

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

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