• Welcome to TUKE FÓRUM - Fórum pre študentov Technickej Univerzity v Košiciach.
 

ZADANIA Z predmetu PROGRAMOVANIE

Started by psicho, 29.01.2010, 17:40:30

« predchdzajce - alie »

Palike

ako mam pouzit ncurses?.. stiahol som nieco ale nejak to neviem dostat do toho devcpp .. neviete ako na to?..

elros

pre kniznice curses na dev c++ pouzi tote kniznice co sme pouzivali este jak sme s karlom hybali, co su na stranke s cvikami, tote pdcurses.lib a pdcurses.dll  a includni ich tak isto jak predtym sme includovali do projektu.

Palike

#402
Quote from: elros on  25.04.2010, 17:31:21
pre kniznice curses na dev c++ pouzi tote kniznice co sme pouzivali este jak sme s karlom hybali, co su na stranke s cvikami, tote pdcurses.lib a pdcurses.dll  a includni ich tak isto jak predtym sme includovali do projektu.

dakujem velmi pekne a to potom tam musim davat este to include ncurses ?.. ci to uz netreba ked som to pridal tak?..

a naco je ta strukturovana premenna myslim to typedef struct Robot  ... ja som to spravil bez toho a ide to... v com je vyhoda?..

take nieco je spravne?..

int frontIsBlocked()
{
    if (frontIsClear()) return 0;
    else return 1;
}

Vikinger

aj ja by som rad vedel ako sa robi s ncursess :D chcel by som to trošku farebne zvýrazniť :D

tommy-sv

Quote from: Palike on  25.04.2010, 17:40:45
a naco je ta strukturovana premenna myslim to typedef struct Robot  ... ja som to spravil bez toho a ide to... v com je vyhoda?..

Teraz to ide a rozdiel je mozno minimalny, ale predstav si ze by si mal vo svete viac robotov a robot by mal viac atributov ako len pozicia, orientacia a pocet beeprov. Napr. farbu.. alebo rozne schopnosti - ze vie aj cuvat :D vytvarat pre kazdeho robota premmenne vo forme robotCislo1Farba asi nie je naj riesenie ;) pre dvoch este mozno, ale co ked je ich pocet dynamicky?
Vyhod je mnoho. Ide snad hlavne o to ze mas organizovane premenne, mozes strukturu resp. smernik na nu odovzdavat medzi funkciami ako jeden parameter bez ohladu na to co struktura obsahuje a mas spominanu moznost vytvarat lubovolny (pamatou obmedzeny) pocet instancii struktury (robot1, robot2 ...).
"Čím skôr zomrieš, tým dlhšie budeš mŕtvy."
"Radšej viac vypiť, ako menej zjesť."

Palike

uz som prisiel na to ako to robit farebne.. ale v curses.h na konci funkcie musi byt getch() aby to slo... nwm preco.... neda sa to nejako odstranit.. lebo ked to mam v draw tak mi to vykresluje..ale pred kazdym dalsim vykreslenim to musim potvrdit enterom... ale ked tam to getch nedam tak to neide :-$

mirek

Quote from: Palike on  26.04.2010, 14:31:36
uz som prisiel na to ako to robit farebne.. ale v curses.h na konci funkcie musi byt getch() aby to slo... nwm preco.... neda sa to nejako odstranit.. lebo ked to mam v draw tak mi to vykresluje..ale pred kazdym dalsim vykreslenim to musim potvrdit enterom... ale ked tam to getch nedam tak to neide :-$

neviem, ako ti ten kod vyzera, ale pravdepodobne vykreslujes cez funkciu printw(). curses "scenu" uklada do buffra, ktory ked chces potom vykreslit/vypisat, musis zavolat funkciu refresh() (ak si dobre pamatam). takze getch() pravdepodobne vola ten refresh() sam.
So say we all!

Palike

#407
ahaa uz to ide, ja som tam to refresh nemal vobec...ale ked to tam mam tak mi to zobrazi asi na stotinu sekundy..aj ked tam mam sleep(1500); som z toho na nervy =/ ale aj tak dakujem velmi pekne :)  :beer1: 

mirek

