• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Nordic1962
  • Дата начала
N

Nordic1962

Помогите, плиз! :-(

Есть код:

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
 
N

Nordic1962

Слишком мало информации. Опиши детальней.


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

lazybiz

Не подключается графическая библиотека.
Необходимо сделать: Options -> Linker -> Libraries -> [X] Graphics library
 
L

lazybiz

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

Nordic1962

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


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

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

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


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

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

lazybiz

Options -> Linker -> Graphics library что стоит?
 
N

Nordic1962

А вот исходник - никак не линкуется зараза...

link removed
 
L

lazybiz

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

Nordic1962

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


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

lazybiz

Попробуй сделать вот такую проверку на ошибки инициализации:
C++:
int	errorcode;

...

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

Nordic1962

Сделал вот так:

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). В чем может быть заковыка?
 
N

Nordic1962

Может быть в делении на ноль? Ведь 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();
}
 
N

Nordic1962

А в этом коде вообще 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();
}
 
L

lazybiz

Вот так вот нельзя писать для чисел.
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

Изучи:
 
N

Nordic1962

Вот так вот нельзя писать для чисел.
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

Изучи:

Исправлено. Теперь непонятно почему дает ноль при сложении 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();
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!