• 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 »

ursus

no ako uz by mohli dat tie zadania, lebo nejako sa nam to krati :trestac:

9ty tyzden ppi
11ty ele 
12 fyz
13 asm  +druhe zadanie
So this router walks into the doctor's office...
- Doctor, it hurts when IP.

psicho

hej hej mozu kludne ich dat bo ja nemam cas ajtak ich robit :D  nemusia mat paniku :D
read my blog> www.codemazing.com <read my blog

radix

to je moc ked prvakom nechcu dat zadanie kvoli tebe :D

ursus

#253
caute, potrebujem trochu helpnut

cem upravit karola tak, aby to bolo ovladatelne sipkami, proste nieco na styl "on-key-pressed" event hladam;
guglil som, ludia zvykli radit getchar(), ale ten mi nepride velmi vhodny, kedze to caka na enter stale a to mi moc ako hra uz nepride kazdy svoj pohyb potvrdzovat entrom

any ideas ako sa to v C robi?
So this router walks into the doctor's office...
- Doctor, it hurts when IP.

vojto

Quote from: ursus on  31.03.2010, 01:13:40
caute, potrebujem trochu helpnut

cem upravit karola tak, aby to bolo ovladatelne sipkami, proste nieco na styl "on-key-pressed" event hladam;
guglil som, ludia zvykli radit getchar(), ale ten mi nepride velmi vhodny, kedze to caka na enter stale a to mi moc ako hra uz nepride kazdy svoj pohyb potvrdzovat entrom

any ideas ako sa to v C robi?

Da sa, urcite, sak tak funguju vsetky DOS hry :) Ale robit program pre prikazovy riadok, uhhh .. Uz predsa len je nejaky 2010 :) Ja skusim urobit normalne graficke rozhranie, ak sa mi podari ..

Ing. nemtom

moj uceny kolega psicho hovori ze fgetc(), skus si to nastudovat
brix will be shat

psicho

a ked to jede pod Linux tak este kukni fcie tcsetattr a ioctl
read my blog> www.codemazing.com <read my blog

sulo

Asi najlepšie bude použiť už známu knižnicu NCURSES. Tu je ukážka:

#include "curses.h"

int main() {
initscr(); // inicializacia ncurses
noecho(); // znaky z klavesnice sa nevypisuju na obrazovku
keypad(stdscr, TRUE); // budeme zachytavat aj specialne klavesy

int klaves = getch(); // zistenie kodu klavesu
printw("%d\n", klaves); // vypisanie kodu (miesto toho sa moze kod porovnavat cez switch a pod.)
refresh(); // prekreslenie obrazovky

getch(); // cakanie na stlacenie klavesu
endwin(); // ukoncenie prace s ncurses
return 0;
}


Na Linuxe sa to potom skompiluje aj s prepínačom "-lcurses". Pre Windows je potrebné stiahnuť pdcurses, skopírovať všetko do priečinku s projektom a pridať pdcurses.lib k parametrom linkera (podobne ako pri kompilácii programu s knižnicou Karla, ktorú sme používali na cvičeniach).

Jediná nevýhoda je v tom, že bežné funkcie ako printf() nebudú pracovať ako zvyčajne (je potom nutné volať refresh(), aby sa obsah vypísal).

Viac na http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/.

ursus

#258
thx a lot guise :beer1:

este mam jeden problemos, vo wine resp devcpp to fachci, ale pod unixom nvm ako nato, proste ako to cviko hovori ze maju byt dve subory, v jednej je main() a v nej volane dane funkcie ktore su definovane v druhom subore .c

nechapem ako to mam pripojit pri kompilacii, lebo inac mi pise ze nepozna tie funkcie ? nejako z toho druheho spravit .h a v prvom ho includnut?


//tak pokus a omyl  ;D gcc prve.c druhe.c a uz to fachci :ropebanana: (necham to tu pre inych)
// ye, mirek, to by ste tam mali asi napisat, lebo to ma len tak hned netrklo
So this router walks into the doctor's office...
- Doctor, it hurts when IP.

tommy-sv

Quote from: ursus on  02.04.2010, 06:17:33
//tak pokus a omyl  ;D gcc prve.c druhe.c a uz to fachci :ropebanana: (necham to tu pre inych)
// ye, mirek, to by ste tam mali asi napisat, lebo to ma len tak hned netrklo

ano tak ti pojde lebo linker najde symboly, ale pouzivanie hlavickovych suborov je dobry zvyk do buducna lebo:
1. iny developer vidi ze kod vyuziva externu kniznicu, zdroj
2. IDE tiez vie napr. ake argumenty su platne pre danu funkciu, proceduru
"Čím skôr zomrieš, tým dlhšie budeš mŕtvy."
"Radšej viac vypiť, ako menej zjesť."

freshmakerik

aj počítač je len človek..

cenki

Vie mi niekto poradit ako ulozit klavesu do premennej? Napr. klavesu sipka hore, alebo klavesu tab a potom porovnat pomocou if(premenna==klavesa)? (Nieco ako s pismenami: if(premenna=='a') )
/* vysie mam spraveny key_press ako poradil sulo  ale viem nahodit len pismena prip. cisla */

Agamemnon

google... pokiaľ si spomínam, na všetky klávesy boli nejaké makrá... ale už to bolo dávno...
All code is crap.

42

sulo

Priamo v hlavičkovom súbore curses.h sú na to konštanty (resp. makrá) ako napr. KEY_UP (pri každej klávese je dokonca komentár). Použitie je podobné, napríklad:

if (premenna == KEY_UP) ...

