Warning
This page is located in archive. Go to the latest version of this course pages.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
courses:b3b36prg:hw:hw05 [2018/02/19 17:39]
faiglj [Odevzdání a hodnocení]
courses:b3b36prg:hw:hw05 [2018/03/28 19:50]
vanapet1
Line 423: Line 423:
 Dále obsahují zip soubory <fc #​ff0000>​binární spustitelné soubory referenčního řešení</​fc>​ ''​hw05-test''​ a ''​hw05b-test'',​ které lze použít pro ověření funkčnosti programu před jeho odevzdáním. Kromě přiložených testovacích vstupních souborů je doporučeno vytvořit si další testovací vstupy. Dále obsahují zip soubory <fc #​ff0000>​binární spustitelné soubory referenčního řešení</​fc>​ ''​hw05-test''​ a ''​hw05b-test'',​ které lze použít pro ověření funkčnosti programu před jeho odevzdáním. Kromě přiložených testovacích vstupních souborů je doporučeno vytvořit si další testovací vstupy.
  
 +
 +===== Kompilace a sestavení programu v US =====
 +/*Zadání úkolu pouze specifikuje rozhraní (funkce) pro načtení grafu, řešení úlohy hledání nejkratších cest, uložení nalezených cest a uvolnění paměti. Rozhraní je definováno v souboru ''​dijkstra.h''​ a kromě těchto funkcí lze definovat libovolné další funkce potřebné pro řešení úlohy. Podobně rozdělení na moduly může být řešeno různě. Jedinou podmínkou odevzdávaných souborů je, že žádný odevzdávaný zdrojový soubor neimplementuje hlavní funkci programu ''​main''​. Ovšem pro účely testování takový soubor potřebujete,​ jen jej nebudete odevzdávat.
 +*/
 +Váš program může být složený z více souborů. ((Doplněno 28. 3. 2018 na základě studentského dotazu.))
 +Odevzdané soubory překládany a linkovány předpisem ''​Makefile''​ pro GNU Make uvedeným níže. Skript je napsán tak, aby využíval automatické detekce zdrojouvých souborů .c, ale zároveň umožňoval specifikovat konkrétní pořadí linkovaných objektových souborů (.o). V případě, kdy je nutné explicitně uvést pořadí tak, aby při sestavení byly postupně zjišťovány jednotlivé funkce definované v ostatních modulech, je možné využít předpisu pořadí zdrojových souborů v souboru ''​modules.mk'',​ který je načítán před automatickou detekcí zdrojových souborů. ​
 +
 +<code make>
 +uniq = $(if $1,​$(firstword $1) $(call uniq,​$(filter-out $(firstword $1),$1)))
 +
 +-include modules.mk
 +
 +HW=hw05
 +TARGET=main
 +
 +CFLAGS+=-std=c99 -g -pedantic -Wall -Werror
 +LDFLAGS+=-lm
 + 
 +SRC:​=$(TARGET).c $(SRC)
 +SRC+=$(wildcard *.c)
 + 
 +OBJS:​=$(patsubst %.c,​%.o,​$(call uniq,​$(SRC)))
 + 
 +bin: $(TARGET)
 +
 +$(OBJS): %.o: %.c
 + $(CC) -c $< $(CFLAGS) $(CPPFLAGS) -o $@
 +
 +$(TARGET): $(OBJS)
 + $(CC) $(OBJS) $(LDFLAGS) -o $@ 
 +
 +clean:
 + $(RM) $(OBJS) $(TARGET)
 + $(RM) -f ${HW}-brute.zip
 +
 +.PHONY: clean zip
 +</​code>​
    
  
 ^  ^  Povinné zadání ​ ^  Volitelné zadání ​ ^  Bonusové zadání ​ ^ ^  ^  Povinné zadání ​ ^  Volitelné zadání ​ ^  Bonusové zadání ​ ^
 ^ Název v BRUTE |  HW05  ||  HW05B  | ^ Název v BRUTE |  HW05  ||  HW05B  |
-^ Odevzdávané soubory |  main.c ​ |||+^ Odevzdávané soubory |  main.c ​(+ *.h, *.c)  |||
 ^ Argumenty při spuštění |  žádné ​ ||| ^ Argumenty při spuštění |  žádné ​ |||
 ^ Kompilace pomocí |  clang -pedantic -Wall -Werror -std=c99 ​  ||| ^ Kompilace pomocí |  clang -pedantic -Wall -Werror -std=c99 ​  |||
 ^ Procvičované oblasti |  pole variabilní délky \\ indexování v poli  |  dynamická alokace paměti ​ |  dynamická alokace paměti \\ práce s pointry ​ |  ^ Procvičované oblasti |  pole variabilní délky \\ indexování v poli  |  dynamická alokace paměti ​ |  dynamická alokace paměti \\ práce s pointry ​ | 
  
courses/b3b36prg/hw/hw05.txt · Last modified: 2018/05/13 10:17 by faiglj