Kontrolni zadatak: funkcije (C++)

Kontrolni 7 od 8 · Kontrolni zadaci

Kontrolni iz funkcija: pisanje funkcije sa parametrima i povratnom vrednošću, logičke funkcije (bool), funkcije koje rade sa ciframa broja i prenos parametara po referenci. Ova strana je nova – zadaci su u dve grupe, sa rešenjima.

Pre nego što počneš: ponovi lekcije Funkcije u C++-u, Funkcije u jeziku C, a zatim uradi zadatke sa strana Funkcije – primeri.
Kako da vežbaš: izaberi jednu grupu i reši je za 45 minuta, bez gledanja u rešenja i beleške. Tek posle toga uporedi svoje rešenje sa rešenjem probnog kontrolnog.

Šta treba znati za kontrolni

  • zaglavlje funkcije: povratni tip, ime i parametri
  • return – vraća vrednost i odmah završava funkciju
  • logičke funkcije (bool prost(int n)) i njihovu upotrebu u if
  • rad sa ciframa broja (% 10 i / 10) unutar funkcije
  • razliku između prenosa po vrednosti i po referenci (int &x)

Kako izgleda kontrolni

  • Trajanje: jedan školski čas (45 minuta).
  • Zadaci: 3 (ponekad 4) zadatka; svaka grupa ima zadatke iste težine, ali sa drugim podacima.
  • Šta se ocenjuje: da li program radi tačno za primer i za granične slučajeve, da li su ulaz i izlaz kao u tekstu i da li je kod pregledan.
Predlog bodovanja (3 zadatka po 10 poena)
Poeni0–1112–1617–2122–2627–30
Ocena12345

Skala je predlog za samostalnu proveru; nastavnik može da je prilagodi.

1. grupa

ZADATAK 011. grupa

Prosti brojevi do N

Napiši funkciju bool prost(int n) koja proverava da li je broj prost, i iskoristi je da ispišeš sve proste brojeve od 2 do N.

Primer

Ulaz

20

Izlaz

2 3 5 7 11 13 17 19
ZADATAK 021. grupa

Najveći zbir cifara

Napiši funkciju int zbirCifara(int x). Učitaj n prirodnih brojeva i ispiši onaj koji ima najveći zbir cifara (ako ih je više – prvi).

Primer

Ulaz

4
123 99 405 18

Izlaz

99
ZADATAK 031. grupa

Skraćivanje razlomka

Napiši funkciju int nzd(int a, int b) (Euklidov algoritam). Učitaj brojilac i imenilac i ispiši skraćeni razlomak u obliku a/b.

Primer 1

Ulaz

12 18

Izlaz

2/3

Primer 2

Ulaz

7 5

Izlaz

7/5

2. grupa

ZADATAK 042. grupa

Broj kombinacija

Napiši funkciju long long faktorijel(int n) i pomoću nje izračunaj broj načina da se od n učenika izabere ekipa od k: C(n, k) = n! / (k! · (n − k)!). Važi 0 ≤ k ≤ n ≤ 20.

Primer 1

Ulaz

5 2

Izlaz

10

Primer 2

Ulaz

20 10

Izlaz

184756
ZADATAK 052. grupa

Palindromi u intervalu

Napiši funkciju bool palindrom(int x) koja proverava da li se broj čita isto s leva i s desna. Za dati interval [a, b] ispiši sve takve brojeve i njihov broj.

Primer

Ulaz

10 50

Izlaz

11 22 33 44
Ukupno: 4
ZADATAK 062. grupa

Sortiranje tri broja (prenos po referenci)

Napiši funkciju void zameni(int &x, int &y) i funkciju void sortiraj(int &a, int &b, int &c) koja tri broja poređa od najmanjeg do najvećeg. Učitaj tri broja, sortiraj ih pozivom funkcije i ispiši.

Primer

Ulaz

7 2 5

Izlaz

2 5 7
Česte greške i saveti
  • Funkcija mora biti napisana (ili najavljena) pre mesta gde se poziva.
  • Parametri bez & su kopije: promena unutar funkcije ne menja promenljivu u main.
  • U funkciji koja treba da vrati vrednost svaka grana mora da se završi sa return.
  • Isti posao koji se ponavlja više puta (zbir cifara, provera prostog broja) izdvoj u funkciju – program je kraći i lakše se proverava.

Proveri znanje

Otvori kviz

Mini kviz: funkcije

1. Šta vraća funkcija tipa void?




2. Posle poziva f(x), gde je void f(int a) { a = 5; }, koliko je x ako je ranije bilo 2?




3. Kako se piše parametar koji funkcija može da promeni u pozivaocu?