Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.62 KB | None | 0 0
  1. Zadaća 3
  2.  
  3.  
  4. Zadaća nosi 2 boda, a sastoji se od 4 zadatka. Svaki zadatak nosi po 0,5 bodova. Zadaci će biti bodovani proporcionalno broju uspješnih testova. Oblasti zadaće su: nizovi sa jednom ili dvije dimenzije (matrice) (gradivo predavanja 11), funkcije koje za parametre imaju cijele, realne brojeve, pokazivače, te nizove cijelih ili realnih brojeva (P12, P14).
  5. U ovoj zadaći je potrebno pridržavati se i pravila za pisanje čitljivog koda (P13), u suprotnom studenti mogu izgubiti dio bodova.
  6.  
  7. Važna napomena: Ovaj dokument će možda biti mijenjan radi popravljanja grešaka. Koristite najnoviju verziju! Na dnu dokumenta nalaziće se dnevnik izmjena.
  8.  
  9.  
  10. 1. (0,5 bodova) Napisati funkciju oduzmi_cifre koja prima niz cijelih brojeva, a zatim svaki član niza prepravlja na sljedeći način: od prve cifre (s desne strane) se oduzme druga cifra, od druge treća, od treće četvrta itd. Ako bi neka od ovih razlika bila negativan broj, uzima se njegova apsolutna vrijednost. Ako korisnik unese negativan broj uzima se njegova apsolutna vrijednost, a ako unese jednocifren broj rezultat treba biti 0.
  11.  
  12. Primjer ulaza i izlaza:
  13. Unesite broj: 38279
  14. 5652
  15.  
  16. Objašnjenje: čitajući uneseni broj s desna na lijevo imamo:
  17. 9-7=2, 7-2=5, 2-8=-6, 8-3=5
  18. a to su cifre konačnog broja gledano s desna na lijevo po apsolutnoj vrijednosti.
  19.  
  20.  
  21.  
  22. 2. (0,5 bodova) Potrebno je napraviti funkciju parallel_max koja pronalazi najveći član u nizu realnih brojeva (tipa double) na način koji je pogodan za paralelno izvršavanje (no pošto nismo radili paralelno programiranje, taj dio nećemo uraditi).
  23.  
  24. Funkcija parallel_max radi na sljedeći način: funkcija prima dva pokazivača, na prvi član niza i iza posljednjeg. Ovaj pokazivač iza posljednjeg se ne smije dereferencirati. Ako pokazivači pokazuju na dva susjedna člana niza, vraća se vrijednost na adresi prvog pokazivača. U suprotnom funkcija se poziva od prvog člana do člana koji se nalazi u sredini, te od tog srednjeg do kraja, od ove dvije vrijednosti vraća se veća.
  25.  
  26. Napomena: U funkciji je strogo zabranjeno koristiti indeksiranje (uglaste zagrade) ili njegovu simulaciju tipa *(p+i). Funkcija mora raditi kako je opisano u zadatku u suprotnom zadatak dobija 0 bodova bez obzira na broj testova koji prolaze. Pojašnjenje: U funkciji (ili pomoćnim funkcijama koje se pozivaju iz nje) ne smije se nalaziti petlja - for, while niti do-while.
  27.  
  28.  
  29. 3. (0,5 bodova) Na tutorijalu smo radili "igru pogađanja brojeva" kod koje je računar zamislio broj, a vi ste pogađali koji je to broj. Sada su uloge zamijenjene! Trebamo napraviti igru kod koje ste vi zamislili broj između 0 i 100 (ne uključujući ta dva), a računar treba pogoditi koji je to broj!
  30.  
  31. Računar za pogađanje broja treba koristiti metodu sredine intervala. Na početku interval je (0,100) pa računar treba ponuditi broj 50. Vi odgovarate sa "jednako", "manje" ili "veće". Ako ste rekli "jednako", igra je gotova. Ako kažete "manje", interval postaje (0,50) pa će računar ponuditi broj na sredini tog intervala a to je 25. Ako sada kažete "veće", interval je (25,50), pa će računar ponuditi broj 37 (trebao bi biti 37,5, ali pošto su u pitanju cijeli brojevi, zaokružujemo broj na manji cijeli broj) itd. dok broj ne bude jednak. Da se ne bismo gnjavili sa stringovima, korisnik unosi jedno slovo: M za manje, V za veće ili J za jednako.
  32.  
  33. Za realizaciju ovog programa obavezno koristiti funkciju daj_sljedeci_broj koja prima jedan parametar tipa int. Ovaj parametar ima vrijednost -1 ako je korisnik odgovorio "manje", a +1 ako je odgovorio "veće", dok 0 vraća sredinu intervala ali ne mijenja interval. Funkcija "pamti" koji je broj prošli put vraćen i na osnovu toga prilagođava interval. U rješavanju zadatka nije dozvoljeno koristiti globalne promjenljive.
  34.  
  35. Primjer ulaza i izlaza:
  36. Zamislite neki broj...
  37. Da li je taj broj 50? M
  38. Da li je taj broj 25? K
  39. Pogresan unos, probajte ponovo.
  40. Da li je taj broj 25? V
  41. Da li je taj broj 37? V
  42. Da li je taj broj 43? J
  43. Pogodio sam!
  44.  
  45.  
  46. 4. (0,5 bodova) Date su dvije matrice cijelih brojeva A i B koje imaju deklarisanu dimenziju 100x100 ali je stvarno uneseno manje od tog broja elemenata odnosno njihova logička veličina je V1xS1 i V2xS2. Napisati funkciju matrica_sadrzana koja prima ove dvije matrice i provjerava da li je matrica B sadržana u matrici A. Funkcija vraća 1 ako jeste a 0 ako nije. Npr. ako matrice glase:
  47.  
  48. Matrica A Matrica B
  49. 1 2 3 4 5 2 3
  50. 6 7 8 9 10 7 8
  51. 11 12 13 14 15 12 13
  52. 16 17 18 19 20
  53.  
  54. Vidimo da je matrica B sadržana u matrici A (označeno boldom).
  55.  
  56.  
  57.  
  58. Izmjene:
  59. 7. 12. 2018. - Dodato pojašnjenje drugog zadatka.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement