Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2010, 23:33   #1
bobby2008
Пользователь
 
Аватар для bobby2008
 
Регистрация: 13.04.2009
Сообщений: 37
По умолчанию С++ Билдер. Linker Error.

В общем есть такая проблема. При попытке создать собственный файл .h ничего не выходит - выскакивает следующее сообщение:
[Linker Error] Unresolved external '_main' referenced from C:\PROGRAM FILES (X86)\BORLAND\CBUILDER6\LIB\C0X32.O BJ
Есть прога, которая работает если ничего не разбивать. Вот собственно что я сделал:
Рабочая прога:
Код:
#include <vcl.h>
#pragma hdrstop
#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<math.h>
#include<fstream>
using namespace std;
//---------------------------------------------------------------------------
static const double a=0, k=1, a0=-1, a1=-3, a2=-9, a3=-2, a4=1, a5=0,
eps=pow(10,-5);
void hords(double,double);
void bisection(double,double);
void newton(double);

//---------------------------------------------------------------------------

double f(double x)
{
        return a5*(1+a)*pow(x,5)+a4*pow(x,4)+a3*pow(x,3)+a2*pow(x,2)+a1*x+k*a0;
}

//---------------------------------------------------------------------------

double ff(double x)
{
        return 5*a5*(1+5)*pow(x,4)+4*a4*pow(x,3)+3*a3*pow(x,2)+2*a2*x+a1;
}

//---------------------------------------------------------------------------

void bisection(double c1,double c2)
{
        ofstream fout("proba.txt",ios_base::out | ios_base::app);
        fout<<"\n----------------------------------Bisection method-------------------------------\n";
        fout<<"? \t     a \t\t    b  \t\t   f(a)  \t   f(b)  \t    f(c) \n\n";
        fout.setf(ios::fixed);
        fout.precision(6);
        double c0=(c1+c2)/2;
        int i=1;
        while(((fabs(f(c0)))>=eps)||(fabs(c1-c2)>=eps))
        {
                fout<<"?"<<i<<"\t "<<c1<<"\t "<<c2<<"\t "<<f(c1)<<"\t "<<f(c2)<<"\t "<<f(c0)<<"\n";
                c0=(c1+c2)/2;
                if(f(c1)*f(c0)<0) c2=c0; else c1=c0;
                i++;
        }
        fout<<"?"<<i<<"\t "<<c1<<"\t "<<c2<<"\t "<<f(c1)<<"\t "<<f(c2)<<"\t "<<f(c0)<<"\n";
        fout.close();
}

//---------------------------------------------------------------------------

void hords(double c1,double c2)
{
        ofstream fout("proba.txt",ios_base::out | ios_base::app);
        fout<<"\n-------------------------------------Hords method---------------------------------\n";
        fout<<"? \t     a \t\t    b  \t\t   f(a)  \t   f(b)  \t    f(c) \n\n";
        fout.setf(ios::fixed);
        fout.precision(6);
        double c00=0,c01=((c1*f(c2)-c2*f(c1))/(f(c2)-f(c1)));
        int i=1;
        while((fabs(f(c01))>=eps)||(fabs(c01-c00)>=eps))
        {
                fout<<"?"<<i<<"\t "<<c1<<"\t "<<c2<<"\t "<<f(c1)<<"\t "<<f(c2)<<"\t "<<f(c01)<<"\t"<<"\n";
                c00=c01;
                if (f(c1)*f(c01)>0) c1=((c1*f(c2)-c2*f(c1))/(f(c2)-f(c1))); else
                c2=((c1*f(c2)-c2*f(c1))/(f(c2)-f(c1)));
                c01=((c1*f(c2)-c2*f(c1))/(f(c2)-f(c1)));
                i++;
        }
        fout<<"?"<<i<<"\t "<<c1<<"\t "<<c2<<"\t "<<f(c1)<<"\t "<<f(c2)<<"\t "<<f(c01)<<"\n";
        fout.close();
}

//---------------------------------------------------------------------------

void newton(double c)
{
        ofstream fout("proba.txt",ios_base::out | ios_base::app);
        fout<<"\n---------------Newton method---------------\n";
        fout<<"? \t     x0 \t     f(x0)\n\n";
        fout.setf(ios::fixed);
        fout.precision(6);
        double c00=0,c01=c;
        int i=1;
        while((fabs(f(c01))>=eps)||(fabs(c01-c00)>=eps))
        {
                fout<<"?"<<i<<"\t "<<c01<<"\t "<<f(c01)<<"\n";
                c00=c01;
                c01=c00-(f(c00)/ff(c00));
                i++;
        }
        fout<<"?"<<i<<"\t "<<c01<<"\t "<<f(c01)<<"\n";
        fout.close();
}

