You are on page 1of 5

Uvod u računala i programiranje

Vježba 10.

 Funkcije: deklaracija i definicija funkcije


 Poziv funkcije i prijenos argumenata (po vrijednosti, po adresi)
 Rekurzivne funkcije

1. Napišite program koji sa tipkovnice učitava riječ (niz od max. 50 velikih slova abecede)
te ispisuje koliko riječ ima samoglasnika. Koristiti funkciju brojiSamoglasnike() za
brojanje samoglasnika u riječi.

#include <stdio.h>

int brojiSamoglasnike(char rijec[]) {


int brojSamoglasnika = 0;

// Pronalaženje kraja stringa


int i = 0;
while (rijec[i] != '\0') {
switch (rijec[i]) {
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
brojSamoglasnika++;
break;
default:
break;
}
i++;
}

return brojSamoglasnika;
}

int main() {
char rijec[51];

printf("Unesite rijec: ");


scanf("%50s", rijec);

int brojSamoglasnika = brojiSamoglasnike(rijec);

printf("Rijec '%s' ima %d samoglasnika.\n", rijec, brojSamoglasnika);

return 0;
}

2. U glavnom programu učitaj matricu dimenzije 3 retka i 4 stupca. Korištenjem funkcije


sum_mat() izračunajte sumu svih elemenata matrice
#include <stdio.h>

int sum_mat(int mat[3][4]) {


int suma = 0;

for (int i = 0; i < 3; i++) {


for (int j = 0; j < 4; j++) {
suma += mat[i][j];
}
}

return suma;
}

int main() {
int matrica[3][4];

printf("Unesite elemente matrice (redak po redak):\n");

for (int i = 0; i < 3; i++) {


for (int j = 0; j < 4; j++) {
scanf("%d", &matrica[i][j]);
}
}

int sumaMatrice = sum_mat(matrica);

printf("Suma svih elemenata matrice je: %d\n", sumaMatrice);

return 0;
}
3. Napišite program koji pomoću funkcije ZnamenkePoredaj() broji znamenke unesenog
višeznamenkastog broja i ispisuje znamenke broja po veličini (od većeg prema
manjem).

#include <stdio.h>

void ZnamenkePoredaj(int broj) {


int brojac[10] = {0}; // Brojači za svaku znamenku (0-9)

// Brojanje znamenki
while (broj != 0) {
int znamenka = broj % 10;
brojac[znamenka]++;
broj /= 10;
}

// Ispis znamenki po veličini (od većeg prema manjem)


printf("Znamenke broja po veličini:\n");
for (int i = 9; i >= 0; i--) {
if (brojac[i] > 0) {
printf("%d se pojavljuje %d puta\n", i, brojac[i]);
}
}
}

int main() {
int uneseni_broj;

printf("Unesite višeznamenkasti broj: ");


scanf("%d", &uneseni_broj);

if (uneseni_broj < 0) {
printf("Uneseni broj treba biti nenegativan.\n");
return 1; // Vraćamo 1 kako bismo označili grešku
}

ZnamenkePoredaj(uneseni_broj);

return 0;
}
4. Napišite program koji poziva funkciju Sortiraj() koja kao argumente uzima niz realnih
brojeva i cijeli broj n (koji označava duljinu niza). Funkcija treba uzlazno sortirati niz.
Niz ispišite u main() funkciji.

#include <stdio.h>

void Sortiraj(float niz[], int n) {


for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (niz[j] > niz[j + 1]) {
float temp = niz[j];
niz[j] = niz[j + 1];
niz[j + 1] = temp;
}
}
}
}

int main() {
int n;

printf("Unesite duljinu niza: ");


scanf("%d", &n);

float niz[n];

printf("Unesite elemente niza:\n");

for (int i = 0; i < n; i++) {


scanf("%f", &niz[i]);
}

Sortiraj(niz, n);

printf("Sortirani niz: ");

for (int i = 0; i < n; i++) {


printf("%.2f ", niz[i]);
}

printf("\n");

return 0;
}

5. Napišite rekurzivnu i iterativnu funkciju za izračun faktorijele broja.

#include <stdio.h>

// Rekurzivna funkcija za izračun faktorijela


unsigned long long rekurzivniFaktorijel(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * rekurzivniFaktorijel(n - 1);
}
}

// Iterativna funkcija za izračun faktorijela


unsigned long long iterativniFaktorijel(int n) {
unsigned long long faktorijel = 1;

for (int i = 1; i <= n; i++) {


faktorijel *= i;
}

return faktorijel;
}

int main() {
int broj;

printf("Unesite broj za izračun faktorijela: ");


scanf("%d", &broj);

// Rekurzivni poziv
printf("Rekurzivni faktorijel od %d: %llu\n", broj, rekurzivniFaktorijel(broj));

// Iterativni poziv
printf("Iterativni faktorijel od %d: %llu\n", broj, iterativniFaktorijel(broj));

return 0;
}

You might also like