Compare commits

...

7 Commits

Author SHA1 Message Date
e635ba216c Hotove 2021-01-11 12:31:56 +01:00
7426a4b1e5 skuska 2021-01-05 12:38:33 +01:00
a1119377bd a 2021-01-05 12:22:02 +01:00
7b95984b49 aa 2021-01-05 12:16:36 +01:00
4615f188ce a 2021-01-05 12:05:26 +01:00
06d579e8ac cv8 2020-11-26 13:13:05 +01:00
dde94effe2 cv8 2020-11-26 13:11:24 +01:00
4 changed files with 52 additions and 9 deletions

View File

@ -2,14 +2,17 @@ TUK
INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK PUK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK PUK
INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK PUK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK PUK
INK INK INK PUK INK INK INK PUK
INK INK INK INK INK INK INK INK INK INK INK PUK INK INK INK INK INK INK INK INK INK INK INK PUK 111
INK INK INK INK INK INK INK PUK
DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK PUK
INK INK INK INK INK INK INK INK INK INK INK INK INK PUK 110
BREK BREK
INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK PUK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK PUK
GLEK GLEK
DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK PUK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK PUK
INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK PUK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK INK PUK
DEK DEK DEK DEK DEK DEK DEK DEK DEK PUK 102 DEK DEK DEK DEK DEK DEK DEK DEK DEK PUK
INK INK INK PUK 105 INK INK INK PUK
INK INK INK INK INK INK INK INK INK PUK 114 INK INK INK INK INK INK INK INK INK PUK
DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK PUK 97 DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK DEK PUK
FUK FUK

View File

@ -25,8 +25,6 @@ void run_tukafuk(const char* code) {
char current_char; char current_char;
bool running = false; bool running = false;
size_t i; size_t i;
//bolo pozadovane zistit, kdd su skoky a teda som ich ulozil
//(tie adresy skokov)
for (i = 0; code[i] != 0; i++){ for (i = 0; code[i] != 0; i++){
current_char = code[i]; current_char = code[i];
size_t j; size_t j;

Binary file not shown.

View File

@ -1,2 +1,44 @@
Riesenie inspirovane https://gist.github.com/maxcountryman/1699708 álny stroj programovacieho jazyka TUKAFUK sa skladá z dvoch pások. Na jednej páske je napísaný program. Po programovej páske beží programová hlava PH a číta inštrukcie zľava doprava. Stroj má k dispozícii aj dátovú pásku s osobitnou hlavou DH.
Príklad počiatočného stavu virtuálneho stroja TUKAFUK:
PH
|
v
+-----+-----+-----+-----+
Program | TUK | INK | DEK | FUK |
+-----+-----+-----+-----+
DH
|
v
+---+---+---+---+
Data | 0 | 0 | 0 | 0 |
+---+---+---+---+
Skladá sa z nasledujúcich symbolov:
TUK začiatok programu
INK inkrementuj údaj na mieste kde ukazuje DH
DEK dekrementuj údaj na mieste kde ukazuje DH
BREK posuň hlavu DH do prava o jedno miesto
GLEK posuň hlavu DH do ľava o jedno miesto
PUK vypíš 1 byte z miesta kde ukazuje hlava DH
KUK načítaj 1 byte na miesto je ukazuje hlava DH
[ ak je hlava DH nula, posuň PH na zodpovedajúcu značku ]. Inak pokračj ďalej.
] ak hlava nie je nula, pokračuj s PH na zodpovedajúvej značke [. Inak pokračuj ďalej.
FUK koniec programu
iný znak: odeľuje príkazy alebo slúži ako komentár.
Vytvorte interpret jazyka TUKAFUK. Program by mal implementovať funkciu:
void run_tukafuk(const char* code);
Funkcia preloží vstupný program (zistí adresy skokov) a spustí ho. Preklad programu znamená identifikáciu inštrukcií a zistenie adries pre skok programovej hlavy PH. Pri implementácii zistenia adries PH v programe pre inštrukcie [ a ]. Funkcie getchar() a putchar() použite pre implementáciu inštrukcií PUK a KUK . Pre implementáciu dátovej pásky použite pole znakov, pre implementáciu programovej pásky použite pole spracovaných inštrukcií.
Vytvorte program v jazyku TUKAFUK na výpis celého Vášho mena.
Opis Funkčnosti :
Program načíta textový súbor do ktorého budú vložené jednotlivé inštrukcie začínajúci inštrukciou TUK a končiaci inštrukciou FUK. Teda program číta údaje z pásky ktoré sa ukladajú do globálnych premenných pričom tiež kontroluje, či je inštrukcia správne napísaná (namiesto INK INC, atd)a taktiež sa hneď posúva hlava, ktorá teda ide čítať ďalšiu inštrukciu
Po načítani nasleduje samotný preklad ktorý je vykonávaný za pomoci smerníkov a ascii tabuľky
Program bude fungovať ak :
1.Budú inštrukcie zadané do textového súboru kod.txt
2.Inštrukcie budú zapísané práve tak, že prvá inštrukcia bude TUK a posledná FUK
3.A po určitom počte ink/dek inśtrukcií bude následovať výpis za pomoci funkcie PUK