Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> недопустимые локальные определения функции 
:(
    Опции темы
qwerty1122
Дата 7.12.2013, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 20.10.2013

Репутация: нет
Всего: нет



всем привет)вот пишу программку для вычисления методом приближений,и вот выдает ошибку что не допустимые локальные определения функции,и не могу понять почему,подскажите как исправить. вот сам код(модуль проекта):
Код

#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <math.h>
#include <math.h>

using namespace std;

int key;

int ButtonPress()
{
    cout<<"Functions are available:\n";
    cout<<" Square - 1\n  Cube - 2\n";
    cout<<"Select any func: ";
    cin>>key;
    return key;
}

int Calcul()
{
        int a1, b1, c1;
    int a2, b2, c2, d2;
    cout<<"\nSelection coefficients\n";

    if(key=1)
    {
        cout<<"A = ";
        cin>>a1;
        cout<<"B = ";
        cin>>b1;
        cout<<"C = ";
        cin>>c1;
        
        double f(int a1, int b1, int c1, double x)
        { 
         return   a1*x*x+b1*x+c1;
        }
        double fi(int a1, int b1, double x) 
        { 
         return  a1*2*x+b1;
        }
    }

    else 
    {
        cout<<"A = ";
        cin>>a2;
        cout<<"B = ";
        cin>>b2;
        cout<<"C = ";
        cin>>c2;
        cout<<"D = ";
        cin>>d2;
        
        double f(int a2, int b2, int c2, int d2, double x)
        { 
         return   a2*x*x*x+b2*x*x+c2*x+d2;
        }
        double fi(int a2, int b2, int c2, double x) 
        { 
         return  a2*3*x*x+b2*2*x+c2;
        }
    }
}

просто пытаюсь чтобы в зависимости от выбранной функции вводились определенные коэфициенты и образовывалась нужная функция
PM MAIL   Вверх
Фантом
Дата 7.12.2013, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Что значит "почему"? Потому что так делать нельзя. Вынесите все, касающееся дополнительных функций, из тела основной.
PM   Вверх
Alca
Дата 8.12.2013, 13:24 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Код

   else 
    {
        cout<<"A = ";
        cin>>a2;
        cout<<"B = ";
        cin>>b2;
        cout<<"C = ";
        cin>>c2;
        cout<<"D = ";
        cin>>d2;
        
        struct Function {
          static double f(int a2, int b2, int c2, int d2, double x)
          { 
           return   a2*x*x*x+b2*x*x+c2*x+d2;
          }
          static double fi(int a2, int b2, int c2, double x) 
          {  
           return  a2*3*x*x+b2*2*x+c2;
          }
        }
    }


Это сообщение отредактировал(а) Alca - 8.12.2013, 13:24


--------------------
PM WWW ICQ Skype Jabber   Вверх
qwerty1122
Дата 8.12.2013, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 20.10.2013

Репутация: нет
Всего: нет



Цитата(Фантом @ 7.12.2013,  17:17)
Что значит "почему"? Потому что так делать нельзя. Вынесите все, касающееся дополнительных функций, из тела основной.

Да да,вы правы,так нельзя делать)просто мне казалось странным что вроде все верно но не работает)все вынес,все заработало)
PM MAIL   Вверх
xvr
Дата 9.12.2013, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(qwerty1122 @  8.12.2013,  13:41 Найти цитируемый пост)
все вынес,все заработало

Да ну? И остальное тоже заработало?

Цитата(qwerty1122 @  7.12.2013,  15:52 Найти цитируемый пост)
    if(key=1)

Вы думаете, что это сравнение key с 1? Это не так  smile 

Цитата(qwerty1122 @  7.12.2013,  15:52 Найти цитируемый пост)
 
Код

      double f(int a2, int b2, int c2, int d2, double x)
        { 
         return   a2*x*x*x+b2*x*x+c2*x+d2;
        }
Вы думаете, что описания функции достаточно, что бы она немедленно посчиталась и что то кому то вернула (Исходя из того, что вызовов этих функций нет и return у Calcul тоже нет)? Это тоже не так  smile 

Про описание функций внутри Calcul я умолчу, это уже подробно обговорили  smile 


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0684 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.