Ошибка Компиляции В Turbo C

Nordic1962

New member
18.12.2011
4
0
#1
Помогите, плиз! :-(

Есть код:

C++:
#include <graphics.h>
#include <conio.h>
#include <dos.h>
#include <math.h>
#include <stdio.h>

void main()
{
int gmode=VGAHI, gdriver=DETECT;
int Xp=0, Yp=1;
float XX,YY,t,tp,ts,tk,k,h,kt;
initgraph(&gdriver, &gmode, "C:\\tc\\bgi\\");

t=0;
tk=0,25;
t=0,001;
h=ts/10;
kt=640/tk;

do
{
XX=(10+sin(100+2+3.1415*t));
if (XX > 50) XX = 50;
if (XX <-50) XX = -50;
Yp=(k+XX-YY)/ts;

setcolor(0);
line(t, 240-XX, 320+tp, 240+Xp);
setcolor(15);
line(t+kt, 240, tp+kt, 240-XX);
setcolor(14);
line(t+kt, 240, tp+kt, 240-XX);
tp=t;
Xp=XX;
Yp=YY;
YY=h;
YY=Yp+1;
}
while(t < tk);
getch();
}

Линковка проходит нормально, а при создании EXE-шника компилятор выдает ошибку по _line, _setcolor и _initegraph.

Мой е-мейл: tuladigit@yandex.ru
 

Nordic1962

New member
18.12.2011
4
0
#3
Слишком мало информации. Опиши детальней.

Да вроде нечего особенно описывать. Код должен выводить три графика разных цветов согласно формуле. При компиляции вроде не находит ошибок, а при линковке в исполнямый файл выдает Undefinite symbol _line; _setcolor; _initgraph.
 

lazybiz

Well-known member
03.11.2010
1 339
0
#4
Не подключается графическая библиотека.
Необходимо сделать: Options -> Linker -> Libraries -> [X] Graphics library
 

lazybiz

Well-known member
03.11.2010
1 339
0
#6
Скинь сюда запакованный Turbo C++. А то скачать нигде не могу.
 

Nordic1962

New member
18.12.2011
4
0
#7
Скинь сюда запакованный Turbo C++. А то скачать нигде не могу.

Вот он родимый...

Посмотреть вложение turboc.zip

Добавлено:
Скинь сюда запакованный Turbo C++. А то скачать нигде не могу.

А вот еще один, тож не все в нем....

Посмотреть вложение Tcc.part1.rar
Посмотреть вложение Tcc.part2.rar
 

Вложения

lazybiz

Well-known member
03.11.2010
1 339
0
#11
Ну и че ты тут сказки рассказываешь!?
В TCC из Tcc.part1.rar и Tcc.part2.rar есть опция Options -> Linker -> Libraries -> [X] Graphics library
 

Nordic1962

New member
18.12.2011
4
0
#12
Ну и че ты тут сказки рассказываешь!?
В TCC из Tcc.part1.rar и Tcc.part2.rar есть опция Options -> Linker -> Libraries -> [X] Graphics library

Ты прав.... ступил! В борланде точно есть, подключил - екзешник содался таки... но прога не выводит график, лишь темный экран и выход сразу. Хотя путь прописал: initgraph(&gdriver, &gmode, "C:\\BORLANDC\\bgi\\");
 

lazybiz

Well-known member
03.11.2010
1 339
0
#13
Попробуй сделать вот такую проверку на ошибки инициализации:
C++:
int	errorcode;

...

errorcode = graphresult();
if ( errorcode != grOk ) {
printf( "Graphics error: %s\n", grapherrormsg( errorcode ) );
printf( "Press any key to halt:" );
getch();
exit( 1 );
}
 

Nordic1962

New member
18.12.2011
4
0
#14
Сделал вот так:

C++:
#include <graphics.h>
#include <conio.h>
#include <dos.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>	

void main()

{
int	errorcode;
int gmode=VGAHI, gdriver=DETECT;
int Xp=0, Yp=1;
float XX,YY,t,tp,ts,tk,k,h,kt;
initgraph(&gdriver, &gmode, "C:\\borlandc\\bgi\\");

errorcode = graphresult();
if ( errorcode != grOk ) {
printf( "Graphics error: %s\n", grapherrormsg( errorcode ) );
printf( "Press any key to halt:" );
getch();

}
else {

printf( "Graphics OK!");
getch();
}

t=0;
tk=0,25;
t=0,001;
h=ts/10;
kt=640/tk;


do
{
XX=(10+sin(100+2+3.1415*t));
if (XX > 50) XX = 50;
if (XX <-50) XX = -50;
Yp=(k+XX-YY)/ts;

setcolor(0);
line(t, 240-XX, 320+tp, 240+Xp);

setcolor(15);
line(t+kt, 240, tp+kt, 240-XX);

setcolor(14);
line(t+kt, 240, tp+kt, 240-XX);

tp=t;
Xp=XX;
Yp=YY;
YY=h;
YY=Yp+1;
}
while(t < tk);

getch();
}

Графический режим вроде как в порядке, пробовал и gdriver=0; и gdriver=1; все нормально с режимом, но затем ненормальный выход из программы (abnormal program termination). В чем может быть заковыка?
 

Nordic1962

New member
18.12.2011
4
0
#16
Может быть в делении на ноль? Ведь ts у тебя не инициализирована, поэтому скорее всего равняется нулю.
Точно так. Инициализировал. Теперь другой трабл - все переменные := null почему-то выдает...


#include <graphics.h>
#include <conio.h>
#include <dos.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

void main()

{
int errorcode;
int gmode=VGAHI, gdriver=DETECT;
int Xp=0, Yp=1;
float XX,YY,t,tp,ts,tk,k,h,kt;
initgraph(&gdriver, &gmode, "C:\\borlandc\\bgi\\");

errorcode = graphresult();
if ( errorcode != grOk ) {
printf( "Graphics error: %s\n", grapherrormsg( errorcode ) );
printf( "Press any key to halt:" );
getch();

}
else {
printf( "\n");
printf( "Graphics OK!");
printf( "\n");
printf( "Press any key to halt:" );
getch();
}

tk=0.25;
t=0.001;
h=ts/10;
kt=640/tk;
ts=0.2;


do
{
XX=(10+sin(100+2+3.1415*t));
if (XX > 50) XX = 50;
if (XX <-50) XX = -50;
Yp=(k+XX-YY)/ts;

setcolor(0);
line(t, 240-XX, 320+tp, 240+Xp);

setcolor(15);
line(t+kt, 240, tp+kt, 240-XX);

setcolor(14);
line(t+kt, 240, tp+kt, 240-XX);

tp=t;
Xp=XX;
Yp=YY;
YY=h;
YY=Yp+1;
t=t+0.9;
printf( "\n");
printf( "XX = : %s\n",XX);
printf( "t = : %s\n",t );
printf( "Yp = : %s\n",Yp);
getch();
}
while(t < tk);

getch();
}
 

Nordic1962

New member
18.12.2011
4
0
#17
А в этом коде вообще Yp присвоилась какя-то загадочная переменная d......???

#include <graphics.h>
#include <conio.h>
#include <dos.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

void main()

{
int errorcode;
int gmode=VGAHI, gdriver=DETECT;
int Xp=0, Yp=1;
float XX,YY,t,tp,ts,tk,k,h,kt;
initgraph(&gdriver, &gmode, "C:\\borlandc\\bgi\\");

errorcode = graphresult();
if ( errorcode != grOk ) {
printf( "Graphics error: %s\n", grapherrormsg( errorcode ) );
printf( "Press any key to halt:" );
getch();

}
else {
printf( "\n");
printf( "Graphics OK!");
printf( "\n");
printf( "Press any key to halt:" );
getch();
}

tk=0.25;
t=0.001;
h=ts/10;
kt=640/tk;
ts=0.2;


printf( "\n");
printf( "XX = : %s\n",XX);
printf( "YY = : %s\n",YY);
printf( "t = : %s\n",t);
printf( "kt = : %s\n",kt);
printf( "tp = : %s\n",tp);
printf( "Xp = : %s\n",Xp);
printf( "Yp = : %s\n",Yp);
printf( "h = : %s\n",h);
printf( "\n");
getch();


do
{
XX=(10+sin(100+2+3.1415*t));
if (XX > 50) XX = 50;
if (XX <-50) XX = -50;
Yp=(k+XX-YY)/ts;

setcolor(0);
line(t, 240-XX, 320+tp, 240+Xp);

setcolor(15);
line(t+kt, 240, tp+kt, 240-XX);

setcolor(14);
line(t+kt, 240, tp+kt, 240-XX);

tp=t;
Xp=XX;
Yp=YY;
YY=h;
YY=Yp+1;
t=t+0.1;

printf( "\n");
printf( "XX = : %s\n",XX);
printf( "YY = : %s\n",YY);
printf( "t = : %s\n",t);
printf( "kt = : %s\n",kt);
printf( "tp = : %s\n",tp);
printf( "Xp = : %s\n",Xp);
printf( "Yp = : %s\n",Yp);
printf( "h = : %s\n",h);
printf( "\n");
getch();
}
while(t < tk);

getch();
}
 

lazybiz

Well-known member
03.11.2010
1 339
0
#18
Вот так вот нельзя писать для чисел.
C++:
printf( "XX = : %s\n",XX);
printf( "YY = : %s\n",YY);
printf( "t = : %s\n",t);
printf( "kt = : %s\n",kt);
printf( "tp = : %s\n",tp);
printf( "Xp = : %s\n",Xp);
printf( "Yp = : %s\n",Yp);
printf( "h = : %s\n",h);
%s - это для строк.

Для целых чисел - %d, для вещественных типа float - %f

Изучи: http://www.cplusplus.com/reference/clibrary/cstdio/printf/
 

Nordic1962

New member
18.12.2011
4
0
#19
Вот так вот нельзя писать для чисел.
C++:
printf( "XX = : %s\n",XX);
printf( "YY = : %s\n",YY);
printf( "t = : %s\n",t);
printf( "kt = : %s\n",kt);
printf( "tp = : %s\n",tp);
printf( "Xp = : %s\n",Xp);
printf( "Yp = : %s\n",Yp);
printf( "h = : %s\n",h);
%s - это для строк.

Для целых чисел - %d, для вещественных типа float - %f

Изучи: http://www.cplusplus.com/reference/clibrary/cstdio/printf/
Исправлено. Теперь непонятно почему дает ноль при сложении Yp=(k+XX-YY)/ts Yp=(10+10-0)/1 == 0 странно... ???


C++:
#include <graphics.h>
#include <conio.h>
#include <dos.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

void main()

{
int	errorcode;
int gmode=VGAHI, gdriver=DETECT;
int Xp=0, Yp=1;
float XX,YY,t,tp,ts,tk,k,h,kt;
initgraph(&gdriver, &gmode, "C:\\borlandc\\bgi\\");

errorcode = graphresult();
if ( errorcode != grOk ) {
printf( "Graphics error: %s\n", grapherrormsg( errorcode ) );
printf( "Press any key to halt:" );
getch();

}
else {
printf( "\n");
printf( "Graphics OK!");
printf( "\n");
printf( "Press any key to halt:" );
getch();
}

tk=0.25;
t=0.001;
h=ts/10;
kt=640/tk;
ts=1;
k=10.0;


printf( "\n");
printf( "tk = : %f\n",tk);
printf( "t = : %f\n",t);
printf( "h = : %f\n",h);
printf( "kt = : %f\n",kt);

printf( "\n");
printf( "tp = : %f\n",tp);
printf( "Xp = : %f\n",Xp);
printf( "\n");
getch();


do
{
XX=(10+sin(100+2+3.1415*t));

/*Proverka peremennix t and XX*/
printf( "\n");
printf( "t = : %f\n",t);
printf( "XX=10+sin(100+2+3.1415*t) = : %f\n",XX);

if (XX > 50) XX = 50;
if (XX <-50) XX = -50;

Yp=(k+XX-YY)/ts;


/*Proverka peremennix k,ts,Yp*/

printf( "k = : %f\n",k);
printf( "ts = : %f\n",ts);
printf( "YY = : %f\n",YY);
printf( "\n");
printf( "Yp=(k+XX-YY)/ts= : %f\n",Yp);



setcolor(0);
line(t, 240-XX, 320+tp, 240+Xp);

setcolor(15);
line(t+kt, 240, tp+kt, 240-XX);

setcolor(14);
line(t+kt, 240, tp+kt, 240-XX);

tp=t;
Xp=XX;
Yp=YY;
YY=h;
YY=Yp+1;
t=t+0.1;


getch();


}
while(t < tk);

getch();
}