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

Тема в разделе "Общие вопросы по С и С++", создана пользователем Nordic1962, 18 дек 2011.

  1. Nordic1962

    Nordic1962 New Member

    Репутация:
    0
    Регистрация:
    18 дек 2011
    Сообщения:
    4
    Симпатии:
    0
    Помогите, плиз! :-(

    Есть код:

    Код (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
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Слишком мало информации. Опиши детальней.
     
  3. Nordic1962

    Nordic1962 New Member

    Репутация:
    0
    Регистрация:
    18 дек 2011
    Сообщения:
    4
    Симпатии:
    0

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

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Не подключается графическая библиотека.
    Необходимо сделать: Options -> Linker -> Libraries -> [X] Graphics library
     
  5. Nordic1962

    Nordic1962 New Member

    Репутация:
    0
    Регистрация:
    18 дек 2011
    Сообщения:
    4
    Симпатии:
    0

    Нету такого. Если Linker --> Map file и Link buffer.....
     
  6. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Скинь сюда запакованный Turbo C++. А то скачать нигде не могу.
     
  7. Nordic1962

    Nordic1962 New Member

    Репутация:
    0
    Регистрация:
    18 дек 2011
    Сообщения:
    4
    Симпатии:
    0

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

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

    Добавлено:

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

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

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Options -> Linker -> Graphics library что стоит?
     
  9. Nordic1962

    Nordic1962 New Member

    Репутация:
    0
    Регистрация:
    18 дек 2011
    Сообщения:
    4
    Симпатии:
    0
  10. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Options -> Linker -> Graphics library что стоит?
     
  11. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Ну и че ты тут сказки рассказываешь!?
    В TCC из Tcc.part1.rar и Tcc.part2.rar есть опция Options -> Linker -> Libraries -> [X] Graphics library
     
  12. Nordic1962

    Nordic1962 New Member

    Репутация:
    0
    Регистрация:
    18 дек 2011
    Сообщения:
    4
    Симпатии:
    0

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

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Попробуй сделать вот такую проверку на ошибки инициализации:
    Код (C++):
    int errorcode;

    ...

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

    Nordic1962 New Member

    Репутация:
    0
    Регистрация:
    18 дек 2011
    Сообщения:
    4
    Симпатии:
    0
    Сделал вот так:

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

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Может быть в делении на ноль?
    Ведь ts у тебя не инициализирована, поэтому скорее всего равняется нулю.
     
  16. Nordic1962

    Nordic1962 New Member

    Репутация:
    0
    Регистрация:
    18 дек 2011
    Сообщения:
    4
    Симпатии:
    0
    Точно так. Инициализировал. Теперь другой трабл - все переменные := 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();
    }
     
  17. Nordic1962

    Nordic1962 New Member

    Репутация:
    0
    Регистрация:
    18 дек 2011
    Сообщения:
    4
    Симпатии:
    0
    А в этом коде вообще 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();
    }
     
  18. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Вот так вот нельзя писать для чисел.
    Код (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/
     
  19. Nordic1962

    Nordic1962 New Member

    Репутация:
    0
    Регистрация:
    18 дек 2011
    Сообщения:
    4
    Симпатии:
    0
    Исправлено. Теперь непонятно почему дает ноль при сложении 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();
    }
     
  20. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
     
Загрузка...

Поделиться этой страницей