Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Zdravím, rád bych poprosil o pomoc/nasměrování s tímto úkolem. Jde o jazyk PL/0 - pomůcka pro výuku funkce překladačů. V základu rozumím tomu, jak překladač PL/0 funguje (co jeho jednotlivé instrukce znamenají), ale konkrétně s tímto úkolem si nevím rady.
Úkolem je:
Instrukce WRI 0 0 vypíše na obrazovku znak, jehož ASCII hodnota je na vrcholu zásobníku, a sníží ukazovátko vrcholu zásobníku o 1. Dejme tomu, že v zásobníku je uložen řetězec znaků (způsob uložení vymyslete). Napište posloupnost instrukcí, která libovolný takový řetězec vypíše na obrazovku.
Budu rád za každou radu, jak postupovat.
Děkuji.
Offline
Má myšlenka je následující:
Uložení řetězce znaků:
Uživatel je vyzván k zadání počtu znaků, které by si přál zadat. Poté běží cyklus (a<POČET_ZNAKŮ) a pro každý jeho průchod je uživatel vyzván k zadání ASCII hodnoty znaku.
Vypsání řetězce znaků:
Opět běží cyklus a pomocí instrukce WRI 0 0 vypisuje znak z vrcholu zásobníku. Problém je ovšem v tom, že řetězec je samozřejmě otočený (např. zadaná posloupnost znaků A,B,C se vypíše jako CBA).
Bohužel nedovedu vymyslet způsob, jak řetězec otočit. Budu vděčný za každou radu.
Děkuji.
INT 0 5
&ECHO Zadejte delku retezce:
REA 0 0
STO 0 3
LIT 0 1
STO 0 4
@loop_nacti LOD 0 4
LOD 0 3
OPR 0 13
JMC 0 @konec_nacti
&ECHO Zadejte ASCII kod retezce:
REA 0 0
LOD 0 4
LIT 0 1
OPR 0 2
STO 0 4
JMP 0 @loop_nacti
@konec_nacti LIT 0 1
STO 0 4
@loop_vypis LOD 0 4
LOD 0 3
OPR 0 13
JMC 0 @konec_vypis
WRI 0 0
LOD 0 4
LIT 0 1
OPR 0 2
STO 0 4
JMP 0 @loop_vypis
@konec_vypis RET 0 0Offline