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>1int 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