Poprawa kodu c++

Przy kompilacji kodu c++ wyskakują błędy nie wiem co jest źle, prosze o pomoc:

(306,24):conversion may lose significant digits

(399,24):conversion may lose significant digits

(414,51):extra parameter is call to setcolor(int)

(430,22):conversion may lose significant digits

KOD:

/ *****************************************************************

******************************************************************

**********************PROGRAM - PRACA DYPLOMOWA******************

***************************Sieci Neuronowe**********************

****************************************************************** /


#include

#include

#include

#include

#include

#include

#include


/ *****************************************************************

****************zadeklarownie zmiennych globalnych**************

****************************************************************** /


int x,y,z; //informacje o polozeniu kursora myszy//

bool stan[4]; //informacje o stanie przycisków//

char znak; //zczytywanie znaku z klawiatury, zmienna sterujaca//


/ *****************************************************************

****************************FUNKCJE*****************************

******************************************************************

*********************wyswietla kursor myszy**********************

***************************************************************** /


void wyswietl_kursor()

{

  asm

     {

      mov ax,0001h; /*zmienna w zapisie szesnastkowym*/

      int 33h; /*przerwanie 33 obslugujace mysz*/

      }

 }

 / *****************************************************************

 **************************ukrywa kursor myszy*******************

 ***************************************************************** /


 void ukryj_kursor()

 {

  asm

     {

      mov ax,0002h;//adanie wartosci rejestrowi AX//

      int 33h;

     }

 }


 / *****************************************************************

 ***funkcja ustawiajajaca palete na kolejne poziomy szarosci*****

 ********************!tylko pierwszych 6 kolorow!************

 ************************pozostale sa bez zmian******************

 ****************************************************************** /

 void paleta_szarosc()

 {

 setrgbpalette(1,0,0,0);//ustaw czarny//

 setrgbpalette(2,15,15,15);

 setrgbpalette(3,25,25,25);

 setrgbpalette(4,35,35,35);

 setrgbpalette(5,45,45,45);

 setrgbpalette(6,63,63,63);//ustaw bialy//

 setbkcolor(4);

 }


/ ******************************************************************

************************Funkcja rysujaca cieniowana ramke********

************************jako wspolrzedne podajemy rogi ramki*****

******************************************************************* /

void ramka (int x1, int y1, int x2, int y2)

{

  setcolor(2);

  line(x1,y1,x2,y1);

  line (x2,y1,x2,y2);

  line (x2,y2,x1,y2);

  line(x1,y2,x1,y1);

  setcolor(5);

  line(x1-1,y1-1,x2-1,y1-1);

  line(x2-1,y1+1,x2-1,y2-1);

  line(x2-1, y2-1,x1-1,y2-1);

  line(x1-1,y2-1,x1-1,y1-1);

  }


/ ******************************************************************

**************Funkcja rysujaca cieniowany, wypukly klawisz*******

*************jako wspolrzedne podajemy rogi klawisza*************

******************************************************************* /

void klawisz_wycisniety(int x1, int y1, int x2, int y2)

{

   ukryj_kursor();

   setcolor(5);

   line(x1,y1,x2,y1);

   line(x1,y2,x1,y1);

   setcolor(2);

   line(x2,y2,x1,y2);

   line(x2,y1,x2,y2);

   wyswietl_kursor();

}


/ ******************************************************************

**********Funkcja rysujaca cieniowany, wklesly klawisz***********

**********jako wspolrzedne podajemy rogi klawisza****************

****************************************************************** /


void klawisz_wcisniety(int x1, int y1, int x2, int y2)

{

   ukryj_kursor();

   setcolor(2);

   line(x1,y1,x2,y1);

   line(x1,y2,x1,y1);

   setcolor(5);

   line(x2,y2,x1,y2);

   line(x2,y1,x2,y2);

   wyswietl_kursor();


}


/ ******************************************************************

*****************Procedura sprawdzajaca czy mysz jest************

******************************zainstalowana**********************

****************************************************************** /


void mysz()

{

 int a;

 asm

 {

      mov ax, 0000h

      int 33h

      mov a,ax /* z ax do a czy mysz jest zainstalowana 1 jezeli nie to 0*/

  }

  if (a==1)

  printf("Mysz wykryta...OK!");

  else {

        printf("Sorry! Nie masz zainstalowanej myszy!");

        exit;

        }

}

/ ***************************************************************** /

/ ************************Stan myszy***************************** /

/ ********************a - czy klawisz byl wcisniety************** /

/ ********************b - polorzenie X**************************** /

/ ********************c - plorzenie Y***************************** /

/ ***************************************************************** /

/ ***************************************************************** /


void stan_myszy(int *b, int *c, int *a)

{

int a1,b1,c1;

    asm {

         mov ax,0003h

         int 33h

         mov a1,bx /* polozenie w x*/

         mov b1,cx /*polozenie w osi y*/

         mov c1,dx /*wartosc klawisza myszy*/

    }

    *a=a1;

    *b=b1;

    *c=c1;

    }

/ ***************************************************************** /

/ *****Funkcja rysujaca wycieniowany klawisz,reagujacy na mysz*** /

/ ***********************jako wspolrzedne podajemy rogi********** /

/ ***************************************************************** /

void klawisz(int x1, int y1, int x2, int y2,bool *stan)

