Na tomto cvičení si prejdeme vytváranie a používanie funkcií.

Obsah

Pre vypracovanie týchto úloh úplne postačuje použitie online kompilátora jazyku C. Napríklad stránku OneCompiler for C

Napíšte program, zdrojový kód, v jazyku C použitím štandardu C11, ktorý realizuje nasledovnú činnosť. Definujte funkciu int tretia_mocnina(int a), ktorá má 1 vstupný parameter, číslo a. Funkcia pre vstupný parameter a vráti hodnotu tretiu mocninu parametra a.

Príklady vstupov / výstupov programu

Riešenie

#include <stdio.h>

int tretia_mocnina(int a) {
    return a * a * a;
}

int main() {

    printf("%d\n", tretia_mocnina(1));
    printf("%d\n", tretia_mocnina(2));
    printf("%d\n", tretia_mocnina(3));

    return 0;
}

Napíšte program, zdrojový kód, v jazyku C použitím štandardu C11, ktorý realizuje nasledovnú činnosť. Upravte funkciu double priemer_troch(int a, int b, int c) z predošlej úlohy tak, aby vrátila aritmetický priemer týchto 3 parametrov, teda hodnotu (a+b+c)/3.

Príklady vstupov / výstupov programu

Riešenie

#include <stdio.h>

float priemer_troch(float a, float b, float c) {
    return (a + b + c) / 3.0;
}

int main() {

    printf("%.2f\n", priemer_troch(1, 2, 3));
    printf("%.2f\n", priemer_troch(1, 2, 4.5));

    return 0;
}

Napíšte program, zdrojový kód, v jazyku C použitím štandardu C11, ktorý realizuje nasledovnú činnosť. Definujte funkciu int minimum_dvoch(int a, int b) s 2 parametrami, číslami a a b. Funkcia vráti minimum z týchto 2 čísiel.

Príklady vstupov / výstupov programu

Riešenie

#include <stdio.h>

int minimum_dvoch(int a, int b) {
    if (a < b) return a;
    return b;
}

int main() {

    printf("%d\n", minimum_dvoch(2,5));
    printf("%d\n", minimum_dvoch(5,5));
    printf("%d\n", minimum_dvoch(-2,-105));

    return 0;
}

Napíšte program, zdrojový kód, v jazyku C použitím štandardu C11, ktorý realizuje nasledovnú činnosť. Definujte funkciu int pocet_rovnakych(int a, int b, int c) s 3 parametrami, číslami a,b,c.

Príklady vstupov / výstupov programu

Riešenie

#include <stdio.h>

int pocet_rovnakych(int a, int b, int c){
    if(a != b && a != c && b != c) return 0;
    if(a == b && b == c) return 3;
    if(a == b || a == c || b == c) return 2;
}

int main() {

    printf("%d\n", pocet_rovnakych(2,5,8));
    printf("%d\n", pocet_rovnakych(1,2,1));
    printf("%d\n", pocet_rovnakych(10,10,10));

    return 0;
}

Napíšte program, zdrojový kód, v jazyku C použitím štandardu C11, ktorý realizuje nasledovnú činnosť. Definujte funkciu int pocet_delitelnych_5(int n), ktorá má vstupný parameter celé nezáporné číslo n. Funkcia načíta n čísiel z klávesnice a vráti počet načítaných čísiel, ktoré boli deliteľné číslom 5. Ošetrite situáciu, ak by bola funkcia volaná so záporným vstupom! V takom prípade nech funkcia vypíše, že vstupný argument musí byť nezáporné číslo a vráti hodnotu -1.

Príklady vstupov / výstupov programu

Riešenie

#include <stdio.h>

int pocet_delitelnych_5(int n) {
    if (n < 0) {
        printf("Vstupný argument n musí byť nezáporné číslo\n");
        return -1;
    }
    int count = 0;
    for (int i = 0; i < n; i++) {
        printf("Zadajte ľubovolné číslo: ");
        int input;
        scanf("%d", &input);
        if (input % 5 == 0) count++;
    }
    return count;
}

int main() {

    printf("%d\n", pocet_delitelnych_5(5));
    printf("%d\n", pocet_delitelnych_5(4));
    printf("%d\n", pocet_delitelnych_5(-3));

    return 0;
}

