Rozdil ve vysledku

M. Vůjtek vujtek at prfnw.upol.cz
Wed Sep 15 08:50:11 CEST 2004


Dobry den,

chtel bych se zeptat na jednu drobnost. Mam soubor data.txt s timto obsahem:
661260
658183
661160
662755
666620
668193
672169
673310
675622
676977
676206
675447
675533
677482
677895
677365
679449
679089
678564
677120
678591
677876
678751
676979
678289
678963
678556

(na konci je jeden prazdny radek). U neho jsem chtel vyhledat max a min
hodnotu. Zkusil jsem si napsat "makra na cteni", ale zjistil jsem, ze to
funguje jen obcas.

Nize je ukazka TeXovskeho zdrojaku, ve ktere jsou dve temer stejne definice,
lisi se jen jednim pouzitim \message{}. Kdyz se to prelozi, dostanu ruzne
hodnoty:
        max=679089, min=661160
        max=679449, min=658183
Ta posledni je samozrejme spravna. Muzete mi rici, proc nefunguje ta prvni,
resp. co s tim to \message udela?

Dekuji

M. Vujtek

\newcount\linos
\newcount\min
\newcount\max
{\catcode`\^^M=13
\gdef\lino#1^^M{
\edef\test{#1}\edef\dummy{}\let\next\lino\ifx\test\dummy\let\next\relax%
\else\ifnum\linos=0\global\min=#1\global\max=#1\fi\global\advance\linos1%
\count1=#1\ifnum\count1>\max\global\max=\count1\fi%
\ifnum\count1<\min\global\min=\count1\fi\fi\next}
\gdef\filo#1{\linos0\begingroup\catcode`\^^M=13
\everypar{\lino}
\input #1
\endgroup\global\advance\linos-1}
}

\filo{data.txt}
max=\the\max, min=\the\min

{\catcode`\^^M=13
\gdef\lino#1^^M{
\edef\test{#1}\edef\dummy{}\let\next\lino\ifx\test\dummy\let\next\relax%
\else\ifnum\linos=0\global\min=#1\global\max=#1\fi\global\advance\linos1%
\count1=#1\message{}\ifnum\count1>\max\global\max=\count1\fi%
\ifnum\count1<\min\global\min=\count1\fi\fi\next}
\gdef\filo#1{\linos0\begingroup\catcode`\^^M=13
\everypar{\lino}
\input #1
\endgroup\global\advance\linos-1}
}

\filo{data.txt}
max=\the\max, min=\the\min

\end



More information about the csTeX mailing list