{

int x,y,z;

stan_myszy(&x,&y,&z);//zwraca wartosc myszy myszy//

if (*stan == false)//stan klawisza true wcisniety, false nie wcisniety//

   {

     if ((x>x1) && (xy1) && (y
          {

          klawisz_wycisniety(x1,y1,x2,y2);

          *stan=true;

          delay(300);

          };


     }

     else

     {

        if ((x>x1) && (xy1) && (y
        {

         klawisz_wcisniety(x1,y1,x2,y2);

         *stan=false;

         delay(300);

         };

     };

};

/ ****************************************************************** /

/ ************procedura czyszczaca nieregularny obszar ekranu***** /

/ ****************************************************************** /


void clear_obszar()

{

ukryj_kursor();

/ *************jasna nieregularna ramka***** /


setcolor(5);

line(116,16,116,221);

line(116,221,16,221);

line(16,221,16,446);

line(16,466,626,466);

line(626,466,626,56);

line(626,56,441,56);

line(441,56,441,16);

line(441,16,116,16);


/ ***************wymazanie wszystkie ze srodka**** /


setfillstyle(0,0);

floodfill(120,20,5);


/ *************cieniowana, nieregularna ramka*** /


setcolor(1);

line(115,15,115,220);

line(115,220,15,220);

line(15,220,15,465);

line(15,465,625,465);

line(625,465,625,55);

line(625,55,440,55);

line(440,55,440,15);

line(440,15,115,15);


setcolor(5);

line(116,16,116,221);

line(116,221,16,221);

line(16,221,16,466);

line(16,466,626,466);

line(626,466,626,56);

line(626,56,441,56);

line(441,56,441,16);

line(441,16,116,16);

wyswietl_kursor();

};


/ ********************************************************************** /

/ ***************************uproszczony schemat neuronu************** /

/ ********************************************************************* /

void schemat_n(int x, int y)

{

    setcolor(14);

    rectangle(x,y,x+50,y+80);

    setcolor(11);

    circle(x+25,y+25,20);

    setcolor(9);

    line(x,y+50,x+50,y+50);

    line(x,y+50,x+25,y+80);

    line(x+50,y+50,x+25,y+80);

}


/ ********************************************************************* /

/ ********************Schemat budowy sieci neuronow***************** /

/ ********************************************************************* /

void siec()

 {

  ukryj_kursor();

  setcolor(1);

  outtextxy(185,30,"SCHEMAT SIECI NEURONOWEJ");

  setcolor(2);

  outtextxy(120,60,"zastosowano konwencje ze schematu neuronu");

  outtextxy(250,100,"WEJSCIA");

  outtextxy(133,175, "warstwy");

  outtextxy(125,185,"wejsciowe");

  outtextxy(75,285,"wagi");

  line(225,110,225,145);


  schemat_n(200,150);

  schemat_n(300,150);

  schemat_n(150,250);

  schemat_n(250,250);

  schemat_n(350,250);

  schemat_n(250,350);


  setcolor(2);


  line(275,435,275,450);

  outtextxy(250,450,"WYJSCIE");


  outtextxy(450,275,"warstwa");

  outtextxy(455,285,"ukryta");


  outtextxy(350,375,"warstwa");

  outtextxy(340,385,"wyjsciowa");


  setcolor(2);


  line(175,250,225,230);

  line(275,250,225,230);

  line(375,250,225,230);


  line(175,250,325,230);

  line(275,250,325,230);

  line(375,250,325,230);


  line(275,350,175,330);

  line(275,350,275,330);

  line(275,350,375,330);


  wyswietl_kursor();

  delay(300);


  do

    {

     stan_myszy (&x,&y,&z);

     if (kbhit()) znak=getch(); /*czytanie klawisza*/

     if ((x>7) && (y>60) && (x<97) && (y<100) && (z==1)) znak=27;

     }

  while (znak!=27);


  clear_obszar();

  klawisz_wycisniety(7,60,97,100);

  delay(300);

  }


  / ******************************************************************* /

  / ***************Schemat budowy i opis dzialania neuronu********** /

  / ******************************************************************* /

  void neuron()

  {

  setcolor(1);

  outtextxy(120,30,"NEURON - BUDOWA I DZIALANIE");

  setcolor(2);

  outtextxy(120,60,"Schemat Neuronu zostal opracowany przez McCullocha i Pittsa");

  outtextxy(120,70," w 1943 roku i oparty zostal na budowie komorki nerwowej.");

  setcolor(14); //rysowanie schematu neuronu(zolty)//

  rectangle(200,200,410,320);


  setcolor(2);


  rectangle(220,220,240,300);

  rectangle(220,240,240,260);

  rectangle(220,260,240,280);


  //wagi polonczen

  line(180,230,215,230);

  line(180,250,215,250);

  line(180,270,215,270);

  line(180,290,215,290);


  //opisy wag polaczen

  outtextxy(163,228,"X1");

  outtextxy(163,248,"X2");

  outtextxy(163,268,"X3");

  outtextxy(163,288,"X4");

  outtextxy(140,300,"wejscia");


  outtextxy(150,180,"wagi polaczen");


  line(228,193,228,215);


  outtextxy(224,228,"W1");

  outtextxy(224,248,"W2");

  outtextxy(224,268,"W3");

  outtextxy(224,288,"W4");


  line(245,230,280,250);

  line(245,250,280,255);

  line(245,270,280,265);

  line(245,290,280,270);


  outtextxy(295,257,"SUMA"); //w kole//

  circle(310,260,20);


  outtextxy(338,251,"S");

  line(330,260,350,260);


  // **************trojkat** /

  line(360,245,360,275);

  line(360,245,390,260);

  line(360,275,390,260);

  outtextxy(360,257,"f(s)");


  line(370,248,380,190);

  outtextxy(280,180,"funkcja aktywacji neuronu");


  line(400,260,450,260);

  outtextxy(455,257,"x");


  outtextxy(435,300,"wyjscie");

  outtextxy(170,330,"scemat budowy pojedynczego neuronu");


  outtextxy(45,355,"Do wejsc doprowadzane sa sygnaly dochodzace z neuronow warstwy");

  outtextxy(30,365,"poprzedniej. Kazdy sygnal mnozony jest przez odpowiadajaca mu wartosc");

  outtextxy(30,375,"liczbowa znana waga. Wplywa ona na percepcje danego sygnalu wejsciowego");

  outtextxy(30,385,"i jego udzial w tworzeniu sygnalu wyjsciowego przez neuron");

  outtextxy(45,395,"Waga moze byc pobudzajaca (dodatnia) lub opozniajaca (ujemna), jezeli");

  outtextxy(30,405,"nie ma polaczenia miedzy neuronami to waga jest rowna zero. Zsumowane");

  outtextxy(30,415,"iloczyn sygnalow i wag stanowia argument funkcji aktywacji neuronu.");


  delay(300);

  znak=0;

  z=0;


  do


    {

     stan_myszy(&x,&y,&z);

     if (kbhit()) znak=getch(); //czytanie klawisza

     if ((x>7) && (y>10) && (x<97) && (y<50) && (z==1)) znak=27;

     }

  while (znak!=27);


  clear_obszar();

  klawisz_wycisniety(7,10,97,50);

  delay(300);

    }


/ ***********************************************************************

********************wyswietla informacje pomocy do programu***********

/ ********************************************************************** /

void pomoc()

{

setcolor(120,30,"POMOC - Program sieci Neuronowe");

setcolor(2);

outtextxy(120,60,"Program sieci neuronowe, jest interaktywna prezentacja");

outtextxy(120,70,"zagadnien zwiazanych z sieciami neuronowymi");

outtextxy(120,80,"Pozwala na zapoznanie sie z podstawami budowy neuronu");

outtextxy(120,90,"jak i caloscia sieci neuronowych.");

outtextxy(120,110,"Poszczegolne zagadnienia sa omawiane w sekcjach programu");

setcolor(1);

outtextxy(120,130,"SEKCJA I - NEURON ");

setcolor(1);

outtextxy(120,150,"SEKCJA II - SIECI ");


z=0;

do

  {

   stan_myszy(&x,&y,&z);

   if (kbhit()) znak=getch(); //czytanie klawisza//

if ((x>452) && (y>7) && (x<541) && (y<43) && (z==1)) znak=27;

   }

   while (znak!=27);

   clear_obszar();

   klawisz_wycisniety(452,7,451,43);

   delay(300);

   }

/ ********************************************************************* /

/ *************************PROGRAM GLOWNY**************************** /

/ ********************************************************************* /

 void main()

 {


 int gd,gm; //inicjalizacja zmiennych pomocniczych//


 mysz();

 gd=DETECT;

 initgraph(&gd,&gm,"c:\\bc5\\bgi\\"); //inicjalizacja trybu graficznego//

 wyswietl_kursor();

 paleta_szarosc();


 / *********************************************************************

 / ***************************rysowanie glownego okna*****************

 / ******************************************************************** /


 // ************cieniowana, nieregularna ramka******************* /


  setcolor(1);

  line(115,15,115,220);

  line(115,220,15,220);

  line(15,220,15,465);

  line(15,465,625,465);

  line(625,465,625,55);

  line(625,55,440,55);

  line(440,55,440,15);

  line(440,15,115,15);


  setcolor(5);


  line(116,16,116,221);

  line(116,221,16,221);

  line(16,221,16,466);

  line(16,466,626,466);

  line(626,56,441,56);

  line(626,56,441,56);

  line(441,56,441,16);

  line(441,16,116,16);


  // *********** klawisze z lewej strony


  klawisz_wycisniety(3,3,673,477);

  klawisz_wycisniety(5,5,100,205);

  klawisz_wycisniety(7,10,97,50);

  klawisz_wycisniety(7,60,97,100);

  klawisz_wycisniety(7,110,97,150);

  klawisz_wycisniety(7,160,97,200);


  // ****************klawisze sterujace POMOC i EXIT******************** /


  bool ster[2]; //zmienna lokalna informacje o stanie klawiszy POMOC i EXIT//


  klawisz_wcisniety(450,5,635,45);

  klawisz_wycisniety(452,7,541,43);

  klawisz_wycisniety(543,7,633,43);


  setcolor(1);


  outtextxy(457,22,"POMOC");

  outtextxy(575,22,"EXIT");

  outtextxy(215,19,"PRACA DYPLOMOWA");

  outtextxy(125,36,"PREZENTACJA BUDOWY SIECI NEURONOWYCH");


  ster[1]=false;


  outtextxy(28,28,"NEURON");

  outtextxy(32,78,"SIEC");


  / *********************************************************************

  / *********************petla glowna programu*************************

  ********************************************************************* /


  do

    {

    stan_myszy(&x,&y,&z);


  if ((x>452) && (y>7) && (x<541) && (y<43) && (z==1))

     {

     klawisz_wcisniety(452,7,541,43);

     delay(300);

     clear_obszar();

     pomoc();

     }

  if ((x>7) && (y>10) && (x<97) && (y<50) && (z==1))

    {

    stan[0]=true;

    klawisz_wcisniety(7,10,97,50);

    delay(300);


    clear_obszar();

    neuron();

    }

  if ((x>7) && (y>60) && (x<97) && (y<100) && (z==1))

     {

     stan[0]=true;

     klawisz_wcisniety(7,60,97,100);

     delay(300);

     clear_obszar();

     siec();

     }


klawisz(7,110,97,150,&stan[2]);

klawisz(7,160,97,200,&stan[3]);

klawisz(452,7,541,43,&ster[0]);

klawisz(543,7,633,43,&ster[1]);


    }


while (!(kbhit())&& (!ster[1]));


closegraph();

};


[/code]

w funkcji pomoc() masz:

setcolor(120,30,"POMOC - Program sieci Neuronowe");

wg mnie powinno być:

outtextxy(120,30,"POMOC - Program sieci Neuronowe");

lub:

setcolor(1);

outtextxy(120,30,"POMOC - Program sieci Neuronowe");

wciąż mam błędy:

(306,24):conversion may lose significant digits

(399,24):conversion may lose significant digits

(430,22):conversion may lose significant digits

masz

char znak;

.

.

.

znak=getch();

funkcja getch() zwraca int , czyli konwertuje int na char i daje ostrzeżenie że może źle przekonwertować. możesz zmienić na:

int znak;

dziekuje ale przy kompilacji występuje jeszcze jeden błąd:

Transfering to C:\Documents and Settings\Marcin Rażyński\Pulpit\Tasm32.exe…

could not locate:TASM32.EXE

Musisz mieć kompilator asemblera noszący nazwę TASM32(Turbo Assembler) na pulpicie.

a jakiego kompilatora używasz?

musisz mieć tasm32.exe bo masz wstawki asemblerowe

Jakby użył dobrego kompilatora(np. Visual C++, GCC, ICC) to by nie potrzebował kompilatora asemblera jako oddzielnego programu. Wstawki nie mają nic do rzeczy bo kod C++ z założenia ma być zmieniany na asm i kompilowany do kodu maszynowego.

Zmień kompilator, widać ten dobry nie jest.

A jaka wersja kompilatora jest w tej sytuacji poprawna ?

Najnowsza z tych co podałem, ew. dostosuj sobie aktualny.

wciąż przy kompilacji mam bład:

praca dyplomowa.asm(1066,1):operand types do not match

praca dyplomowa.asm(1170,1):operand types do not match

praca dyplomowa.asm(1172,1):operand types do not match

praca dyplomowa.asm(1174,1):operand types do not match

To już błąd kompilatora C++ lub kompilator asemblera jest nie ten co potrzeba(wersja się nie zgadza). Zmień kompilator.

to podaj link do jakiejś wersji ok.

przy kompilacji występują błędy:

error:unresolved external ‘_setrgbpalette’ referenced from module praca dyplomowa.cpp

error:unresolved external ‘_setbkcolor’ referenced from module praca dyplomowa.cpp

error:unresolved external ‘_line’ referenced from module praca dyplomowa.cpp

error:unresolved external '_delay’referenced from module praca dyplomowa.cpp

error:unresolved external '_setfillstyle’referenced from module praca dyplomowa.cpp

error:unresolved external '_floodfill’referenced from module praca dyplomowa.cpp

error:unresolved external '_rectangle’referenced from module praca dyplomowa.cpp

error:unresolved external '_circle’referenced from module praca dyplomowa.cpp

error:unresolved external '_outtextxy’referenced from module praca dyplomowa.cpp

error:unresolved external '_initgraph’referenced from module praca dyplomowa.cpp

error:unresolved external '_closegraph’referenced from module praca dyplomowa.cpp

Z nagłówków oraz użytych funkcji wynika że kod napisany pod rozszerzone conio w wydaniu Borlanda. Kompilator można ściągnąć darmowy ze strony producenta (z plikami nagłówkowymi oraz bibliotekami ale bez IDE).