Na tomto cvičení si prejdeme vytváranie a používanie funkcií.
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.
#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.
#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.
#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.
#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.
#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.
#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.
#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.
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.
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!