Quote from: Palike on  26.04.2010, 15:15:50
ahaa uz to ide, ja som tam to refresh nemal vobec...ale ked to tam mam tak mi to zobrazi asi na stotinu sekundy..aj ked tam mam sleep(1500); som z toho na nervy =/ ale aj tak dakujem velmi pekne :)  :beer1: 
problem moze byt este v tom, ze kde mas ten sleep() umiestneny. mal by nasledovat hned za volanim funkcie refresh() - teda - hned, ako scenu vykreslis, tak si na tu chvilku oddychnes.
So say we all!

Palike

Quote from: mirek on  26.04.2010, 15:28:32
problem moze byt este v tom, ze kde mas ten sleep() umiestneny. mal by nasledovat hned za volanim funkcie refresh() - teda - hned, ako scenu vykreslis, tak si na tu chvilku oddychnes.

je to logicke no.. ja som to mal pred tym..asi preto ze sa akurat ucim na elektrotechniku a nejak nad tym nerozmyslam len som to tam hodil nech to je ... dakujem za trpezlivost :D  :embarassed: :embarassed:

Shwollo

#410
prečo mi furt chodí mimo sveta?


karelInWorld()
{
 int x = karel_x;
 int y = karel_y;      
 if (x <= width && y <= height && x>=0 && y >= 0) return 1;  // width=6 height=5
    else return 0;
}


     
frontIsClear()
{    
 int x = karel_x;
 int y = karel_y;
      if(karel_direction==0) x++;             // v
      else if(karel_direction==180)x--;       // ^
      else if(karel_direction==90) y++;       // >
      else if(karel_direction==270) y--;      // <
  if (karelInWorld() == 1);
     {
     if (world[x][y] == EMPTY && world[x][y] >= 0 ) return 1;
        else return 0;
     }
}


a prečo mi nejde táto podmienka? keď narazí na beeper tak si myslí, že je tam stena

if (world[x][y] == EMPTY && world[x][y] >= 0 ) return 1;
         else return 0;


celý zdroják

#define MAX_HEIGHT 20
#define MAX_WIDTH 20
#define WALL -1
#define EMPTY 0
int width,height;
int world[MAX_HEIGHT][MAX_WIDTH];
int karel_x;
int karel_y;
int karel_direction;
int karel_beepers = 20;


void turnOn(){
   

    karel_y = 3;
    karel_x = 3;
    width=6;
    height=5;

   
int newWorld[5][6]={
   { 0, -1, -1,  0,  0, 0 },
   { 0, -1, -1,  0,  0, 0 },
   { 0, -1, -1,  0,  0, 0 },
   { 0, -1, -1,  0,  0, 0 },
   { 0, -1, -1, -1, -1, 0 }
};

karel_direction = 90;

int x,y;
for(x=0; x<height; x++){
for(y=0; y<width; y++)
world[x][y]=newWorld[x][y];

}
}

void draw()
{
 system("cls");
 printf("pozicia: %d %d \n",karel_x, karel_y);  
 printf("orientacia: ");
 if (karel_direction == 0) printf("juh\n");
 if (karel_direction == 180) printf("sever\n");
 if (karel_direction == 270) printf("zapad\n");
 if (karel_direction == 90) printf("vychod\n");
 printf("pocet beeprov v batohu: %d\n", karel_beepers);
 printf("tu je %d beeprov", world[karel_x][karel_y]);
 printf(" \norientacia %d  \nclear?    %d\nblocked?  %d \n",  karel_direction, frontIsClear(), frontIsBlocked());

 printf("\n");
    int x,y;

    for(x=0; x<height; x++){
    for(y=0; y<width; y++){
                    if(karel_y==y && karel_x==x)
                                           {
                                           
                                           if (karel_direction==0) printf("v");
                                           else if(karel_direction==90) printf(">");
                                           else if(karel_direction==180) printf("^");
                                           else if(karel_direction==270) printf("<");
                                           }
                    else
                    {
                     if (world[x][y] == WALL)   printf("#");
                     if (world[x][y] == EMPTY)  printf(".");
                     if (world[x][y] > 0)      printf("*");
                    }
  }
  printf("\n");
 
}
sleep(1000);

}

void turnLeft()
{
     karel_direction += 90;
     karel_direction = karel_direction % 360;
     draw();
}

