test Erase: spravne volani 4x
test Erase: spravne volani - vicekrat nez je radku
test Load: chybne vstupni parametry
test Load: nacitani testovaciho pole
test Load: nacitani korektniho pole
test Print: rozmery, pole
test Print: kvalita tisku
test Print: test manipulace s pameti
test DU: vstupy / pocet parametru, otevreni souboru
CHECKER: CHYBA
------------------------------
Soubor xxxas.txt se nepodarilo otevrit
-------------------------------------------------------------------------------
Lokace chyby:
Zdrojovy soubor:radek: c:\du2main.c:23
Volani funkce: DU()
test DU: korektni volani
test DU: uniky pameti
test DU: vysledek
Pocet bodu 100 %
Kontrolni funkce konec
Konec programu.
CHECKER: KONTROLNI VYPIS
===============================================================================
VYPIS ALOKOVANE PAMETI
Celkovy pocet alokaci pameti v programu: 98
Celkovy pocet
uspesnych uvolneni pameti v programu: 98
Spickove mnozstvi
alokovane pameti pri behu programu: 2520 bytu.
Alokovano celkem
6132 bytu, uvolneno 6132 bytu
Vsechna dynamicka pamet programu
byla bez chyby uvolnena. :-)
-------------------------------------------------------------------------------
PREHLED OTEVRENYCH SOUBORU
Pocet otevrenych souboru: 11
Pocet
uzavrenych souboru: 11
NEUZAVRENYCH ZUSTAVA 0 SOUBORU
Vsechny soubory byly bez chyby uzavreny
DU - zadání v1.00
Napište program, který bude obsahovat funkce, které:
a) vytvoří a zruší dynamicky alokované dvourozměrné pole,
b) načte hodnoty do dynamicky alokovaného pole ze souboru,
c) vytiskne 2D pole,
d) provede jednoduchý úkon s 2D polem (vypustí první řádek)
Program napište tak, aby bylo možné měnit datový typ, které pole obsahuje (datový typ pole bude dán pomocí typedef DATA_TYPE nebo #define DATA_TYPE xxx, kde pro účely kontrol a ladění bude xxx typ double. Příkazy define/typedef se umísťují do hlavičkového souboru).
Přidání testovacích souborů:
Do aktuálního adresáře nakopírujte soubor check.h, kontrola.h a DU2_lib.lib a testovací soubory *.txt.
Do
(překladu) projektu je nutné vložit knihovnu DU2_lib.lib.
To je možné přímo vložením do sekce „Resource
Files“
projektu v solution
exploreru.
Druhou možností (složitější, ale u složitějších projektů vhodnější)
je do parametru
projektu properties/linker/input/additionalDependencies
přidat jméno knihovny, to je DU2_lib.lib.
Dále pokud by knihovny byly v jiných adresářích, je nutné tyto
adresáře nastavit v parametru projektu
properties/configurationProperties/vc++directories/LibraryDirectories.
Připojená
knihovna začne „fungovat“ (půjde bez chyb přilinkovat
k programu) až v okamžiku, kdy budete mít nadefinovány
všechny požadované funkce (prozatím prázdné). Nyní si tedy přečtěte
zadání a vytvořte základ budoucích funkcí – hlavičky funkcí
s prázdnými tělíčky.
a)
Funkce
EraseFirst
– uvolní (odalokuje) první řádek pole, ostatní posune (odebere
první řádek a následně na jeho místo přesune druhý, na místo druhého
třetí …, na „poslední“ se dá NULL (=přealokace
pole na kratší se neprovádí). V případě, že je první řádek
úspěšně uvolněn, vrací hodnotu nula. (Jinak) Při chybných vstupních
parametrech vrací hodnotu 1. Vyberte nejvhodnější prototyp funkce
(Funkce bude mít pouze parametry (=co nejméně parametrů), které
dostačují k požadované činnosti. Jak u rozměru, tak u „pole“
dat probíhá manipulace pouze s řádky, změny se musí projevit vně
funkce (= musí se změnit y rozměr matice i vně funkce)):
int
EraseFirst(DATA_TYPE **pole, int x, int y)
int
EraseFirst(DATA_TYPE **pole, int x)
int EraseFirst(DATA_TYPE
**pole, int y)
int EraseFirst(DATA_TYPE ***pole, int x, int y)
int
EraseFirst(DATA_TYPE ***pole, int x)
int EraseFirst(DATA_TYPE
***pole, int y)
int EraseFirst(DATA_TYPE **pole, int *x, int
*y)
int EraseFirst(DATA_TYPE **pole, int *x)
int
EraseFirst(DATA_TYPE **pole, int *y)