Niektoré makrá sú tam dosť abstraktné (skôr pre kompatibilitu), takže ak sa tam nejaký kláves nenachádza, jeho kód môžeme jednoducho zistiť a vypísať pomocou ukážkového programu. Pre prehľadnosť si potom na začiatku programu (alebo radšej vo vlastnom hlavičkovom súbore) definujeme vlastné makrá:

#define KEY_TAB 9

pooler

ako presne funguje refresh() ?
po prípade nejaký iný spôsob vyčistenia obrazovky, bez toho aby mi to blikalo

prečo mi nefunguje taketo niečo?:
    char retazec;
    scanf("%s", &retazec);
    printf("%s", retazec);

po prípade
    char retazec='text';
    printf("%s", retazec);

hm ?

vojto


tommy-sv

Quote from: vojto on  07.04.2010, 14:19:06
char -> znak
*char -> retazec
pozor na poziciu *, ide medzi typovu deklaraciu a nazov premennej

char* retazec = "lorem ipsum";
alebo
char *retazec = "lorem ipsum";
"Čím skôr zomrieš, tým dlhšie budeš mŕtvy."
"Radšej viac vypiť, ako menej zjesť."

vojto

no, to mas jedno kolko medzier tam natrepes.

ale dobrym zvykom je to davat hned k nazvu premennej - pretoze
to znaci ze premenna je smernik.

char *retazec

neucilasom

Cau nemate niekto hotove cviko od  6 po 8 ja mam 6 ku ale hlasi asi 3 chyby a daco aj 7, 8 som skusal ale to nemam komplet hodim sem spon 6 ku ked mate tak poprosim dajte to sem diky moc
a teraz 6ka:

include "stdio.h"
#define MAX_HEIGHT 20         //maximalna vyska sveta
#define MAX_WIDTH  20         //maximalna sirka svta


#define EMPTY 0  //PRVKY
#define WALL -1  //SVETA


int width,height;            // informacia o aktualnj vzske a sirke sveta

int world[MAX_HEIGHT][MAX_WIDTH];

void turnOn (){
    int i,j;
   
   
int world1[5][6] = {
       { 0, -1, -1, -1,  0, 0 },
       { 0, -1,  0,  0, -1, 0 },
       { 0, -1, -1, -1,  0, 0 },
       { 0, -1,  0,  0, -1, 0 },
       { 0, -1,  0,  0, -1, 0 }
   };
width = 6;
height = 5;

for(i=0;i<height;i++){
for(j=0;j<width;j++){
world[j] = newWorld[j];

      
      }
   }
}

void draw(){
int i,j;

for(i=0;i<height;i++){
for(j=0;j<width;j++){
switch(world[j])){
case EMPTY : putchar(' '); break;        //printf(" ")
case WALL  : putchar('#'); break;

}
}
putchar('\n');
}
}








ursus

#269
nechce sa mi to cele prezerat ale

for(i=0;i<height;i++){
for(j=0;j<width;j++){
world[ i ][j] = newWorld[ i ][j];

     
     }
  }
ale chujovo naplnujes to pole nie? ved je predsa dvojrozmerne
So this router walks into the doctor's office...
- Doctor, it hurts when IP.

sulo

#270
Quote from: neucilasom on  13.04.2010, 02:47:39
include "stdio.h" <--- chýba mriežka pri direktíve preprocesora
...
int world1[5][6] = ... <------ neskôr v zdrojáku je newWorld, tak si vyber...
...
switch(world[ i ][j])){  <--------- nadbytočná 2. ukončovacia zátvorka

sulo

Quote from: ursus on  13.04.2010, 03:27:16
nechce sa mi to cele prezerat ale

for(i=0;i<height;i++){
for(j=0;j<width;j++){
world[ i ][j] = newWorld[ i ][j];

     
     }
  }
ale chujovo naplnujes to pole nie? ved je predsa dvojrozmerne

Myslím, že tam pôvodne bolo [ i ][ j ], len sa to nahradilo BBCode kurzívou ;D

Safyia

Quote from: sulo on  13.04.2010, 08:06:32
Quote from: ursus on  13.04.2010, 03:27:16
nechce sa mi to cele prezerat ale

for(i=0;i<height;i++){
for(j=0;j<width;j++){
world[ i ][j] = newWorld[ i ][j];

     
     }
  }
ale chujovo naplnujes to pole nie? ved je predsa dvojrozmerne

Myslím, že tam pôvodne bolo [ i ][ j ], len sa to nahradilo BBCode kurzívou ;D
Ale i tak, nemozes dat world[ i ][j] = newWorld[ i ][j]; ked nemas nikde definovane world :D Co chces do toho newWrold prepisovat? podla toho pola hore by to malo byt world1[ i ][j] = newWorld[ i ][j];

neucilasom

Quote from: sulo on  13.04.2010, 07:59:29
Quote from: neucilasom on  13.04.2010, 02:47:39
include "stdio.h" <--- chýba mriežka pri direktíve preprocesora
...
int world1[5][6] = ... <------ neskôr v zdrojáku je newWorld, tak si vyber...
...
switch(world[ i ][j])){  <--------- nadbytočná 2. ukončovacia zátvorka

Diky a nemas to ako by to malo vyzerat po 8 cviku?

mirek

Quote from: neucilasom on  13.04.2010, 17:32:56

Diky a nemas to ako by to malo vyzerat po 8 cviku?


fiha - ocakaval som, kedy sa tu budu nachadzat prave taketo "instantne" riesenia (psycho - asi si nezarobis) podavane so vsetkym, co k tomu treba - teda - stiahnite si alebo opravte mi to, lebo som stiahol a nejde to. iba MAT riesenie ale na udelenie zapoctu zial nebude stacit :-( takze sa skuste rozpravat o problemoch, ako co vyriesit a nie o tom, od koho to mozem stiahnut.
So say we all!