Toto zadanie 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);
Program získa vstupné údaje z klávesnice (stdin
).
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ť unikátnych 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
. Funkciu je nutné zavolať len raz. 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
.
Funkcia ošetrí vstup a vypíše unikátne prvočíselné delitele parametra a
v zmysle zadania a skončí.
main
s kódom 0 (návrat s iným kódom signalizuje neúspešné dokončenie programu).#include <stdio.h>
// Miesto pre definiciu funkcie 'primeFactors'.
int main()
{
// 1. Nacitanie vstupov 'a' a 'm'.
// 2. Zavolanie funkcie 'primeFactors'
return 0;
}
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 |
Správny výstup:
409
2. príklad
Správny výstup: program nič nevypíše.
3. príkladSprávny výstup:
2
3
11
11329
4. príklad
Správny výstup:
2
17
5. príklad
Správny výstup:
2
3
5
163
6. príklad
Správny výstup:
3
7
7. príklad
Správny výstup:
3
5
23
29
8537
8. príklad
Správny výstup:
ERROR