karelInWorld()
{
 int x = karel_x;
 int y = karel_y;      
 if (x <= width && y <= height && x>=0 && y >= 0) return 1;  // width=6 height=5
    else return 0;
}


     
frontIsClear()
{    
 int x = karel_x;
 int y = karel_y;
      if(karel_direction==0) x++;             // v
      else if(karel_direction==180)x--;       // ^
      else if(karel_direction==90) y++;       // >
      else if(karel_direction==270) y--;      // <
  if (karelInWorld() == 1);
     {
     if (world[x][y] == EMPTY && world[x][y] >= 0 ) return 1;
        else return 0;
     }
}
 
frontIsBlocked()
{    
return !frontIsClear();
}  

void movek()
{
    int x,y;
    if (frontIsClear() == 1)    
     {    
     if(karel_direction==0) karel_x++;       //v            
     if(karel_direction==180) karel_x--;     //^              
     if(karel_direction==90) karel_y++;      //>              
     if(karel_direction==270) karel_y--;     //<            
     draw();
     
     }
     else printf("\nchyba, je tu stena\n\n");
}

beepersInBag()
{
 if (karel_beepers >= 1) return 1;
    else return 0;
}

noBeepersInBag()
{
 return !beepersInBag();
}

beepersPresent()
{
 if (world[karel_y][karel_x] > 0) return 1;
   else return 0;
}

putBeeper()
{
if (world[karel_y][karel_x] >= 0)
   {
     world [karel_y][karel_x] += 1;          
     karel_beepers--;
   }
   else printf("nie su tu beepre\n");  
   draw();
}

pickBeeper()
{
if (world[karel_y][karel_x] >0)
   {
     world [karel_y][karel_x] -= 1;
     karel_beepers++;  
   }
   else printf("tu nie ju beper");        
   draw();
}





void testSensors()
{
       
 //  printf("suradnice: x:%d y:%d \norientacia %d  \nclear?    %c\nblocked?  %c \n", karel_x, karel_y, karel_direction, frontIsClear(), frontIsBlocked());
   printf("\nma beepre? %d\npocet beeprov v batohu: %d \nje tu beeper? %d\n", beepersInBag(), karel_beepers, beepersPresent());
   printf("tu je %d beeprov\n", world[karel_y][karel_x]);

}



diky  :D
nepíšte mi SS - radšej mi píšte mail. (tá obálka pod mojim avatarom :)))

totaluser

lebo vyhodnoti world
  • [y] == EMPTY ako false, kedze to neni 0 ale kladne cislo  teda dalej uz nic nevyhodnocuje

Safyia

To, aby ti nechodil mimo sveta daj do funkcie frontIsClear. ak spravis karelInWorld, musis to dat na zaciatok move, aj draw a tak, co je zbytocne. :)
Steny tak ako vravi totaluser... Ak mas stenu -1, tak porovnavaj radsej ci je [ x ] [ y ]<EMPTY, teda ti to pri beeproch nebude haprovat.

meroving

caute....potreboval by som pomoc..... neviem urobit zadanie z programovania...kto by mi to urobil??? aj za peniaze...

sulo

#414
Neviete, či komentáre k funkciám API majú byť po slovensky alebo po anglicky?

Vikinger

#415
Ahojte, potreboval by som funkciu na zistenie počtu Beeprov,  chcem aby to obišlo celu mapu, a zaroven ukladalo do premennej tu hodnotu ktora je najvacsia, cize maximalnu, a potom na konci aby sa vratilo na tu poziciu kde bolo najviac Beeprov. Ja som tak porozumel ulohe, ak by vedel dakto nejaky lahsi spôsob tak by mi mohol poradiť, je to uloha c. 25 :-/

http://stargate.cnl.tuke.sk/~mirek/pvjc/scenarios/zadania.html

Vedeli by ste mi nejak pomôct?
Za vaše nazory dakujem

ursus

do maxima prihraj prvy prvok pola a ptm cyklom prejdi cely svet a vzdy porovavaj aktualny prvok na ktorom stojis s maximom a ak je dany prvok vacsi ako maximum tak ho prirad do maxima
So this router walks into the doctor's office...
- Doctor, it hurts when IP.

ursus

Mirku, mam na teba dotaz

