V predchádzajúcom zadaní sme programovali hernú logiku pre hru Monopoly. Pracovali sme s databázou nehnuteľností a hracím plánom, ktorý bol napevno zadefinovaný. V tomto zadaní budeme načítavať nehnuteľnosti aj hrací plán z textových súborov. Týmto spôsobom vytvoríme možnosť dynamicky si prispôsobiť hrací plán, na ktorom bude vlastné rozmiestnenie vlastných nehnuteľností.
Budeme pracovať s 2 druhmi textových súborov:
Na hracom pláne sa nachádzajú 2 typy polí: nehnuteľnosti a špeciálne polia. Každá nehnuteľnosť má 3 atribúty: názov, cena a farba. Zoznam nehnuteľností, ktoré sa budú nachádzať rozmiestnené na hracom pláne bude uložený v textovom súbore, ktorý bude mať štruktúru popísanú nižšie. Údaje načítané zo súboru odporúčame uložiť do rovnakých dátových štruktúr, ktoré ste používali v zadaní 4.
Ak chceme načítať nehnuteľnosti zo súboru, musíme program spustiť v termináli nasledovným spôsobom:
./z5 -t properties_file
Prepínač
-t
má svoj povinný parameter
properties_file
, ktorý určuje cestu k danému textovému súboru.
Pri otváraní súboru si treba overiť, či daný súbor existuje. Urobíte tak pomocou overenia návratovej
hodnoty funkcie fopen,
ktorá slúži na otváranie súborov. Ak funkcia vráti NULL
, súbor sa
nepodarilo načítať a vtedy treba postupovať v zmysle chybovej situácie E1 opísanej v časti
Chybové situácie.
Textový súbor obsahuje databázu nehnuteľností. V každom testovacom súbore s nehnuteľnosťami môže byť iný počet nehnuteľností s rôznymi atribútmi. Súbor obsahuje postupnosť blokov. Blok je postupnosť riadkov, ktorá definuje viaceré (1 a viac) nehnuteľnosti rovnakej farby. Na obrázku 1 vidíme štruktúru bloku.
Pravidlá:
[color]
, kde color
predstavuje reťazec označujúci farbu. Znaky [
a ]
sa nevyskytnú v názve žiadnej nehnuteľnosti (na jednoznačné odlíšenie riadku s názvom farby od ostatných
riadkov).
property_colors
v súbore monopoly.c
.
// nazvy farieb nehnutelnosti
const char *property_colors[NUM_COLORS] = {
"Brown",
"Skyblue",
"Purple",
"Orange",
"Red",
"Yellow",
"Green",
"Blue"
};
\0
).
:
nebudú žiadne medzery.
[Yellow]
"CINEMA":1
"THEATER":1
[Purple]
"BAKERY":2
[Skyblue]
"STADIUM":2
"GOLF PARK":2
[Blue]
"AIRPORT":3
"BUS STATION":3
"SUBWAY":3
"PORT":3
[Red]
"CHURCH":4
"SCHOOL":4
[Brown]
"SHOPPING PARK":5
"CAFE":5
[Green]
"HOSPITAL":5
"VETERINARY":5
[Orange]
"NUCLEAR POWER PLANT":6
"CAR FACTORY":6
"SPACE STATION":6
Hrací plán môže obsahovať ľubovoľný počet polí. Každé pole je buď špeciálne alebo predstavuje nehnuteľnosť. Hrací plán bude uložený v textovom súbore, ktorý bude mať štruktúru popísanú nižšie. Údaje hracieho plánu načítané zo súboru odporúčame uložiť do rovnakých dátových štruktúr, ktoré ste používali v zadaní 4.
Nehnuteľnosti rozmiestnené na hracom pláne sa môžu načítať 2 spôsobmi:
properties
, ktoré je definované v súbore
monopoly.c
(rovnako ako v zadaní 4).
-t
)
Predvolená databáza nehnuteľností reprezentovaná poľom properties
, ktoré je
deklarované v súbore monopoly.h
a definované v súbore
monopoly.c
:
// zoznam nehnutelnosti na hracom plane
PROPERTY properties[NUM_PROPERTIES] = {
{.name = "FOOD TRUCK", .price = 1, .color = Brown},
{.name = "PIZZA RESTAURANT", .price = 1, .color = Brown},
{.name = "DOUGHNUT SHOP", .price = 1, .color = Skyblue},
{.name = "ICE CREAM SHOP", .price = 1, .color = Skyblue},
{.name = "MUSEUM", .price = 2, .color = Purple},
{.name = "LIBRARY", .price = 2, .color = Purple},
{.name = "THE PARK", .price = 2, .color = Orange},
{.name = "THE BEACH", .price = 2, .color = Orange},
{.name = "POST OFFICE", .price = 3, .color = Red},
{.name = "TRAIN STATION", .price = 3, .color = Red},
{.name = "COMMUNITY GARDEN", .price = 3, .color = Yellow},
{.name = "PET RESCUE", .price = 3, .color = Yellow},
{.name = "AQUARIUM", .price = 4, .color = Green},
{.name = "THE ZOO", .price = 4, .color = Green},
{.name = "WATER PARK", .price = 5, .color = Blue},
{.name = "AMUSEMENT PARK", .price = 5, .color = Blue}
};
-t
Ak chceme načítať hrací plán zo súboru a použiť predvolenú databázu nehnuteľností, musíme program spustiť v termináli nasledovným spôsobom:
./z5 -b gameboard_file
-t
Ak chceme načítať hrací plán zo súboru a použiť nehnuteľnosti načítané zo separátneho textového súboru, musíme program spustiť v termináli nasledovným spôsobom:
./z5 -b gameboard_file -t properties_file
V oboch prípadoch má prepínač
-b
svoj povinný parameter
gameboard_file
, ktorý určuje cestu k textovému súboru, kde je
uložený hrací plán.
Pri otváraní súboru si treba overiť, či daný súbor existuje. Urobíte tak pomocou overenia návratovej
hodnoty funkcie fopen,
ktorá slúži na otváranie súborov. Ak funkcia vráti NULL
, súbor sa
nepodarilo načítať a vtedy treba postupovať v zmysle chybovej situácie E1 opísanej v časti
Chybové situácie.
Textový súbor obsahuje:
V každom testovacom súbore s hracím plánom môže byť rôzny počet a rôzne rozmiestnenie polí.
Pravidlá:
space_types
v súbore monopoly.c
.
// nazvy typov poli na hracom plane
const char *space_types[NUM_SPACE_TYPES] = {
"PROPERTY",
"START",
"FREE PARKING",
"IN JAIL",
"GO TO JAIL",
"JAIL PASS"
};
Aké nehnuteľnosti sa rozmiestnia na hracom pláne?
Najlepší spôsob vysvetlenia je pomocou príkladov. V nasledovnom texte uvádzame príklady načítania
hracieho plánu podľa toho, či používateľ zadal okrem prepínača -b
aj
prepínač -t
.
Príklad 1
Načítanie hracieho plánu s predvolenými nehnuteľnosťami (t.j. bez prepínača -t
).
Do hracieho plánu sa budú postupne dosádzať nehnuteľnosti prečítané z predvolenej databázy v zachovanom
poradí.
Ak je na hracom pláne viac nehnuteľností ako v databáze, treba postupovať v zmysle chybovej situácie
E2
opísanej v časti Chybové situácie.
./z5 -b gameboard.txt
Textový súbor gameboard.txt
s hracím plánom, ktorý má 16 polí,
z toho 8 nehnuteľností:
16
START
PROPERTY
JAIL PASS
PROPERTY
IN JAIL
PROPERTY
JAIL PASS
PROPERTY
FREE PARKING
PROPERTY
JAIL PASS
PROPERTY
GO TO JAIL
PROPERTY
JAIL PASS
PROPERTY
Predvolená databáza nehnuteľností (pole properties
zo
súboru monopoly.c
), ktorá obsahuje 16 nehnuteľností.
// zoznam nehnutelnosti na hracom plane
PROPERTY properties[NUM_PROPERTIES] = {
{.name = "FOOD TRUCK", .price = 1, .color = Brown},
{.name = "PIZZA RESTAURANT", .price = 1, .color = Brown},
{.name = "DOUGHNUT SHOP", .price = 1, .color = Skyblue},
{.name = "ICE CREAM SHOP", .price = 1, .color = Skyblue},
{.name = "MUSEUM", .price = 2, .color = Purple},
{.name = "LIBRARY", .price = 2, .color = Purple},
{.name = "THE PARK", .price = 2, .color = Orange},
{.name = "THE BEACH", .price = 2, .color = Orange},
{.name = "POST OFFICE", .price = 3, .color = Red},
{.name = "TRAIN STATION", .price = 3, .color = Red},
{.name = "COMMUNITY GARDEN", .price = 3, .color = Yellow},
{.name = "PET RESCUE", .price = 3, .color = Yellow},
{.name = "AQUARIUM", .price = 4, .color = Green},
{.name = "THE ZOO", .price = 4, .color = Green},
{.name = "WATER PARK", .price = 5, .color = Blue},
{.name = "AMUSEMENT PARK", .price = 5, .color = Blue}
};
Po načítaní bude hrací plán obsahovať polia v nasledovnom poradí:
Príklad 2
Načítanie hracieho plánu s nehnuteľnosťami, ktoré sú načítané zo separátneho textového súboru
(t.j. spustenie programu aj s prepínačom -t properties_file
).
Do hracieho plánu sa budú postupne dosádzať nehnuteľnosti prečítané z dodaného textového súboru, ktorý je
daný
parametrom properties_file
.
Ak je na hracom pláne viac nehnuteľností ako v textovom súbore s nehnuteľnosťami, treba postupovať v
zmysle chybovej situácie E2 opísanej v časti Chybové situácie.
./z5 -b gameboard.txt -t properties.txt
Textový súbor gameboard.txt
s hracím plánom, ktorý má 22 polí,
z toho 14 nehnuteľností:
22
START
PROPERTY
JAIL PASS
PROPERTY
PROPERTY
PROPERTY
PROPERTY
IN JAIL
PROPERTY
JAIL PASS
PROPERTY
FREE PARKING
PROPERTY
PROPERTY
JAIL PASS
PROPERTY
PROPERTY
PROPERTY
GO TO JAIL
PROPERTY
JAIL PASS
PROPERTY
Databáza nehnuteľností uložená v súbore properties.txt
, ktorá
obsahuje 18 nehnuteľností.
[Yellow]
"CINEMA":1
"THEATER":1
[Purple]
"BAKERY":2
[Skyblue]
"STADIUM":2
"GOLF PARK":2
[Blue]
"AIRPORT":3
"BUS STATION":3
"SUBWAY":3
"PORT":3
[Red]
"CHURCH":4
"SCHOOL":4
[Brown]
"SHOPPING PARK":5
"CAFE":5
[Green]
"HOSPITAL":5
"VETERINARY":5
[Orange]
"NUCLEAR POWER PLANT":6
"CAR FACTORY":6
"SPACE STATION":6
Po načítaní bude hrací plán obsahovať polia v nasledovnom poradí:
Poznámky:
Ak nie sú zadané žiadne prepínače, neuskutoční sa žiadny výpis. V prípade zadania prepínačov sa výpisy riadia nasledovnými pravidlami.
Aktivuje sa len v prípade, že bol zadaný prepínač -t
bez prepínača
-b
. Vypíše sa zoznam všetkých načítaných nehnuteľností, ktoré boli uložené
v príslušnom textovom súbore. Každý vypísaný riadok predstavuje 1 nehnuteľnosť.
Príklad
Majme nasledovný textový súbor properties.txt
s nehnuteľnosťami:
[Yellow]
"CINEMA":1
"THEATER":1
[Purple]
"BAKERY":2
[Skyblue]
"STADIUM":2
"GOLF PARK":2
[Blue]
"BUS STATION":3
[Red]
"SCHOOL":4
[Brown]
"SHOPPING PARK":5
[Green]
"HOSPITAL":5
[Orange]
"NUCLEAR POWER PLANT":6
"CAR FACTORY":6
"SPACE STATION":6
Spustenie programu:
./z5 -t properties.txt
Výpis načítaných nehnuteľností:
CINEMA 1 Yellow
THEATER 1 Yellow
BAKERY 2 Purple
STADIUM 2 Skyblue
GOLF PARK 2 Skyblue
BUS STATION 3 Blue
SCHOOL 4 Red
SHOPPING PARK 5 Brown
HOSPITAL 5 Green
NUCLEAR POWER PLANT 6 Orange
CAR FACTORY 6 Orange
SPACE STATION 6 Orange
Každý riadok výpisu musí spĺňať formát, ktorý je uvedený na obrázku 4.
Aktivuje sa len v prípade, že bol zadaný prepínač -b
(samostatne
alebo spolu s prepínačom -t
).
Vypíše sa hrací plán, ktorý bol zadefinovaný v príslušnom textovom súbore.
Každý vypísaný riadok predstavuje 1 pole na hracom pláne.
Príklad 1
Majme nasledovný textový súbor gameboard.txt
s hracím plánom:
20
START
PROPERTY
PROPERTY
PROPERTY
JAIL PASS
PROPERTY
IN JAIL
PROPERTY
JAIL PASS
PROPERTY
PROPERTY
FREE PARKING
PROPERTY
JAIL PASS
PROPERTY
GO TO JAIL
PROPERTY
JAIL PASS
PROPERTY
PROPERTY
Spustenie programu:
./z5 -b gameboard.txt
Výpis načítaného hracieho plánu (použili sa nehnuteľnosti s predvolenej databázy):
1. START
2. FOOD TRUCK 1 Brown
3. PIZZA RESTAURANT 1 Brown
4. DOUGHNUT SHOP 1 Skyblue
5. JAIL PASS
6. ICE CREAM SHOP 1 Skyblue
7. IN JAIL
8. MUSEUM 2 Purple
9. JAIL PASS
10. LIBRARY 2 Purple
11. THE PARK 2 Orange
12. FREE PARKING
13. THE BEACH 2 Orange
14. JAIL PASS
15. POST OFFICE 3 Red
16. GO TO JAIL
17. TRAIN STATION 3 Red
18. JAIL PASS
19. COMMUNITY GARDEN 3 Yellow
20. PET RESCUE 3 Yellow
Príklad 2
Majme nasledovný textový súbor gameboard.txt
s hracím plánom a textový
súbor properties.txt
s nehnuteľnosťami.
gameboard.txt
16
START
PROPERTY
PROPERTY
PROPERTY
IN JAIL
PROPERTY
JAIL PASS
PROPERTY
PROPERTY
FREE PARKING
PROPERTY
GO TO JAIL
PROPERTY
PROPERTY
PROPERTY
PROPERTY
properties.txt
[Yellow]
"CINEMA":1
"THEATER":1
[Purple]
"BAKERY":2
[Skyblue]
"STADIUM":2
"GOLF PARK":2
[Blue]
"BUS STATION":3
[Red]
"SCHOOL":4
[Brown]
"SHOPPING PARK":5
[Green]
"HOSPITAL":5
[Orange]
"NUCLEAR POWER PLANT":6
"CAR FACTORY":6
"SPACE STATION":6
Spustenie programu:
./z5 -b gameboard.txt -t properties.txt
Výpis načítaného hracieho plánu:
1. START
2. CINEMA 1 Yellow
3. THEATER 1 Yellow
4. BAKERY 2 Purple
5. IN JAIL
6. STADIUM 2 Skyblue
7. JAIL PASS
8. GOLF PARK 2 Skyblue
9. BUS STATION 3 Blue
10. FREE PARKING
11. SCHOOL 4 Red
12. GO TO JAIL
13. SHOPPING PARK 5 Brown
14. HOSPITAL 5 Green
15. NUCLEAR POWER PLANT 6 Orange
16. CAR FACTORY 6 Orange
Každý riadok výpisu musí spĺňať formát, ktorý je uvedený na obrázku 5.
Počas behu programu môžu nastať 2 chybové situácie, ktoré sa týkajú textových súborov.
Táto chyba nastane ak sa zadaný textový súbor nedá otvoriť, t.j. funkcia fopen
vráti NULL
.
Táto situácia môže vzniknúť pri oboch prepínačoch (-b
aj -t
).
Po odhalení tejto chyby program vypíše reťazec E1
a skončí (iné výpisy sa neuskutočnia).
Príklad
Majme neplatnú cestu k súboru s nehnuteľnosťami:C:/Users/invalid_path/file.txt
./z5 -t C:/Users/invalid_path/file.txt
Výpis programu:
E1
Jedná sa o chybu počas načítavania hracieho plánu. Nastane vtedy, keď hrací plán obsahuje viac nehnuteľností
ako je možné načítať z databázy nehnuteľností (textový súbor alebo predvolená databáza).
Po odhalení tejto chyby program vypíše reťazec E2
a skončí (iné výpisy sa neuskutočnia).
Príklad
Majme nasledovné textové súbory:
gameboard.txt
11
START
PROPERTY
IN JAIL
PROPERTY
JAIL PASS
PROPERTY
PROPERTY
GO TO JAIL
PROPERTY
PROPERTY
PROPERTY
Poznámka: hrací plán obsahuje 7 nehnuteľností.
properties.txt
[Yellow]
"CINEMA":1
"THEATER":1
[Purple]
"BAKERY":2
Poznámka: databáza obsahuje 3 nehnuteľnosti.
Výpis programu:
E2
Činnosť aplikácie sa dá vyjadriť pomocou nasledovného diagramu.
Projekt má nasledovnú štruktúru:
├── CMakeLists.txt
├── include/
│ └── monopoly.h
└── src/
├── monopoly.c
└── z5.c
CMakeLists.txt
- súbor s konfiguráciou projektu
cmake_minimum_required(VERSION 3.24)
project(z5 C)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -lm")
add_executable(z5 src/z5.c src/monopoly.c)
target_include_directories(z5 PRIVATE ${PROJECT_SOURCE_DIR}/include)
monopoly.h
- ten istý súbor ako v zadaní 4
Poznámky:
space_types
obsahuje názvy typov polí na hracom pláneproperty_colors
obsahuje názvy farieb nehnuteľnostíproperties
predstavuje predvolenú databázu nehnuteľnostígame_board
je tu len z historických dôvodov (predstavovalo fixný hrací plán v zadaní 4), teraz sa však hrací plán
načítava zo súboruPLAYER
je tu len z historických dôvodov (reprezentovala hráčov v zadaní 4), teraz hráčov nepotrebujeme#ifndef Z5_MONOPOLY_H
#define Z5_MONOPOLY_H
#include <stdio.h>
// Makra
#define MAX_NAME 100 // max. dlzka nazvu (bez znaku '\0')
#define NUM_PROPERTIES 16 // pocet nehnutelnosti na hracom plane
#define NUM_SPACES 24 // pocet poli na hracom plane
#define MAX_PLAYERS 4 // max. pocet hracov
#define NUM_SPACE_TYPES 6 // pocet typov poli na hracom plane
#define NUM_COLORS 8 // pocet farieb nehnutelnosti
// Definicie vlastnych datovych typov
// Typy poli na hracom plane
typedef enum _space_type {
Property, // nehnutelnost
Start, // startovacie pole
Free_parking, // specialne pole bez akcie
In_jail, // specialne pole, predstavuje vazenie
Go_to_jail, // specialne pole, ktore presunie hraca do vazenia
Jail_pass // specialne pole s priepustkou
} SPACE_TYPE;
// Farba nehnutelnosti
typedef enum _color {
Brown,
Skyblue,
Purple,
Orange,
Red,
Yellow,
Green,
Blue
} COLOR;
// Struktura pre nehnutelnost
typedef struct _property {
char name[MAX_NAME + 1]; // nazov
int price; // cena nehnutelnosti/vyska najomneho
COLOR color; // farba
} PROPERTY;
// Struktura pre pole na hracom plane
typedef struct _space {
SPACE_TYPE type; // typ pola na hracom plane
PROPERTY *property; // pointer na nehnutelnost ak je pole
// typu Property, inak NULL
} SPACE;
// Struktura pre hraca
typedef struct _player {
int number; // cislo hraca (1, 2, 3 alebo 4)
int space_number; // cislo pola, na ktorom stoji (pole Start ma cislo 1)
int cash; // hotovost hraca
int num_jail_pass; // pocet nazbieranych priepustiek z vazenia
int is_in_jail; // info, ci je hrac vo vazeni: 0 - nie je; 1 - je
PROPERTY *owned_properties[NUM_PROPERTIES]; // zoznam kupenych nehnutelnosti
int num_properties; // pocet kupenych nehnutelnosti
} PLAYER;
// Deklaracie premennych
extern const char *space_types[NUM_SPACE_TYPES]; // nazvy typov poli na hracom plane
extern const char *property_colors[NUM_COLORS]; // nazvy farieb nehnutelnosti
extern PROPERTY properties[NUM_PROPERTIES]; // zoznam vsetkych nehnutelnosti
extern SPACE game_board[NUM_SPACES]; // hraci plan s 24 poliami
#endif //Z5_MONOPOLY_H
monopoly.c
- ten istý súbor ako v zadaní 4
#include "monopoly.h"
// nazvy typov poli na hracom plane
const char *space_types[NUM_SPACE_TYPES] = {
"PROPERTY",
"START",
"FREE PARKING",
"IN JAIL",
"GO TO JAIL",
"JAIL PASS"
};
// nazvy farieb nehnutelnosti
const char *property_colors[NUM_COLORS] = {
"Brown",
"Skyblue",
"Purple",
"Orange",
"Red",
"Yellow",
"Green",
"Blue"
};
// zoznam nehnutelnosti na hracom plane
PROPERTY properties[NUM_PROPERTIES] = {
{.name = "FOOD TRUCK", .price = 1, .color = Brown},
{.name = "PIZZA RESTAURANT", .price = 1, .color = Brown},
{.name = "DOUGHNUT SHOP", .price = 1, .color = Skyblue},
{.name = "ICE CREAM SHOP", .price = 1, .color = Skyblue},
{.name = "MUSEUM", .price = 2, .color = Purple},
{.name = "LIBRARY", .price = 2, .color = Purple},
{.name = "THE PARK", .price = 2, .color = Orange},
{.name = "THE BEACH", .price = 2, .color = Orange},
{.name = "POST OFFICE", .price = 3, .color = Red},
{.name = "TRAIN STATION", .price = 3, .color = Red},
{.name = "COMMUNITY GARDEN", .price = 3, .color = Yellow},
{.name = "PET RESCUE", .price = 3, .color = Yellow},
{.name = "AQUARIUM", .price = 4, .color = Green},
{.name = "THE ZOO", .price = 4, .color = Green},
{.name = "WATER PARK", .price = 5, .color = Blue},
{.name = "AMUSEMENT PARK", .price = 5, .color = Blue}
};
// inicializacia hracieho pola
SPACE game_board[NUM_SPACES] = {
{.type = Start, .property = NULL},
{.type = Property, .property = &properties[0]},
{.type = Property, .property = &properties[1]},
{.type = Jail_pass, .property = NULL},
{.type = Property, .property = &properties[2]},
{.type = Property, .property = &properties[3]},
{.type = In_jail, .property = NULL},
{.type = Property, .property = &properties[4]},
{.type = Property, .property = &properties[5]},
{.type = Jail_pass, .property = NULL},
{.type = Property, .property = &properties[6]},
{.type = Property, .property = &properties[7]},
{.type = Free_parking, .property = NULL},
{.type = Property, .property = &properties[8]},
{.type = Property, .property = &properties[9]},
{.type = Jail_pass, .property = NULL},
{.type = Property, .property = &properties[10]},
{.type = Property, .property = &properties[11]},
{.type = Go_to_jail, .property = NULL},
{.type = Property, .property = &properties[12]},
{.type = Property, .property = &properties[13]},
{.type = Jail_pass, .property = NULL},
{.type = Property, .property = &properties[14]},
{.type = Property, .property = &properties[15]}
};
z5.c
- hlavný zdrojový súbor, v ktorom bude vypracované zadanie
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "monopoly.h" // Nemenit !!!
// Nevkladat monopoly.c !!!
int main(int argc, char *argv[]) {
// TODO
return 0;
}
Odovzdávací systém otestuje a ohodnotí nasledovné oblasti funkcionality vášho programu. Na získanie bodov za konkrétny testovací scenár je nutné, aby testom prešli všetky testovacie prípady v danom scenári.
Scenár 1
Chybová situácia E1
|
0,5 b |
Scenár 2
Chybová situácia E2
|
1,0 b |
Scenár 3
Len prepínač
-t , celý výpis |
3,0 b |
Scenár 4
Len prepínač
-b , celý výpis |
1,5 b |
Scenár 5
Súčasne prepínač
-b aj
-t , celý výpis
|
4,0 b |
Súčet | 10 b |
K dispozícii sú dva adresáre s testovacími textovými súbormi. Čísla na konci názvu súboru
predstavujú počet nehnuteľností v príslušnej databáze (napr. properties8.txt
je databáza s 8 nehnuteľnosťami)
alebo počet nehnuteľností na hracom pláne (napr. gameboard19.txt
je hrací plán s 19 nehnuteľnosťami).
Čísla v pomenovaní textových súborov sú len pomôcka na lepšie orientovanie sa v testovacích súboroch. Textové súbory využívané testovacím
serverom nemusia obsahovať tento číselný údaj a môžu mať ľubovoľný názov.
Dôležitá poznámka: pred testovaním si nakopírujte obidva adresáre do priečinku, kde sa nachádza váš skompilovaný program, t.j. aby vám fungovali príkazy spustenia programu v jednotlivých príkladoch.
Zoznam testovacích scenárov:
-t
, celý výpis-b
, celý výpis-b
aj
-t
, celý výpiss1
Poznámka: predpokladáme, že /home/wrong/path/file.txt
je neplatná cesta.
./z5 -t /home/wrong/path/file.txt
Výstup: stdout_01.txt
Poznámka: predpokladáme, že /wrong/path/file.txt
je neplatná cesta.
./z5 -b /wrong/path/file.txt
Výstup: stdout_02.txt
Poznámka: predpokladáme, že wrong1.txt
a wrong2.txt
sú neplatné cesty.
./z5 -b wrong1.txt -t wrong2.txt
Výstup: stdout_03.txt
Poznámka: predpokladáme, že wrong1.txt
je neplatná cesta.
./z5 -b wrong1.txt -t properties/properties16.txt
Výstup: stdout_04.txt
Poznámka: predpokladáme, že wrong2.txt
je neplatná cesta.
./z5 -b gameboard/gameboard2.txt -t wrong2.txt
Výstup: stdout_05.txt
s2
./z5 -b gameboard/gameboard6.txt -t properties/properties3.txt
Výstup: stdout_01.txt
./z5 -b gameboard/gameboard16.txt -t properties/properties10.txt
Výstup: stdout_02.txt
./z5 -b gameboard/gameboard19.txt
Výstup: stdout_03.txt
-t
, celý výpis
s3
./z5 -t properties/properties3.txt
Výstup: stdout_01.txt
./z5 -t properties/properties8.txt
Výstup: stdout_02.txt
./z5 -t properties/properties10.txt
Výstup: stdout_03.txt
./z5 -t properties/properties16.txt
Výstup: stdout_04.txt
./z5 -t properties/properties18.txt
Výstup: stdout_05.txt
-b
, celý výpis
s4
./z5 -b gameboard/gameboard2.txt
Výstup: stdout_01.txt
./z5 -b gameboard/gameboard6.txt
Výstup: stdout_02.txt
./z5 -b gameboard/gameboard8.txt
Výstup: stdout_03.txt
./z5 -b gameboard/gameboard16.txt
Výstup: stdout_04.txt
-b
aj
-t
, celý výpis
s5
./z5 -b gameboard/gameboard2.txt -t properties/properties3.txt
Výstup: stdout_01.txt
./z5 -b gameboard/gameboard2.txt -t properties/properties8.txt
Výstup: stdout_02.txt
./z5 -b gameboard/gameboard2.txt -t properties/properties10.txt
Výstup: stdout_03.txt
./z5 -b gameboard/gameboard2.txt -t properties/properties16.txt
Výstup: stdout_04.txt
./z5 -b gameboard/gameboard2.txt -t properties/properties18.txt
Výstup: stdout_05.txt
./z5 -b gameboard/gameboard6.txt -t properties/properties8.txt
Výstup: stdout_06.txt
./z5 -b gameboard/gameboard6.txt -t properties/properties10.txt
Výstup: stdout_07.txt
./z5 -b gameboard/gameboard6.txt -t properties/properties16.txt
Výstup: stdout_08.txt
./z5 -b gameboard/gameboard6.txt -t properties/properties18.txt
Výstup: stdout_09.txt
./z5 -b gameboard/gameboard8.txt -t properties/properties8.txt
Výstup: stdout_10.txt
./z5 -b gameboard/gameboard8.txt -t properties/properties10.txt
Výstup: stdout_11.txt
./z5 -b gameboard/gameboard8.txt -t properties/properties16.txt
Výstup: stdout_12.txt
./z5 -b gameboard/gameboard8.txt -t properties/properties18.txt
Výstup: stdout_13.txt
./z5 -b gameboard/gameboard16.txt -t properties/properties16.txt
Výstup: stdout_14.txt
./z5 -b gameboard/gameboard16.txt -t properties/properties18.txt
Výstup: stdout_15.txt
Nasledujúce zdroje vám môžu pomôcť pri programovaní zadania. Odporúčame si tieto zdroje preštudovať. Na prístup k niektorým zdrojom potrebujete byť prihlásení vo vašom Google STU konte.
Prednášky
Jazyk C
Zdroje obrázkov