Matematické Fórum

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

#1 27. 02. 2012 16:58

doomed
Příspěvky: 51
Reputace:   
 

Nesrozumitelné zadání programu entab

Čau, jde o úlohu 5-11 vycházející z úlohy 1-21. Obě jsou z knihy The C programming language od K&R.

Mám napsáno tohle:
"Write a program entab that replaces strings of blanks by the minimum number of tabs and blanks to achieve the same spacing. When either  a  tab  or  a  single  blank  would  suffice  to  reach  a  tab  stop,  which  should  be  given preference?"

V tom nebyl celkem problém: kód

Pak mám ovšem zadání:
"Modify the program entab to accept a list of tab stops as arguments. Use the default tab settings if there are no arguments."

Tomu zadání prostě nerozumím. Chápu, že program má z příkazové řádky načíst případný seznam čísel, které představují zarážky. Nechápu ale, k jakému účelu mají tyto záražky v programu sloužit. Jak mám jednotlivé zarážky v tom programu použít?

Děkuji

Offline

 

#2 27. 02. 2012 23:02

qazasd
Zelenáč
Příspěvky: 11
Reputace:   
 

Re: Nesrozumitelné zadání programu entab

K programu entab:

"When either  a  tab  or  a  single  blank  would  suffice  to  reach  a  tab  stop,  which  should  be  given preference?"

... ja si osobne myslim, ze by se mela pouzit mezera ... zdrojovy kod ovsem pouzije TAB

Code:

qazasd@book:~/entab$ echo -n "aaaaaaa a" | ./a.out  | hexdump -C
00000000  61 61 61 61 61 61 61 09  61                       |aaaaaaa.a|

Ale zpet k dotazu.

Seznam zarazek se ma pouzit k urceni, kdy pouzit mezery a kdy tab. Pokud budu mit prvni zarazku na pozici 10 a text bude zacinat 10ti mezerami na vystupu staci jeden tab. V puvodni verzi by to byl jeden tab a 3 mezery.

Offline

 

#3 27. 02. 2012 23:30 — Editoval doomed (27. 02. 2012 23:30)

doomed
Příspěvky: 51
Reputace:   
 

Re: Nesrozumitelné zadání programu entab

↑ qazasd: Díky za odpověď. Nicméně stále mi to není úplně jasné. Znamená to, že zmíněné zarážky slouží k podobnému účelu, jako např. ve Wordu či Writeru tabulátory v nastavení odstavce? Protože pokud bych např. spustil entab s parametry "10 2 4", kterou ze zarážek se program bude, ve které chvíli, řídit? Jsem asi trošku natvrdlej :-)

Mimochodem, proč bys v tom případě, který uvádíš, použil mezeru místo znaku TAB?

Díky

Offline

 

#4 28. 02. 2012 00:27

qazasd
Zelenáč
Příspěvky: 11
Reputace:   
 

Re: Nesrozumitelné zadání programu entab

↑ doomed:

Rekl bych, ze bude potreba pocitat s absolutni pozici na radku a porovnavat ji s "nasledujici zarazkou".

Coz lze implementovat napr. pomoci pole zarazek a poineru na nasledujici zarazku.

int zarazky[] = {4,8,20,30,0};
int *zarazka = zarazky;
int pozice_na_radku;

if(pozice_na_radku > *zarazka) zarazka++;

... otazka je jak se ma program chovat pokud je na vstupu vic tabu nez pocet definovanych zarazek a neni tak jasne kde ma tedy nasledujici text zacinat.

To s tou mezerou jsem myslel za predpokladu, ze program ma slouzit jako jakysi "cistic textu" a odstranovat prebytecne mezery. Kdyz by pak byl pouzit na normalni psany text napr. "Americká Nevada jako první na světě povolila provoz robotických aut" ... byla by prvni mezera (a mozna i nektere dalsi) nahrazena tabulatorem, coz je nesmysl.

Samozrejme kdyby se program mel pouzivat opravdu takto, napr. k odstranovani mezer pred odsazenym textem, ascii tabulkach nebo seznamech bylo by podle me v mistech, kde lze pouzit jak tab tak mezeru vhodne pouzit mezeru pouze pokud nenasleduje nebo nepredchazelo dalsi volne misto.

Napr v "Americka nevada" by tak byla pouzita mezera, ale v

Code:

Americka         8
Ceska            10

by za Americka byl pouzit tab. Samozrejme se tak kod dost komplikuje a je otazka jestli jsou tyhle ficury, ktere lze asi vymyslet do aleluja vubec zapotrebi :)

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson