-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
21 changed files
with
902 additions
and
14 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
summary: Cvičenie 5 Súbory | ||
id: cvicenie-5 | ||
categories: cvicenie | ||
tags: beginner | ||
status: Published | ||
authors: Milan Mladoniczky | ||
feedback link: https://github.com/interes-group/pevs-BIAX10029-codelabs/issues | ||
|
||
# Cvičenie 5 - Súbory | ||
|
||
<!-- ------------------------ --> | ||
## Úvod | ||
|
||
Na tomto cvičení si preberieme prácu so súbormi. | ||
|
||
### Obsah | ||
- otvorenie súboru a jeho čítanie | ||
- zapisovanie do súboru | ||
|
||
> aside negative | ||
> Ak používate ako vývojové prostredie lokálny a editor a následnú kompiláciu cez terminál. Použite príkaz: | ||
> ```shell | ||
> gcc -std=c11 -o program -Wall -Wextra main.c | ||
> ``` | ||
Pre vypracovanie týchto úloh odporúčam lokálne vývojové prostredie (napr. CLion alebo VS Code) a nie webové prostredie. | ||
Riešenia na jednotlivé úlohy budú uverejnené najskôr nasledujúci deň po cvičení. | ||
<!-- ------------------------ --> | ||
## Úloha 5.1 | ||
Napíšte program, zdrojový kód, v jazyku C použitím štandardu C11, ktorý otvorí existujúci súbor **_data.txt_**, | ||
načíta všetky údaje a vypíše ich na štandardný výstup. | ||
Dáta zo súboru načítajte po riadkoch a každý riadok hneď po načítaní vypíšte. Snažte sa implementáciu spraviť tak aby | ||
v jednom momente bol načítaný len jeden riadok. | ||
> aside positive | ||
> Nezabudnite si pred spustením program vytvoriť súbor _data.txt_ v tom istom priečinku ako zdrojový súbor _main.c_ . | ||
### Obsah súboru _data.txt_ | ||
```text | ||
Na prvé cvičenie prišli všetci. | ||
Na druhé už o niečo menej. | ||
Na tretie už o málo menej. | ||
Na štvrté prišli tí, ktorí sa chcú niečo naučiť. | ||
``` | ||
<!-- ------------------------ --> | ||
## Úloha 5.2 | ||
|
||
Napíšte program, zdrojový kód, v jazyku C použitím štandardu C11, ktorý zapíše do súboru výpočty, ktoré zadá používateľ. | ||
Program bude sčítavať dve čísla, ktoré zadá používateľ a vypíše ich výsledok na štandardný výstup a zároveň zapíše výpočet do súboru. | ||
Program si pýta dve čísla pre výpočet v cykle do nekonečna pokiaľ používateľ namiesto prvého čísla nezadá znak _'q'_. | ||
|
||
Výpočet je uložený do súboru ako trojica čísel oddelená medzerou. Každý výpočet je uložený do nového riadku. | ||
Výpočty ukladajte do súboru _**vypocty.txt**_ do rovnakého priečinku ako je váš zdrojový súbor _main.c_ . | ||
Ak súbor neexistuje, vytvorte ho programom. Ak súbor pri otvorení existuje prepíšte jeho existujúce dáta novými. | ||
|
||
> aside negative | ||
> Dávajte si pozor na zatvorenie súboru pred skončením programu. | ||
### Príklady vstupov / výstupov programu | ||
|
||
Ak vstupy od používateľa pre výpočty boli v nasledovnom poradí: | ||
|
||
- 5 a 3 | ||
- 8 a 7 | ||
- 21 a 56 | ||
|
||
Program by mal vytvoriť súbor _vypocty.txt_ s nasledovným obsahom: | ||
|
||
```text | ||
5 3 8 | ||
8 7 15 | ||
21 56 77 | ||
``` | ||
|
||
<!-- ------------------------ --> | ||
## Úloha 5.3 | ||
|
||
Napíšte program, zdrojový kód, v jazyku C použitím štandardu C11, ktorý načíta súbor _vypocty.txt_ a pokračuje v jeho zapisovaní. | ||
|
||
Program na začiatku načíta súbor _vypocty.txt_. Ak súbor neexistuje vytvorí ho. Ak súbor existuje načíta postupne z neho všetky výpočty | ||
a zvaliduje či sú správne vypočítané, t.j. či z načítanej trojice čísel v riadku súčet prvých dvoch čísiel sa rovná tretiemu číslu. | ||
Ak kontrola narazí na nesprávny výpočet tak na to upozorní používateľa vypísaním načítaných čísel a chybovou správou, | ||
program však pokračuje ďalej. Keď program načíta všetky existujúce výpočty vypíše koľko výpočtov načítal na obrazovku. | ||
|
||
Program následne pokračuje v rovnakej činnosti ako v úlohe 5.2 s opýtaním sa používateľa o dve čísla a vypočíta ich súčet. | ||
Výpočet potom zapíše na koniec súboru. Existujúce dáta nesmú byť prepísané. Formát súboru _vypocty.txt_ musí byť zachovaný | ||
ako je v úlohe 5.2. | ||
|
||
> aside negative | ||
> Dávajte si pozor na mód pod ktorým otvárate súbor a na zatvorenie súboru pred skončením programu. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
{ | ||
"environment": "web", | ||
"format": "html", | ||
"prefix": "https://storage.googleapis.com", | ||
"mainga": "", | ||
"updated": "2024-10-23T20:34:45+02:00", | ||
"id": "cvicenie-5", | ||
"duration": 0, | ||
"title": "Cvičenie 5 - Súbory", | ||
"authors": "Milan Mladoniczky", | ||
"summary": "Cvičenie 5 Súbory", | ||
"source": "cvicenie-5.md", | ||
"theme": "", | ||
"status": [ | ||
"published" | ||
], | ||
"category": [ | ||
"cvicenie" | ||
], | ||
"tags": [ | ||
"beginner" | ||
], | ||
"feedback": "https://github.com/interes-group/pevs-BIAX10029-codelabs/issues", | ||
"url": "cvicenie-5" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
|
||
<!doctype html> | ||
|
||
<html> | ||
<head> | ||
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes"> | ||
<meta name="theme-color" content="#4F7DC9"> | ||
<meta charset="UTF-8"> | ||
<title>Cvičenie 5 - Súbory</title> | ||
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Source+Code+Pro:400|Roboto:400,300,400italic,500,700|Roboto+Mono"> | ||
<link rel="stylesheet" href="//fonts.googleapis.com/icon?family=Material+Icons"> | ||
<link rel="stylesheet" href="https://storage.googleapis.com/claat-public/codelab-elements.css"> | ||
<style> | ||
.success { | ||
color: #1e8e3e; | ||
} | ||
.error { | ||
color: red; | ||
} | ||
</style> | ||
</head> | ||
<body> | ||
<google-codelab codelab-gaid="" | ||
codelab-ga4id="" | ||
id="cvicenie-5" | ||
title="Cvičenie 5 - Súbory" | ||
environment="web" | ||
feedback-link="https://github.com/interes-group/pevs-BIAX10029-codelabs/issues"> | ||
|
||
<google-codelab-step label="Úvod" duration="0"> | ||
<p>Na tomto cvičení si preberieme prácu so súbormi.</p> | ||
<h2 is-upgraded>Obsah</h2> | ||
<ul> | ||
<li>otvorenie súboru a jeho čítanie</li> | ||
<li>zapisovanie do súboru</li> | ||
</ul> | ||
<aside class="warning"><p> Ak používate ako vývojové prostredie lokálny a editor a následnú kompiláciu cez terminál. Použite príkaz:</p> | ||
<pre><code language="language-shell" class="language-shell">gcc -std=c11 -o program -Wall -Wextra main.c | ||
</code></pre> | ||
</aside> | ||
<p>Pre vypracovanie týchto úloh odporúčam lokálne vývojové prostredie (napr. CLion alebo VS Code) a nie webové prostredie.</p> | ||
<p>Riešenia na jednotlivé úlohy budú uverejnené najskôr nasledujúci deň po cvičení.</p> | ||
|
||
|
||
</google-codelab-step> | ||
|
||
<google-codelab-step label="Úloha 5.1" duration="0"> | ||
<p>Napíšte program, zdrojový kód, v jazyku C použitím štandardu C11, ktorý otvorí existujúci súbor <strong><em>data.txt</em></strong>, načíta všetky údaje a vypíše ich na štandardný výstup.</p> | ||
<p>Dáta zo súboru načítajte po riadkoch a každý riadok hneď po načítaní vypíšte. Snažte sa implementáciu spraviť tak aby v jednom momente bol načítaný len jeden riadok.</p> | ||
<aside class="special"><p> Nezabudnite si pred spustením program vytvoriť súbor <em>data.txt</em> v tom istom priečinku ako zdrojový súbor <em>main.c</em> .</p> | ||
</aside> | ||
<h2 is-upgraded>Obsah súboru <em>data.txt</em></h2> | ||
<pre><code language="language-text" class="language-text">Na prvé cvičenie prišli všetci. | ||
Na druhé už o niečo menej. | ||
Na tretie už o málo menej. | ||
Na štvrté prišli tí, ktorí sa chcú niečo naučiť. | ||
</code></pre> | ||
|
||
|
||
</google-codelab-step> | ||
|
||
<google-codelab-step label="Úloha 5.2" duration="0"> | ||
<p>Napíšte program, zdrojový kód, v jazyku C použitím štandardu C11, ktorý zapíše do súboru výpočty, ktoré zadá používateľ. Program bude sčítavať dve čísla, ktoré zadá používateľ a vypíše ich výsledok na štandardný výstup a zároveň zapíše výpočet do súboru. Program si pýta dve čísla pre výpočet v cykle do nekonečna pokiaľ používateľ namiesto prvého čísla nezadá znak <em>‘q'</em>.</p> | ||
<p>Výpočet je uložený do súboru ako trojica čísel oddelená medzerou. Každý výpočet je uložený do nového riadku. Výpočty ukladajte do súboru <strong><em>vypocty.txt</em></strong> do rovnakého priečinku ako je váš zdrojový súbor <em>main.c</em> . Ak súbor neexistuje, vytvorte ho programom. Ak súbor pri otvorení existuje prepíšte jeho existujúce dáta novými.</p> | ||
<aside class="warning"><p> Dávajte si pozor na zatvorenie súboru pred skončením programu.</p> | ||
</aside> | ||
<h2 is-upgraded>Príklady vstupov / výstupov programu</h2> | ||
<p>Ak vstupy od používateľa pre výpočty boli v nasledovnom poradí:</p> | ||
<ul> | ||
<li>5 a 3</li> | ||
<li>8 a 7</li> | ||
<li>21 a 56</li> | ||
</ul> | ||
<p>Program by mal vytvoriť súbor <em>vypocty.txt</em> s nasledovným obsahom:</p> | ||
<pre><code language="language-text" class="language-text">5 3 8 | ||
8 7 15 | ||
21 56 77 | ||
</code></pre> | ||
|
||
|
||
</google-codelab-step> | ||
|
||
<google-codelab-step label="Úloha 5.3" duration="0"> | ||
<p>Napíšte program, zdrojový kód, v jazyku C použitím štandardu C11, ktorý načíta súbor <em>vypocty.txt</em> a pokračuje v jeho zapisovaní.</p> | ||
<p>Program na začiatku načíta súbor <em>vypocty.txt</em>. Ak súbor neexistuje vytvorí ho. Ak súbor existuje načíta postupne z neho všetky výpočty a zvaliduje či sú správne vypočítané, t.j. či z načítanej trojice čísel v riadku súčet prvých dvoch čísiel sa rovná tretiemu číslu. Ak kontrola narazí na nesprávny výpočet tak na to upozorní používateľa vypísaním načítaných čísel a chybovou správou, program však pokračuje ďalej. Keď program načíta všetky existujúce výpočty vypíše koľko výpočtov načítal na obrazovku.</p> | ||
<p>Program následne pokračuje v rovnakej činnosti ako v úlohe 5.2 s opýtaním sa používateľa o dve čísla a vypočíta ich súčet. Výpočet potom zapíše na koniec súboru. Existujúce dáta nesmú byť prepísané. Formát súboru <em>vypocty.txt</em> musí byť zachovaný ako je v úlohe 5.2.</p> | ||
<aside class="warning"><p> Dávajte si pozor na mód pod ktorým otvárate súbor a na zatvorenie súboru pred skončením programu.</p> | ||
</aside> | ||
|
||
|
||
</google-codelab-step> | ||
|
||
</google-codelab> | ||
|
||
<script src="https://storage.googleapis.com/claat-public/native-shim.js"></script> | ||
<script src="https://storage.googleapis.com/claat-public/custom-elements.min.js"></script> | ||
<script src="https://storage.googleapis.com/claat-public/prettify.js"></script> | ||
<script src="https://storage.googleapis.com/claat-public/codelab-elements.js"></script> | ||
<script src="//support.google.com/inapp/api.js"></script> | ||
|
||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
summary: Zadanie 1 Hádanie čísla | ||
id: zadanie-hadanie_cisla | ||
categories: zadanie | ||
tags: beginner | ||
status: Published | ||
authors: Milan Mladoniczky | ||
feedback link: https://github.com/interes-group/pevs-BIAX10029-codelabs/issues | ||
|
||
# Zadanie 1 - Hádanie čísla | ||
|
||
<!-- ------------------------ --> | ||
## Úvod | ||
|
||
Úlohou je naprogramovať jednoduchú hru pomocou jazyka C, štandard C11, v ktorej sa hráč snaží uhádnuť náhodné | ||
číslo generované hrou tzv. tajomné číslo. | ||
Používateľ interaguje s hrou pomocou príkazového riadku / termínálu, t.j. štandardným vstupom a výstupom. | ||
|
||
<!-- ------------------------ --> | ||
## Priebeh | ||
|
||
Na začiatku, hra vypýta od hráča interval v ktorom vygeneruje náhodné číslo. Rozdiel hraníc intervalu musí byť minimálne 10. | ||
Hráč následne môže napísať číslo, ktoré si myslí, že je tajomné číslo. Po zadaní čísla hra pokračuje nasledovne: | ||
|
||
* Ak hráč zadal číslo mimo stanoveného intervalu na začiatku hry, hra vypíše hráčovi "Zadané číslo je mimo stanoveného intervalu", | ||
následne hra vypíše v akom intervale sa môže tajomné číslo nachádza a dá hráčovi možnosť hádať znovu. | ||
* Ak hráč zadal číslo, ktoré je väčšie ako tajomné číslo, hra vypíše hráčovi “Tajomné číslo je menšie ako tvoj odhad” | ||
a dá hráčovi možnosť hádať znovu. | ||
* Ak hráč zadal číslo, ktoré je menšie ako tajomné číslo, hra vypíše hráčovi “Tajomné číslo je väčšie ako tvoj odhad” | ||
a dá hráčovi možnosť hádať znovu. | ||
* Ak hráč uhádol číslo, hra mu pogratuluje a skončí. | ||
|
||
Hra končí ak hráč uhádne tajomné číslo ale sa dobrovoľne vzdá a ukončí hru tím, že napíše znak 'Q' do vstupu pre odhad. | ||
Hra počíta koľko pokusov hráč zadal a pri ukončení hry ich vypíše hráčovi. | ||
|
||
Ešte pred ukončením programu zapíšte záznam o hádaní do súboru _hadaj_cislo.log_. Záznam o hre má nasledujúci tvar: | ||
|
||
**tajomné_číslo počet_pokusov uhadol/neuhadol** | ||
|
||
Napríklad ak tajomné číslo bolo 8 a používateľ ho uhádol na 3 pokusy záznam v súbore by mal vyzerať nasledovne: | ||
`8 3 uhadol`. | ||
|
||
Program do súboru iba pridáva záznamy o hre nikdy nepremazáva existujúce dáta. Ak súbor neexistuje vytvorí ho. | ||
Súbor sa môže nachádzať v rovnakom priečinku ako zdrojový súbor _main.c_ . | ||
|
||
Dbajte na dodatočnú komunikáciu/výpisy hráčovi o priebehu hry, prípadne aký vstup očakávate od hráča. | ||
|
||
<!-- ------------------------ --> | ||
## Implementácia | ||
|
||
Pri implementácii zadania musíte vytvoriť aspoň jednu vlastnú funkciu, ktorú následne použijete v inej časti programu. | ||
Pri implementácii môžte použiť všetky výrazy, techniky a funkcie, ktoré sme doteraz prebrali a samozrejme aj nejaká tvorivá | ||
práca navyše môže byť ocenená bonusovými bodmi. | ||
|
||
> aside positive | ||
> Pomôcka: | ||
> | ||
> Náhodné číslo je možné vygenerovať pomocou funkcie _rand()_, ktorá vráti náhodné číslo medzi 0 a konštantou _RAND_MAX_. | ||
> _rand()_ je funkcia z knižnice _stdlib.h_. Pre použitie je potrebné túto knižnicu najprv zahrnúť do zdrojového kódu na | ||
> začiatku súboru main.c - `#include <stdlib.h>` | ||
> | ||
> Ak chceme vygenerovať náhodné číslo medzi dvomi hranicami napr. medzi číslom A a číslom B tak vieme použiť vzorec: | ||
> `rand() % (B - A + 1) + A` | ||
<!-- ------------------------ --> | ||
## Hodnotenie | ||
|
||
Zadanie je ohodnotené 20 bodmi. Odovzdaný program musí byť skompilovateľný, inak je hodnotený 0 bodmi. Pri vypracovaní zadania sa | ||
kontroluje originalita zadaní, a všetky zadania so zhodou vyššou ako 85% sú hodnotené 0 bodmi. Pri hodnotení vypracovania | ||
sa bude prihliadať na nasledujúce: | ||
|
||
- použitie vlastnej funkcie | ||
- využitie cyklov (for cyklus prípadne while cyklus) | ||
- využitie podmienok if - else if - else | ||
- práca so súborom | ||
- korektnosť kódu | ||
- komunikácia hry s hráčom | ||
|
||
<!-- ------------------------ --> | ||
## Odovzdanie | ||
|
||
Vypracovanie zadania odovzdajte do určeného miesta v MS Teams (Assignments > Zadanie 1 - Hádanie čísla). | ||
Odovzdávajte iba súbor _main.c_ so zdrojovým kódom programu. | ||
Vypracovanie je nutné odovzdať do **31.10.2024 23:59**. Neodovzdanie je hodnotené 0 bodmi. | ||
V prípade otázok, alebo technických problémov ma môžte kontaktovať na MS Teams alebo emailom [email protected] . |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
{ | ||
"environment": "web", | ||
"format": "html", | ||
"prefix": "https://storage.googleapis.com", | ||
"mainga": "", | ||
"updated": "2024-10-23T22:09:19+02:00", | ||
"id": "zadanie-hadanie_cisla", | ||
"duration": 0, | ||
"title": "Zadanie 1 - Hádanie čísla", | ||
"authors": "Milan Mladoniczky", | ||
"summary": "Zadanie 1 Hádanie čísla", | ||
"source": "zadanie-hadanie_cisla.md", | ||
"theme": "", | ||
"status": [ | ||
"published" | ||
], | ||
"category": [ | ||
"zadanie", | ||
"bodove_hodnotenie" | ||
], | ||
"tags": [ | ||
"beginner" | ||
], | ||
"feedback": "https://github.com/interes-group/pevs-BIAX10029-codelabs/issues", | ||
"url": "zadanie-hadanie_cisla" | ||
} |
Oops, something went wrong.