Toto zadanie nie je bodované. Slúži predovšetkým na to, aby ste nadobudli základné programátorské návyky v jazyku C (predovšetkým prechod z jazyka Python, ktorý bol obsahom PROG-1), ktoré budete potrebovať na úspešné vypracovanie budúcich, komplexnejších programov, ktoré vás v priebehu semestra čakajú.
Rovnako je potrebné čas určený na vypracovanie tohto zadania využiť na oboznámenie sa s odovzdávacím web
systémom a spôsobom automatizovaného hodnotenia vašich zadaní, aby ste v budúcnosti zbytočne neprichádzali o
body. Systém je v testovacej prevádzke, preto budeme vďační za nahlásenie akýchkoľvek chýb/nejasností, ktoré si
všimnete. Takisto privítame rozumné návrhy na vylepšenie/rozšírenie funkcionality. Svoje postrehy a pripomienky
posielajte do Discordu alebo priamo e-mailom na pavol.marak@stuba.sk
.
Nasledujúce zdroje vám môžu pomôcť pri riešení zadania. Odporúčame si tieto zdroje pozrieť/preštudovať. Na prístup k niektorým zdrojom potrebujete byť prihlásení vo vašom Google G-Suite STU konte.
Prednášky
Jazyk C
Napíšte funkciu primeFactors
, ktorá vypíše všetky unikátne prvočíselné
delitele
vstupného čísla a
(parameter funkcie). Parameter m
určuje maximálny počet vypísaných prvočíselných deliteľov (čítaj ďalej).
Funkciu primeFactors
otestujte v rámci vášho programu vo funkcii main
podľa nižšie uvedených pokynov.
// hlavicka funkcie
void primeFactors(int a, int m);
int a
- celé číslo, ktorého prvočíselné delitele ideme vypísať, musí
platiť, že a>1
int m
- ľubovoľné nezáporné celé číslo, ktoré určuje maximálny počet
vypísaných prvočíselných deliteľov
Treba ošetriť len parameter a
. Ak je zadaný neplatný vstup, t.j. ak nebude
platiť podmienka a>1
, váš program vypíše na štandardný výstup len text ERROR
a skončí štandardným spôsobom.
Parameter m
netreba ošetrovať. Očakáva sa, že používateľ ho zadá vždy
nezáporný. Automatizovane testované budú len nezáporné hodnoty parametra m
.
Funkcia vypíše postupnosť prvočíselných deliteľov parametra a
. Každý
prvočíselný deliteľ musí byť vypísaný na samostatnom riadku (žiadny iný vypísaný text na riadku okrem
prvočíselného deliteľa nebude akceptovaný). Maximálny počet vypísaných prvočíslených deliteľov je daný
parametrom m
. Na konci výstupu (za posledný deliteľom) je tolerovaný max. 1
prázdny riadok.
Vo vašom zadaní je potrebné funkciu primeFactors
zavolať z hlavnej funkcie
main
. Postup je nasledovný:
a
a m
, oddelené ľubovoľným počtom medzier. Nesmú sa vypisovať žiadne pomocné
sprievodné texty typu: Zadajte cislo:
a pod.
primeFactors
, do ktorej sa ako parametre
odovzdajú načítané čísla a
a m
.
main
).Oblasť A: Základná funkcionalita | Spolu 9.0 b |
Scenár A1
Parameter a má len 1 prvočíselný deliteľ. Rôzne hodnoty
m .
|
1.0 b |
Scenár A2
Parameter a je veľké číslo. Parameter m má hodnotu vyššiu ako je počet prvočíselných deliteľov
parametra a .
|
2.0 b |
Scenár A3
Parameter a je veľké číslo. Parameter m má hodnotu nižšiu ako je počet prvočíselnych deliteľov
parametra a .
|
2.0 b |
Scenár A4
Parameter a je malé číslo. Parameter m má hodnotu vyššiu ako je počet prvočíselných deliteľov
parametra a .
|
2.0 b |
Scenár A5
Parameter a je malé číslo. Parameter m má hodnotu nižšiu ako je počet prvočíselných deliteľov
parametra a .
|
2.0 b |
Oblasť B: Chybové situácie | Spolu 1.0 b |
Scenár B1 Ošetrenie
neplatnej hodnoty
parametra a .
|
1.0 b |
Súčet | 10 b |
a=409
, m=5
Vypísaná postupnosť:
409
a=167
, m=0
Vypísaná postupnosť: program nič nevypíše.
a=747714
, m=10
Vypísaná postupnosť:
2
3
11
11329
a=15002194
, m=2
Vypísaná postupnosť:
2
17
a=4890
, m=20
Vypísaná postupnosť:
2
3
5
163
a=3759
, m=2
Vypísaná postupnosť:
3
7
a=-4
, m=1
Výpis:
ERROR