Fizikus C labor

1. óra: ismerkedés a fejlesztőkörnyezettel2. óra: ciklusok3. óra: számelméleti feladatok
4. óra: számítás valós számokkal5. óra: sok adat beolvasása, tömbök6. óra: iteráció, könyvtári sztringkezelő függvények
7. óra: függvények és sztringek8. óra: cím szerinti és tömb paraméterek, struktúrák, dinamikus tömbök9. óra: rendezés, fájlkezelés, parancssori paraméterek
10. óra: állapotgép, szabványos I/O átirányítása11. óra: rekurzió, gyakorlás12. óra: láncolt listák, fák
13. óra: NHF beadás

Rajzoljunk a konzol ablakba Windowson

11. alkalom: rekurzió, ZH felkészülés

A megértésben segít: https://infoc.eet.bme.hu/ea07/#17

1. feladat

Írj rekurzív faktoriálisszámító függvényt!

2. feladat

Írj rekurzív függvényt, amely kiír egy pozitív egész számot, a számjegyeket hármasával csoportosítva. Pl. 12 345 678.

3. feladat

Írj rekurzív függvényt, amely kiírja a paraméterként kapott pozitív egész számot az ugyancsak paraméterként kapott számrendszerben (2-10)!

4. feladat

Értelmezd a területkitöltő algoritmust:

#include <stdio.h >

void kifest(char kep[20][32], int y, int x) {
    if (y < 0 || x < 0 || y >= 20 || x >= 31)
        return;
    if (kep[y][x] != ' ')
        return;
    kep[y][x] = '.';
    kifest(kep, y - 1, x);
    kifest(kep, y + 1, x);
    kifest(kep, y, x - 1);
    kifest(kep, y, x + 1);
}

int main(void) {
    char z4qqq[20][32] = {
        "                               ",
        "            xx   xx            ",
        "       xxxx x xxx x xxxx       ",
        "      xx  x x     x x  xx      ",
        "    xxx  xx x     x xx  xxx    ",
        "  xxx    x  x     x  x    xxx  ",
        "  x      x  x     x  x      x  ",
        " xx       xx       xx       xx ",
        " x                           x ",
        " x                           x ",
        " x                           x ",
        " x                           x ",
        " x                           x ",
        " xx    xx             xx    xx ",
        "  x   x  x xx     xx x  x   x  ",
        "  xxx  x x x x   x x x x  xxx  ",
        "    xx x xxx xx xx xxx x xx    ",
        "     xxx      x x      xxx     ",
        "              xxx              ",
        "                               "
    };
    kifest(z4qqq, 10, 10);
    int y;
    for (y = 0; y < 20; ++y)
        puts(z4qqq[y]);

    return 0;
}

5. feladat

6. feladat

7. feladat

8. feladat

Az órai feladatok mintamegoldása

1. feladat
int fakt(int i) {
    if (i < 2)
        return 1;
    return i*fakt(i - 1);
}

 

2. feladat
void csop(int n) {
    if (n > 1000) {
        csop(n / 1000);
        printf(" %03d", n % 1000);
    }
    else
        printf("%d", n);
}

 

3. feladat
void szrkiir(int n, int szr) {
    if (n / szr > 0)
        szrkiir(n / szr, szr);
    printf("%d", n % szr);
}

 

A többi feladat mintamegoldása
ZH feladatok mintamegoldása