Skip to content

Commit

Permalink
add cvicenie 5 and assignment 1
Browse files Browse the repository at this point in the history
  • Loading branch information
tuplle committed Oct 23, 2024
1 parent 7b01ebb commit 89f63ad
Show file tree
Hide file tree
Showing 21 changed files with 902 additions and 14 deletions.
Binary file added app/images/icons/assignment.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion app/styles/_categories.scss
Original file line number Diff line number Diff line change
Expand Up @@ -206,4 +206,5 @@ $color-weave-green, 'weave.svg');
@include codelab-card(['sample'], #fc0023, 'sample.png');

@include codelab-card(['cvicenie'], $color-android-auto-blue, 'practice.png');
@include codelab-card(['zadanie'], $color-android-green, 'project.png');
@include codelab-card(['projekt'], $color-android-green, 'project.png');
@include codelab-card(['zadanie'], $color-firebase-orange, 'assignment.png');
96 changes: 96 additions & 0 deletions codelabs/cvicenie-5.md
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.
25 changes: 25 additions & 0 deletions codelabs/cvicenie-5/codelab.json
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"
}
102 changes: 102 additions & 0 deletions codelabs/cvicenie-5/index.html
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&#39;</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>
2 changes: 1 addition & 1 deletion codelabs/projekt-kalkulacka.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
summary: Projekt Kalkulačka
id: projekt-kalkulacka
categories: cvicenie, projekt
categories: projekt
tags: beginner
status: Published
authors: Milan Mladoniczky
Expand Down
4 changes: 2 additions & 2 deletions codelabs/projekt-kalkulacka/codelab.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"environment": "web",
"format": "html",
"prefix": "https://storage.googleapis.com",
"updated": "2024-10-16T23:03:52+02:00",
"mainga": "",
"updated": "2024-10-23T22:14:24+02:00",
"id": "projekt-kalkulacka",
"duration": 0,
"title": "Kalkulačka",
Expand All @@ -14,7 +15,6 @@
"published"
],
"category": [
"cvicenie",
"projekt"
],
"tags": [
Expand Down
84 changes: 84 additions & 0 deletions codelabs/zadanie-hadanie_cisla.md
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 &lt;stdlib.h&gt;`
>
> 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] .
26 changes: 26 additions & 0 deletions codelabs/zadanie-hadanie_cisla/codelab.json
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"
}
Loading

0 comments on commit 89f63ad

Please sign in to comment.