✨ Úloha 3.8
Napíšte program, zdrojový kód, v jazyku C použitím štandardu C17, ktorý realizuje nasledovnú činnosť. Definujte všeobecnejšiu verziu funkciu z úlohy 3.5, int pocet_delitelnych(int n, int k). Funkcia má 2 vstupné parametre, nezáporné celé číslo n a kladné číslo k. Ošetrite situáciu, že by vstupný argument pre parameter n bolo záporné číslo alebo že by vstupný argument pre parameter k bolo záporné číslo alebo nula – vždy vypíšte príslušnú chybovú hlášku a funkcia vráti hodnotu -1. V prípade, že sú vstupné argumenty v poriadku, funkcia načíta n čísiel a vráti počet načítaných čísiel, ktoré boli deliteľné číslom k.
Príklady vstupov / výstupov programu
- Volanie
pocet_delitelnych(5,2)načíta 5 čísiel z klávesnice a vráti koľko z nich je deliteľných 2. Ak čísla sú napríklad 5,10,3,4,0 funkcia vráti číslo 3 (pretože 10, 4 a 0 sú deliteľné 2). - Volanie
pocet_delitelnych(4,0)vypíše chybovú správu, že hodnota k nie je kladná a vráti -1. - Volanie
pocet_delitelnych(-1,2)vypíše chybovú správu, že hodnota n je záporná a vráti -1. - Volanie
pocet_delitelnych(-1,-2)vypíše chybovú správu, že hodnota n je záporná a že hodnota k nie je kladná a vráti -1.
Rozbaľ pre ukážku riešenia
#include <stdio.h>
// Funkcia pocet_delitelnych:
// Načíta n čísel a vráti počet tých, ktoré sú deliteľné číslom k.
// Ak n < 0 alebo k <= 0, vypíše chybové hlášky a vráti -1.
int pocet_delitelnych(int n, int k) {
int pocet = 0;
int cislo;
// Ošetrenie chybných vstupov
int chyba = 0;
if (n < 0) {
printf("Chyba: hodnota n je záporná.\n");
chyba = 1;
}
if (k <= 0) {
printf("Chyba: hodnota k nie je kladná.\n");
chyba = 1;
}
if (chyba)
return -1;
// Načítanie n čísel
printf("Zadajte %d čísel:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &cislo);
if (cislo % k == 0)
pocet++;
}
return pocet;
}
int main(void) {
int n, k;
printf("Zadajte hodnoty n a k: ");
scanf("%d %d", &n, &k);
int vysledok = pocet_delitelnych(n, k);
if (vysledok != -1)
printf("Počet čísel deliteľných %d je: %d\n", k, vysledok);
return 0;
}