tie zadania, resp algoritmy, mam robit pre konkretne rozmery sveta zadane tym obrazkom alebo pre univerzalne pre rozmerovo hocijaky svet?
ak hej, tak mozem to aj nejako kontrolovat? kedze napr pri niektorych zadaniach postrebujes stred, cize idealne by bolo aby to malo neparny pocet prvkov v danom riadku/stplci

atd

dufam ze vies co myslim
So this router walks into the doctor's office...
- Doctor, it hurts when IP.

mirek

Quote from: ursus on  28.04.2010, 04:00:12
Mirku, mam na teba dotaz

tie zadania, resp algoritmy, mam robit pre konkretne rozmery sveta zadane tym obrazkom alebo pre univerzalne pre rozmerovo hocijaky svet?
ak hej, tak mozem to aj nejako kontrolovat? kedze napr pri niektorych zadaniach postrebujes stred, cize idealne by bolo aby to malo neparny pocet prvkov v danom riadku/stplci

atd

dufam ze vies co myslim

samozrejme, ze musi byt algoritmus univerzalny - pre lubovolnu mapu/svet, ktory vyhovuje zadanym podmienkam. v opacnom pripade by stacila len postupnost funkcii podobne, ako tomu bolo v prvom cviku (nieco, co sa dalo spravit na par riadkov, sme robili na strasnevelkypocet riadkov). takze ziadny hardcode.

no a niekedy by bolo idealne, aby bol svet neparny, ale budes sa musiet asi vysporiadat aj s tym, ze bude proste parny.
So say we all!

ursus

Quote from: mirek on  28.04.2010, 04:24:26
Quote from: ursus on  28.04.2010, 04:00:12
Mirku, mam na teba dotaz

tie zadania, resp algoritmy, mam robit pre konkretne rozmery sveta zadane tym obrazkom alebo pre univerzalne pre rozmerovo hocijaky svet?
ak hej, tak mozem to aj nejako kontrolovat? kedze napr pri niektorych zadaniach postrebujes stred, cize idealne by bolo aby to malo neparny pocet prvkov v danom riadku/stplci

atd

dufam ze vies co myslim

samozrejme, ze musi byt algoritmus univerzalny - pre lubovolnu mapu/svet, ktory vyhovuje zadanym podmienkam. v opacnom pripade by stacila len postupnost funkcii podobne, ako tomu bolo v prvom cviku (nieco, co sa dalo spravit na par riadkov, sme robili na strasnevelkypocet riadkov). takze ziadny hardcode.

no a niekedy by bolo idealne, aby bol svet neparny, ale budes sa musiet asi vysporiadat aj s tym, ze bude proste parny.

okej, fpohode
ja len k tej ulohe s paskalovym trojuholnikom (10.pyramida) by som to mal v pripade parneho sveta vypisovat ako
a) pokial sa mi prvky zmestia do roadku, tzn posledny bude prazdny
b) alebo pokial zaplnim secky riadky, tj odrezem prvky z konca riadku

thx
So this router walks into the doctor's office...
- Doctor, it hurts when IP.

mirek

Quote from: ursus on  28.04.2010, 05:15:20
Quote from: mirek on  28.04.2010, 04:24:26
Quote from: ursus on  28.04.2010, 04:00:12
Mirku, mam na teba dotaz

tie zadania, resp algoritmy, mam robit pre konkretne rozmery sveta zadane tym obrazkom alebo pre univerzalne pre rozmerovo hocijaky svet?
ak hej, tak mozem to aj nejako kontrolovat? kedze napr pri niektorych zadaniach postrebujes stred, cize idealne by bolo aby to malo neparny pocet prvkov v danom riadku/stplci

atd

dufam ze vies co myslim

samozrejme, ze musi byt algoritmus univerzalny - pre lubovolnu mapu/svet, ktory vyhovuje zadanym podmienkam. v opacnom pripade by stacila len postupnost funkcii podobne, ako tomu bolo v prvom cviku (nieco, co sa dalo spravit na par riadkov, sme robili na strasnevelkypocet riadkov). takze ziadny hardcode.

no a niekedy by bolo idealne, aby bol svet neparny, ale budes sa musiet asi vysporiadat aj s tym, ze bude proste parny.

