3. hét

1. adag kis házi feladat megoldásai

  1.   printf("sin( 1/2 pi ) = %lf\n", sin(1/2 * PI));
    A pirossal jelölt néhány karakter a hibás. Ez így két egész konstans és köztük egy „/” jel, ami jelen esetben az ún. egészosztás operátora a C-ben. 1/2 értéke pedig 0. A jelölt karaktersor helyesen: 1.0/2.0. (Mindig javasolt így megadni a valós számokat, nehogy elbújjon egy ilyen hiba.) sinonehalfpi.c

  2. MAKRÓ = SZÖVEGHELYETTESÍTÉS. Azaz a makró kifejtése után ezt a kódot fogja a fordító fordítani:
      // now, we do not want to swap them:
      if (0) temp__yzVBZq = one; one = two; two = temp__yzVBZq;

    Ha helyesen tördelem a kifejtett kódot, bárki ránézére rájön, mi volt a bug:
      // now, we do not want to swap them:
      if (0)
        temp__yzVBZq = one;
      one = two;
      two = temp__yzVBZq;

    A tároló-változónak (temp__yzVBZq) azért adtam véletlenszerű nevet, nehogy a neve egybeessen valamelyik blokk vagy függvény egy lokális változójának nevével, mert akkor abban a blokkban vagy függvényben használva a makrót, a lokális változót fogja használni átmeneti tárolóként. Ilyen makrót csak akkor készítsünk, ha nyomós okunk van rá.

    macro4.c

  3. Mi a véleményetek erről? rondaprogram1.c

    Javítóként valami ilyesmit kapnék szívesen: rondaprogram2.c

  4. gcc raw2latex.c -Wall -lm -o raw2latex.x
    ./raw2latex.x < latexdoc-s.tex > latexdoc-s-2.tex
    pdflatex latexdoc-s-2
    pdflatex latexdoc-s-2
    latexdoc-s-2.pdf

    A geek-feladat megoldása:
    ./raw2latex.x < latexdoc-s.tex | pdflatex -no-parse-first-line /dev/stdin
    Annyi szépséghibája van a feladatnak, hogy 2x kell lefordítani egy LaTeX-fájlt ahhoz, hogy a kereszthivatkozások a megfelelő számozást kapják. (3x, ha BibTeX bibliográfia-adatbázist is használ a dokumentum.)