//---------------------------------------------------------------------------
void main()
{
ofstream fout("proba.txt",ios_base::trunc);
fout.close();

bisection(3.5,5.0);
bisection(-5.0,-1.0);
hords(3.5,5.0);
hords(-5.0,-1.0);
newton(5.0);
newton(-5.0);

getch();
}
Прошу вашего совета. Что сделать? С++ только начал изучать, поэтому сам не могу придумать((. Спасибо заранее.
bobby2008 вне форума Ответить с цитированием
Старый 26.02.2010, 23:34   #2
bobby2008
Пользователь
 
Аватар для bobby2008
 
Регистрация: 13.04.2009
Сообщений: 37
По умолчанию

Продолжение предыдущего поста, то есть то, как пытался разделить я:
Нерабочие части:
moroz_lab_1.срр:
Код:
#include <fstream>
#include <cmath>
#include "moroz_lab_1.h"

static const double eps = pow(10,-5);

Polynom::Polynom()
{
	a=0, k=1, a0=-1, a1=-3, a2=-9, a3=-2, a4=1, a5=0,
}

//---------------------------------------------------------------------------

double Polynom::f(double x)
{
        return a5*(1+a)*pow(x,5)+a4*pow(x,4)+a3*pow(x,3)+a2*pow(x,2)+a1*x+k*a0;
}

//---------------------------------------------------------------------------

double Polynom::ff(double x)
{
        return 5*a5*(1+5)*pow(x,4)+4*a4*pow(x,3)+3*a3*pow(x,2)+2*a2*x+a1;
}

//---------------------------------------------------------------------------

void Polynom::bisection(double c1,double c2)
{
        ofstream fout("proba.txt",ios_base::out | ios_base::app);
        fout<<"\n----------------------------------Bisection method-------------------------------\n";
        fout<<"? \t     a \t\t    b  \t\t   f(a)  \t   f(b)  \t    f(c) \n\n";
        fout.setf(ios::fixed);
        fout.precision(6);
        double c0=(c1+c2)/2;
        int i=1;
        while(((fabs(f(c0)))>=eps)||(fabs(c1-c2)>=eps))
        {
                fout<<"?"<<i<<"\t "<<c1<<"\t "<<c2<<"\t "<<f(c1)<<"\t "<<f(c2)<<"\t "<<f(c0)<<"\n";
                c0=(c1+c2)/2;
                if(f(c1)*f(c0)<0) c2=c0; else c1=c0;
                i++;
        }
        fout<<"?"<<i<<"\t "<<c1<<"\t "<<c2<<"\t "<<f(c1)<<"\t "<<f(c2)<<"\t "<<f(c0)<<"\n";
        fout.close();
}

//---------------------------------------------------------------------------

void Polynom::hords(double c1,double c2)
{
        ofstream fout("proba.txt",ios_base::out | ios_base::app);
        fout<<"\n-------------------------------------Hords method---------------------------------\n";
        fout<<"? \t     a \t\t    b  \t\t   f(a)  \t   f(b)  \t    f(c) \n\n";
        fout.setf(ios::fixed);
        fout.precision(6);
        double c00=0,c01=((c1*f(c2)-c2*f(c1))/(f(c2)-f(c1)));
        int i=1;
        while((fabs(f(c01))>=eps)||(fabs(c01-c00)>=eps))
        {
                fout<<"?"<<i<<"\t "<<c1<<"\t "<<c2<<"\t "<<f(c1)<<"\t "<<f(c2)<<"\t "<<f(c01)<<"\t"<<"\n";
                c00=c01;
                if (f(c1)*f(c01)>0) c1=((c1*f(c2)-c2*f(c1))/(f(c2)-f(c1))); else
                c2=((c1*f(c2)-c2*f(c1))/(f(c2)-f(c1)));
                c01=((c1*f(c2)-c2*f(c1))/(f(c2)-f(c1)));
                i++;
        }
        fout<<"?"<<i<<"\t "<<c1<<"\t "<<c2<<"\t "<<f(c1)<<"\t "<<f(c2)<<"\t "<<f(c01)<<"\n";
        fout.close();
}

//---------------------------------------------------------------------------

void Polynom::newton(double c)
{
        ofstream fout("proba.txt",ios_base::out | ios_base::app);
        fout<<"\n---------------Newton method---------------\n";
        fout<<"? \t     x0 \t     f(x0)\n\n";
        fout.setf(ios::fixed);
        fout.precision(6);
        double c00=0,c01=c;
        int i=1;
        while((fabs(f(c01))>=eps)||(fabs(c01-c00)>=eps))
        {
                fout<<"?"<<i<<"\t "<<c01<<"\t "<<f(c01)<<"\n";
                c00=c01;
                c01=c00-(f(c00)/ff(c00));
                i++;
        }
        fout<<"?"<<i<<"\t "<<c01<<"\t "<<f(c01)<<"\n";
        fout.close();
}
moroz_lab_1.h:
Код:
#ifndef _MOROZ_LAB_1_H_
#define _MOROZ_LAB_1_H_
class Polynom{
private:
int a,k,a0,a1,a2,a3,a4,a5;
public:
Polynom();
void hords(double,double);
void bisection(double c1,double c2);
void newton(double c);
double f(double x);
double ff(double x);
};
#endif
main.срр:
Код:
#include <fstream>
#include <moroz_lab_1.h>
using namespace std;
int main()
{
	Polynom p5;
	p5.bisection();
	p5.chord();
	p5.Newton();
	return 0;
}
bobby2008 вне форума Ответить с цитированием
Старый 27.02.2010, 14:26   #3
KapeLLaN
Пользователь
 
Регистрация: 13.02.2008
Сообщений: 12
По умолчанию

http://edn.embarcadero.com/article/27343
Попробуй создать новый проект и перекомпилировать.
KapeLLaN вне форума Ответить с цитированием
Старый 28.02.2010, 15:01   #4
bobby2008
Пользователь
 
Аватар для bobby2008
 
Регистрация: 13.04.2009
Сообщений: 37
По умолчанию

Большое спасибо. Проблема была не только в этом) Видите, у меня маин вообще с другой лабы)
Всавил свою мэин+сделал то, что Вы написали и все работает. Спасибо большое еще раз.
bobby2008 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Linker error] undefined reference to `__cpu_features init jojahti Общие вопросы C/C++ 1 14.10.2009 13:14
[Linker Fatal Error] Fatal: Unable to open file 'CXGRIDVCLC6.LIB' Donn Общие вопросы C/C++ 0 16.04.2009 15:25
[Linker Fatal Error] Fatal: Expected a file name: oseni Общие вопросы C/C++ 4 02.01.2009 16:36
[Linker error] undefined reference to `function name` kermit Помощь студентам 4 11.06.2008 09:19