Napíšte program, zdrojový kód, v jazyku C použitím štandardu C11, ktorý realizuje nasledovnú činnosť. Definujte funkciu int sucet_nacitanych(int n), ktorá má vstupný parameter nezáporné číslo n. Funkcia načíta n čísiel z klávesnice a vráti súčet načítaných čísiel. V prípade, že n je záporné číslo funkcia vypíše príslušnú chybovú správu a vráti hodnotu -1. V prípade, že n je nula, funkcia vráti hodnotu 0.

Príklady vstupov / výstupov programu

Riešenie

#include <stdio.h>

int sucet_nacitanych(int n) {
    if (n < 0) {
        printf("paramter n nemôže byť záporné číslo\n");
        return -1;
    }
    if (n == 0) return 0;
    int sum = 0;
    for (int i = 0; i < n; ++i) {
        int input;
        printf("Zadaj %d. cislo: ", i + 1);
        scanf("%d", &input);
        sum += input;
    }
    return sum;
}

int main() {

    printf("%d\n", sucet_nacitanych(-1));
    printf("%d\n", sucet_nacitanych(4));

    return 0;
}

Napíšte program, zdrojový kód, v jazyku C použitím štandardu C11, ktorý realizuje nasledovnú činnosť. Definujte funkciu int druhe_najvacsie(int n) s parametrom celé číslo n. Funkcia načíta n čísiel z klávesnice a vráti druhé najväčšie načítané číslo (druhé maximum). V prípade, že má parameter n hodnotu menšiu ako 2, funkcia vypíše chybovú hlášku, že hodnota vstupného argumentu funkcie musí byť aspoň 2 a ukončí program.

Príklady vstupov / výstupov programu

Riešenie

#include <stdio.h>
#include <limits.h>

int druhe_najvacsie(int n) {
    if (n < 2) {
        printf("Chyba: hodnota vstupného argumentu musí byť aspoň 2.\n");
        return -1;
    }

    int max1 = INT_MIN;  // Najväčšie číslo
    int max2 = INT_MIN;  // Druhé najväčšie číslo
    int num;

    for (int i = 0; i < n; i++) {
        printf("Číslo %d: ", i + 1);
        scanf("%d", &num);

        // Ak je nové číslo väčšie ako max1, posunieme max1 do max2
        if (num > max1) {
            max2 = max1;
            max1 = num;
        }
            // Ak je nové číslo menšie ako max1, ale väčšie ako max2
        else if (num > max2 && num != max1) {
            max2 = num;
        }
    }

    if (max2 == INT_MIN) {
        printf("Nie je možné určiť druhé najväčšie číslo.\n");
        return -1;
    }

    return max2;
}

int main() {

    int output = druhe_najvacsie(5);
    if (output == -1) return 1;
    else printf("%d\n", output);

    output = druhe_najvacsie(3);
    if (output == -1) return 1;
    else printf("%d\n", output);

    output = druhe_najvacsie(1);
    if (output == -1) return 1;
    else printf("%d\n", output);

    return 0;
}

Napíšte program, zdrojový kód, v jazyku C použitím štandardu C11, 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

Napíšte program, zdrojový kód, v jazyku C použitím štandardu C11, ktorý realizuje nasledovnú činnosť. Definujte funkciu int delitelnost(int a, int d) so vstupnými parametrami kladnými celými číslami a a d. Funkcia vráti hodnotu 1 ak d delí a, inak vráti hodnotu 0. V tejto úlohe nemusíte ošetrovať korektnosť parametrov a a d.

Príklady vstupov / výstupov programu

Napíšte program, zdrojový kód, v jazyku C použitím štandardu C11, ktorý realizuje nasledovnú činnosť. Definujte funkciu int je_prvocislo(int a) so vstupným parametrom kladným číslom a, ktorá vráti hodnotu 1, ak je parameter a prvočíslo. Ak je a zložené číslo, funkcia vráti hodnotu 0. Môžete predpokladať, že a bude mať vždy hodnotu aspoň 2. V implementácii funkcie je_prvocislo(a) využite funkciu delitelnost() z predošlej úlohy!

Príklady vstupov / výstupov programu