3. praktikum - Pointerimajandus

Allikas: Lambda
Süsteemprogrammeerimine keeles C

Praktikumid

Laborid

Selle praktikumi eesmärgiks on harjutada tööd pointeritega: dünaamiliste massiivide loomist ja funktsioonipointereid.

See tundub jube ja teil tekib soov teha seda kõike ümber adresseerides ja arvutades. Selline lähenemine on vale: kahemõõtmeline massiiv kahe malloc() väljakutsega on elementaarne C manööver ning selle vältimine tähendab, et mistahes programmi kirjutades tuleb hiljem ilge jama. Vaimustuge mõttest teha korrektne kahemõõtmeline massiiv dünaamilises mälus! Te arenete inimesena!

Ülesanne

  • Kirjutage programm, mis saab käsurealt ühe arvu ja loob selle põhjal mällu uue kahemõõtmelise massiivi. Hõiva selle jaoks mälu.
    • Kirjutage massiivi mingi omamõeldud sisu: näiteks korrutustabel vms.
    • Trükkige saadud tabel ekraanile (väga suured tabelid saab suunata faili, seega ei pea kujunduse pärast muretsema).
  • Kirjutage funktsioon apply(), mis rakendab igale etteantud massiivis olevale arvule etteantud funktsiooni ja salvestab tulemuse sinnasamasse.
void apply(int** arr, int arrx, int arry, int (*function)(int))
Kasutage funktsiooni loodud massiivi töötlemiseks.

Kasutamise näide:

apply(arr, 3, 4, foo);

Vihjeid

  • Funktsiooni main() argumentideks on üks täisarv ja üks kahemõõtmeline char-ide massiiv.
  • Püüdke kahemõõtmelise massiivi initsialiseerimine kirjutada oma peaga tühja faili uuesti. See võib olla eksamiülesanne.