okej, fpohode
ja len k tej ulohe s paskalovym trojuholnikom (10.pyramida) by som to mal v pripade parneho sveta vypisovat ako
a) pokial sa mi prvky zmestia do roadku, tzn posledny bude prazdny
b) alebo pokial zaplnim secky riadky, tj odrezem prvky z konca riadku

thx

ak to ma byt trojuholnik, musia tam byt vsetky prvky. ak budes orezavat, uz to bude stvoruholnik.
So say we all!

ursus

Quote from: mirek on  28.04.2010, 05:18:27
Quote from: ursus on  28.04.2010, 05:15:20
Quote from: mirek on  28.04.2010, 04:24:26
Quote from: ursus on  28.04.2010, 04:00:12
Mirku, mam na teba dotaz

tie zadania, resp algoritmy, mam robit pre konkretne rozmery sveta zadane tym obrazkom alebo pre univerzalne pre rozmerovo hocijaky svet?
ak hej, tak mozem to aj nejako kontrolovat? kedze napr pri niektorych zadaniach postrebujes stred, cize idealne by bolo aby to malo neparny pocet prvkov v danom riadku/stplci

atd

dufam ze vies co myslim

samozrejme, ze musi byt algoritmus univerzalny - pre lubovolnu mapu/svet, ktory vyhovuje zadanym podmienkam. v opacnom pripade by stacila len postupnost funkcii podobne, ako tomu bolo v prvom cviku (nieco, co sa dalo spravit na par riadkov, sme robili na strasnevelkypocet riadkov). takze ziadny hardcode.

no a niekedy by bolo idealne, aby bol svet neparny, ale budes sa musiet asi vysporiadat aj s tym, ze bude proste parny.

okej, fpohode
ja len k tej ulohe s paskalovym trojuholnikom (10.pyramida) by som to mal v pripade parneho sveta vypisovat ako
a) pokial sa mi prvky zmestia do roadku, tzn posledny bude prazdny
b) alebo pokial zaplnim secky riadky, tj odrezem prvky z konca riadku

thx

ak to ma byt trojuholnik, musia tam byt vsetky prvky. ak budes orezavat, uz to bude stvoruholnik.

well, je to pyramida  ;D , a tie nemali odzaciatku nutne trojuholnikove strany ;D
okej, beriem ze a) je spravne
So this router walks into the doctor's office...
- Doctor, it hurts when IP.

cenki

Zdravim, podla tutorialov a pod. som spichol Makefile z 11teho cvika:

CC   = gcc.exe
LIB  =  -L"D:/Programy/Dev-Cpp/lib" pdcurses.lib 
INC  =  -I"D:/Programy/Dev-Cpp/include"

library.o: library.c
gcc.exe -c library.c -o library.o $(INC)

main.o: main.c
gcc.exe -c main.c -o main.o $(INC)

all: main.o library.o
gcc.exe main.o library.o -o "program.exe" $(LIB)

clean: clean-custom
erease main.o library.o

Robene podla Devkoveho Makefilu a tutov na nete... takto to bolo asi myslene? A aky prikaz by mal byt aby mi zmazalo potom .o subory v poslednom riadku? Erease ani del neberie :/ respektive nemaze.

sulo

V tom prvom riadku máš premennú CC, ktorá určuje názov C kompilátora. Takže potom ju môžeš používať neskôr v texte, asi takto:

library.o: library.c
$(CC) -c library.c -o library.o $(INC)


Čo sa týka mazania, malo by byť použité rm. Na Windows síce štandardne nie je, ale je napr. súčasťou Dev-Cpp, ktoré už predpokladám máš nainštalované.

psicho

learn some :


# final product of this makefile
all: zadanie

# compilator
CCC = gcc

# compilator options
CFLAGS  = -O -Wall

LIBS = -L. -lkarel

# the zadanie itself
zadanie: main.o library.o
$(CCC) -o zadanie ./main.o ./library.o

main.o:   ./main.c
$(CCC) $(CFLAGS) -c ./main.c

library.o: ./library.c
$(CCC) $(CFLAGS) -c ./library.c

library: ./library.c ./library.h
$(CCC) $(CFLAGS) -c ./library.c
ar cq libkarel.a library.o

clean:
rm library.o
rm main.o

read my blog> www.codemazing.com <read my blog