Neprihlásený používateľ |

Špecifikácia zadania

Zadanie 0 má len testovací charakter a slúži na oboznámenie sa s odovzdávacím systémom. Získané body sú len virtuálne, t.j. nezapisujú sa do AIS. Ďakujeme za pochopenie.

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.

Príprava

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

Úloha

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);

Vstup

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
Ošetrenie vstupu

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.

Výstup

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.

Dôležité zásady formátovania výstupu (základný predpoklad udelenia bodov):
  • Vypísaná postupnosť musí obsahovať len kladné čísla, zoradené od najmenšieho po najväčšie.
  • V postupnosti sa nesmú opakovať čísla.
  • V programe nevzniknú za behu žiadne iné výpisy.

Odporúčaná kostra programu

Vo vašom zadaní je potrebné funkciu primeFactors zavolať z hlavnej funkcie main. Postup je nasledovný:

  1. Po spustení programu používateľ zadá na štandardný vstup čísla a a m, oddelené ľubovoľným počtom medzier. Nesmú sa vypisovať žiadne pomocné sprievodné texty typu: Zadajte cislo: a pod.
  2. Následne sa zavolá funkcia primeFactors, do ktorej sa ako parametre odovzdajú načítané čísla a a m. Funkcia ošetrí vstup a vypíše prvočíselné delitele parametra a v zmysle zadania a skončí.
  3. Program skončí štandardným spôsobom (návratom z funkcie main s kódom 0).
#include <stdio.h>

// Miesto pre definiciu funkcie 'primeFactors'.

int main()
{
    // 1. Nacitanie vstupov 'a' a 'm'.
    // 2. Zavolanie funkcie 'primeFactors'
    return 0; 
}

Hodnotenie zadania

Testovacie scenáre
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

Video

Video ukážka spustenia programu

Testovacie príklady


1. príklad

Vstupy: $a=409$, $m=5$

Správny výstup:

409
2. príklad

Vstupy: $a=167$, $m=0$

Správny výstup: program nič nevypíše.

3. príklad

Vstupy: $a=747714$, $m=10$

Správny výstup:

2
3
11
11329
4. príklad

Vstupy: $a=15002194$, $m=2$

Správny výstup:

2
17
5. príklad

Vstupy: $a=4890$, $m=20$

Správny výstup:

2
3
5
163
6. príklad

Vstupy: $a=3759$, $m=2$

Správny výstup:

3
7
7. príklad

Vstupy: $a=85412685$, $m=10$

Správny výstup:

3
5
23
29
8537
8. príklad

Vstupy: $a=-4$, $m=1$

Správny výstup:

ERROR

Zdroje

  1. Prime Factorization Calculator. Pomocný nástroj na zistenie prvočíselných deliteľov.
  2. Prime Factorization Calculator 2. Ďalší pomocný nástroj na zistenie prvočíselných deliteľov.
Copyright © 2024, Pavol Marák, ÚIM FEI STU.
Vyrobené pomocou Django a Spectre.css.
Regulárne výrazy testujeme pomocou Regular Expression 101.
Videá prehrávame pomocou Plyr prehrávača.