AbidK

2 Parcijala [1-6]

Jan 17th, 2018
509
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.39 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7.  
  8.  
  9. /*Poštujući sve faze procesa programiranje, napisati program će odrediti i ispisati zadnje tri cifre broja x^n. Unos brojeva x i n
  10. vršiti u glavnoj funkciji uz uslov 10<x<100 i 2<n<10, a funkciju za određivanje zadnje tri cifre napraviti zasebno.
  11. Primjer izlaza:
  12. Unesite brojeve x i n: 64 i 5
  13. Zadnje tri cifre broja su: 824
  14. */
  15.  
  16.  
  17. void ZadnjeTri(int, int);
  18.  
  19. int main() {
  20.     int x, n;
  21.     cout << "Unesite broj x : ";
  22.     do
  23.         cin >> x;
  24.     while (x < 10 || x>100);
  25.     cout << "Unesite n : ";
  26.     do
  27.         cin >> n;
  28.     while (n < 2 || n > 10);
  29.  
  30.     ZadnjeTri(x, n);
  31.  
  32.     system("pause>0");
  33.     return 0;
  34. }
  35.  
  36. void ZadnjeTri(int x, int n) {
  37.     int broj,cifra=0;
  38.     broj = pow(x, n);
  39.     for (int i = 0; i < 3; i++) {
  40.         cifra += broj % 10 * pow(10, i);
  41.         broj /= 10;
  42.     }
  43.     cout << "Zadnje 3 cifre : " << cifra;
  44. }
  45.  
  46.  
  47.  
  48.  
  49.  
  50. /*Napisati program koji će učitati prirodni broj n ≤ 10, a zatim n prirodnih trocifrenih brojeva koje treba pospremiti u odgovarajući niz.
  51. Taj niz brojeva treba sortirati uzlazno po srednjoj cifri. Nakon sortiranja treba ispisati dobiveni niz. Za sortiranje koristiti zasebnu
  52. funkciju kojoj se proslijeđuje nesortiran niz.*/
  53.  
  54.  
  55. void unos(int[], int);
  56. void sort(int[], int);
  57. void ispis(int[], int);
  58.  
  59. int main() {
  60.     int niz[10], n;
  61.  
  62.     cout << "Unesite prirodni broj n : ";
  63.     do
  64.         cin >> n;
  65.     while (n < 1 || n >10);
  66.  
  67.     unos(niz, n);
  68.     sort(niz, n);
  69.     ispis(niz, n);
  70.  
  71.     system("pause>0");
  72.     return 0;
  73. }
  74.  
  75. void unos(int niz[], int v) {
  76.     cout << "Unesite clanove niza : ";
  77.     for (int i = 0; i < v; i++){
  78.         cin >> niz[i];
  79.         if (niz[i] < 100 || niz[i] > 999)
  80.             i--;
  81.     }
  82. }
  83.  
  84. void sort(int niz[], int v) {
  85.     int broj, cifra1, cifra2, temp;
  86.     bool provjera;
  87.     do{
  88.         provjera = false;
  89.     for (int i = 1; i < v; i++) {
  90.         broj = niz[i-1];
  91.         cifra1 = (broj / 10) % 10;
  92.         broj = niz[i];
  93.         cifra2 = (broj / 10) % 10;
  94.         if (cifra1 > cifra2){
  95.             temp = niz[i];
  96.             niz[i] = niz[i - 1];
  97.             niz[i - 1] = temp;
  98.             provjera = true;
  99.         }
  100.     }
  101.     } while (provjera);
  102. }
  103.  
  104. void ispis(int niz[], int v) {
  105.     cout << "Niz nakon sortiranja : " << endl;
  106.     for (int i = 0; i < v; i++)
  107.         cout << niz[i] << " ";
  108. }
  109.  
  110.  
  111.  
  112.  
  113. /*Napisati program koji će omogućiti:
  114. • Unos 2D niza od 10x10 elemanata vodeći računa da su svi elementi dvocifreni (ukoliko unos nekog elementa ne zadovoljava uslov,
  115.     ponavljati unos tog elementa dok se ne zadovolji uslov) – Koristiti funkciju unos
  116. • Izvršiti transpoziciju niza tako što će se zamjeniti redovi i kolone – Koristiti funkciju transpose, a zatim na osnovu izmijenjenog
  117.     2D niza:
  118. • Izračunati aritmetičku sredinu svih prostih brojeva ispod sporedne dijagonale – Koristiti dvije funkcije:
  119.     aritmeticka i prost_broj (pozivati će se iz funkcije aritmeticka)
  120. • Napisati funkciju simpatican koja će provjeriti da li su brojevi iznad sporedne dijagonale simpatični*.
  121. Obavezno koristiti navedene funkcije, a parametre i eventualne povratne vrijednosti definisati prema potrebi.
  122. U main() funkciji napisati testni program koji će omogućiti izvršenje svih funkcija navedenim redoslijedom.
  123.  
  124.  
  125.        
  126.    
  127.            
  128. Transpozicija 2D niza od 4x4 elementa
  129. Pomoć: Broj je simpatičan ukoliko je zbir cifara njegovog kvadrata jednak kvadratu zbira njegovih cifara.
  130. Broj 21 je simpatičan jer je s(421) = s(21) * s(21)  pri čemu je s(n) zbir cifara prirodnog broja n.
  131. */
  132.  
  133.  
  134.  
  135. const int v = 2;
  136.  
  137. void unos(int[][v]);
  138. void transpose(int[][v]);
  139. void ispis(int[][v]);
  140. bool prost(int);
  141. void art(int[][v]);
  142. void simpaticni(int[][v]);
  143. bool simpProvjera(int);
  144. int Zbir(int);
  145.  
  146. int main() {
  147.    
  148.     int niz[v][v];
  149.  
  150.     unos(niz);
  151.     ispis(niz);
  152.     transpose(niz);
  153.     ispis(niz);
  154.     art(niz);
  155.     simpaticni(niz);
  156.    
  157.     system("pause>0");
  158.     return 0;
  159. }
  160.  
  161. void unos(int niz[][v]) {
  162.     cout << "Unesite clanove niza : ";
  163.     for (int i = 0; i < v; i++) {
  164.         for (int j = 0; j < v; j++) {
  165.             cin >> niz[i][j];
  166.             if (niz[i][j] < 10 || niz[i][j] > 99)
  167.                 j--;
  168.         }
  169.     }
  170. }
  171.  
  172. void transpose(int niz[][v]) {
  173.     int niz2[v][v];
  174.     for (int i = 0; i < v; i++) {
  175.         for (int j = 0; j < v; j++) {
  176.             niz2[j][i] = niz[i][j];
  177.         }
  178.     }
  179.     for (int i = 0; i < v; i++) {
  180.         for (int j = 0; j < v; j++) {
  181.             niz[i][j] = niz2[i][j];
  182.         }
  183.     }
  184.    
  185. }
  186.  
  187. void ispis(int niz[][v]){
  188.     cout << "Matrica : " << endl;
  189.     for (int i = 0; i < v; i++) {
  190.         for (int j = 0; j < v; j++) {
  191.             cout << niz[i][j] << " ";
  192.         }
  193.         cout << endl;
  194.     }
  195. }
  196.  
  197. void art(int niz[][v]) {
  198.     float art = 0;
  199.     int brojac = 0;
  200.     for (int i = 0; i < v; i++) {
  201.         for (int j = 0; j < v; j++) {
  202.             if (i + j >= v) {
  203.                 if (prost(niz[i][j])){
  204.                     art += niz[i][j];
  205.                     brojac++;
  206.                 }
  207.                
  208.             }
  209.         }
  210.     }
  211.     cout << "Artimeticka sredina prostih brojeva ispod sporedne dijagonale je : " << art / brojac << endl;
  212. }
  213.  
  214. bool prost(int x) {
  215.     for (int i = 2; i <= x / 2; i++) {
  216.         if (x%i == 0) {
  217.             return false;
  218.         }
  219.     }
  220.     return true;
  221. }
  222.  
  223. void simpaticni(int niz[][v]) {
  224.     int simp[10], brojac = 0;
  225.     for (int i = 0; i < v; i++) {
  226.         for (int j = 0; j < v; j++) {
  227.             if (i + j < v - 1) {
  228.                 if (simpProvjera(niz[i][j])) {
  229.                     simp[brojac++] = niz[i][j];
  230.                 }
  231.             }
  232.         }
  233.     }
  234.     cout << "Simpaticni brojevi iznad sporedne dijagonale su : ";
  235.     for (int i = 0; i < brojac; i++)
  236.         cout << simp[i];
  237. }
  238.  
  239. bool simpProvjera(int x) {
  240.     if (Zbir(x*x) == Zbir(x*Zbir(x)))
  241.         return true;
  242.     else
  243.         return false;
  244. }
  245.  
  246. int Zbir(int x) {
  247.     int suma = 0, cifra;
  248.     while (x > 0) {
  249.         cifra = x % 10;
  250.         suma += cifra;
  251.         x /= 10;
  252.     }
  253.     return suma;
  254. }
  255.  
  256.  
  257.  
  258. /*Napisati program koji od korisnika zahtijeva unos niza od najviše 20 realnih brojeva u rasponu od -100 do 100. U slučaju da korisnik unese
  259. bilo koji broj izvan datog raspona korisnik ponavlja unos tog elementa niza.
  260. Također, unos je moguće prekinuti prije nego što se dostigne kapacitet niza unosom broja 0 koji ne treba da bude element niza i služi samo
  261. za prekid. Nakon toga, program računa aritmetičku sredinu unesenih brojeva, te iz niza izbacuje sve one elemente čija je udaljenost
  262. od aritmetičke sredine veća od 10, na način da se sačuva redoslijed dodavanja elemenata. Implementaciju uraditi upotrebom sljedećih funkcija:
  263. • void unos (double[], int, int&); gdje je treći parametar stvarna veličina niza nakon unosa;
  264. • double aritmeticka_sredina(double[], int);
  265. • void ukloni(double[], int, double, int&); gdje je drugi parametar aritmetička sredina, a posljednji veličina niza nakon uklanjanja elemenata.
  266. U glavnom programu testirati dostupne funkcije, te obaviti ispis elemenata niza nakon uklanjanja vodeći se datim primjerom izlaza.
  267. */
  268.  
  269.  
  270.  
  271. const int v = 20;
  272.  
  273. void unos(double[], int, int&);
  274. double aritmeticka_sredina(double[], int);
  275. void ukloni(double[], int, double, int&);
  276. void ispis(double[], int);
  277.  
  278. int main() {
  279.  
  280.     double niz[v], ar;
  281.     int sv = 0;
  282.  
  283.     unos(niz, v, sv);
  284.     ar = aritmeticka_sredina(niz, sv);
  285.     cout << "Artimeticka sredina je : " << ar << endl;
  286.     ispis(niz, sv);
  287.     ukloni(niz, 20, ar, sv);
  288.     cout << "Velicina novog niza je : " << sv << endl;
  289.     ispis(niz, sv);
  290.  
  291.     system("pause>0");
  292.     return 0;
  293. }
  294.  
  295. void unos(double niz[], int v, int &sv) {
  296.  
  297.     cout << "Unesite clanove niza : " << endl;
  298.  
  299.     for (int i = 0; i < v; i++) {
  300.         do
  301.             cin >> niz[i];
  302.         while (niz[i] < -100 || niz[i]>100);
  303.         if (niz[i] == 0)
  304.             return;
  305.  
  306.         sv++;
  307.     }
  308. }
  309.  
  310. double aritmeticka_sredina(double niz[], int sv) {
  311.     double as = 0;
  312.     for (int i = 0; i < sv; i++)
  313.         as += niz[i];
  314.  
  315.     return as / sv;
  316. }
  317.  
  318. void ukloni(double niz[], int s, double ar, int &sv) {
  319.     unsigned int l = 0, removed = 0;
  320.     for (int i = 0; i < sv; i++) {
  321.         if (ar - niz[i] < 10 && niz[i] - ar < 10)
  322.             niz[l++] = niz[i];
  323.         else
  324.             removed++;
  325.     }
  326.  
  327.     sv -= removed;
  328. }
  329.  
  330. void ispis(double niz[], int v) {
  331.     for (int i = 0; i < v; i++)
  332.         cout << niz[i] << "  ";
  333.     cout << endl;
  334. }
  335.  
  336.  
  337.  
  338.  
  339. /*Neka je data matrica kompetencija studenata dimenzija 10x5, gdje svaki red matrice predstavlja studenta, a svaka kolona matrice kompetenciju koju je potrebno evaluirati. Matrica sadrži podatke o studentima sa dva studijska programa, prvih 5 redova za jedan i drugih 5 redova za drugi program. Kompetencije se definišu putem sljedeće skale: A (ekspert), B (stručnjak), C (zadovoljava), D (djelimično zadovoljava) i E (ne zadovoljava). Napisati program koji će implementirati i testirati sljedeće funkcije:
  340. • evaluiraj – funkcija omogućava unos evaluacije za određenog (odabranog u glavnom programu) studenta (unosi se samo jedan red matrice), na način da su dozvoljene samo vrijednosti usvojene prethodnom skalom (A, B, C, D i E). U slučaju unosa bilo kojeg karaktera izvan ovog opsega, potrebno je ponoviti unos. Prilikom unosa ispisati poruku za svaku kompetenciju na sljedeći način: „Unesite evaluaciju za kompetenciju C1“, i tako redom za svaku kolonu.
  341. • najuspjesnija_kompetencija – funkcija pronalazi kompetenciju (u oba studijska programa) koja je najuspješnija, odnosno na kojoj su studenti ostvarili najbolji rezultat, te vraća i prosječnu ocjenu za tu kompetenciju.
  342. Napomena: Pridružiti svakoj oznaci numeričku vrijednost, radi jednostavnosti kalkulacije i poređenja uspjeha pojedinih kompetencija. Koristiti prosljeđivanje najmanje jednog parametra po referenci, te ispis rezultata ne vršiti u funkciji.
  343. • najuspjesniji_student – funkcija pronalazi najuspješnijeg studenta u odabranom studijskom programu (studijski program se bira u glavnom programu putem vrijednost 1 (prvih 5 redova) ili 2 (drugih 5 redova), te vraća i prosječnu ocjenu tog studenta. Vrijede iste napomene kao i za prethodnu funkciju.
  344. U glavnom programu testirati implementirane funkcije na način da se uz uspjeh kompetencije ili studenta definiše opisna evaluacija (ekspert, stručnjak,...). Dodatno ispisati podatke o najuspješnijem studentu, posmatrajući oba studijska programa. Ispis najsupješnije kompetencije ili studenta izvršiti sa oznakama C ili S, uz redni broj kolone ili reda gdje se nalaze u matrici. Npr. Najuspješniji student je S2 sa prosječnom ocjenom „stručnjak“.*/
  345.  
  346.  
  347.  
  348. //Nije zavrsen
  349.  
  350. const int r = 10, k = 5;
  351.  
  352. void evaluiraj(char[], int);
  353. void ispis(char[][k]);
  354. double najkomp(int[][k], int&);
  355. void konverzija(char[][k], int[][k]);
  356. void ispisk(int[][k], int);
  357.  
  358. int main() {
  359.  
  360.     char niz[r][k] = {};
  361.     int niz2[r][k] = {};
  362.     int izbor, iz2, najK;
  363.     do {
  364.         cout << "Kojeg studenta zelite evaluirati ? " << endl;
  365.         do {
  366.             cin >> izbor;
  367.         } while ((izbor > 10 || izbor < 1) || niz[izbor - 1][0] != 0);
  368.         evaluiraj(niz[izbor - 1], k);
  369.         cout << "Da li zelite jos evaluacija ? (0 za ne)" << endl;
  370.         cin >> iz2;
  371.     } while (iz2 != 0);
  372.     konverzija(niz, niz2);
  373.     ispis(niz);
  374.     najkomp(niz2, najK);
  375.     ispisk(niz2, najK);
  376.     cout << "Najbolji prosjek ima kompetencija : " << najK + 1;
  377.  
  378.  
  379.     system("pause>0");
  380.     return 0;
  381. }
  382.  
  383. void ispisk(int niz[][k], int najK) {
  384.  
  385.     cout << "Prosjek naj kompetencije je : " << najkomp(niz, najK) << endl;
  386.  
  387. }
  388.  
  389.  
  390. double najkomp(int niz[][k], int &najK) {
  391.     int naj = 0, temp = 0, brojac = 0;
  392.     for (int i = 0; i < k; i++)
  393.     {
  394.         brojac = 0;
  395.         for (int j = 0; j < r; j++)
  396.         {
  397.             temp += niz[j][i];
  398.             if (niz[j][i] != 0)
  399.                 brojac++;
  400.         }
  401.         if (naj < temp) {
  402.             naj = temp;
  403.             najK = i;
  404.         }
  405.         temp = 0;
  406.  
  407.     }
  408.     return (naj / brojac);
  409.  
  410. }
  411.  
  412. void evaluiraj(char niz[], int k) {
  413.  
  414.     for (int i = 0; i < k; i++) {
  415.         cout << "Unesite evaluaciju za " << i + 1 << " : " << endl;
  416.         do {
  417.             cin >> niz[i];
  418.         } while (!(niz[i] == 'A' || niz[i] == 'B' || niz[i] == 'C' || niz[i] == 'D' || niz[i] == 'E'));
  419.     }
  420. }
  421.  
  422.  
  423. void ispis(char niz[][k]) {
  424.     for (int i = 0; i < r; i++) {
  425.         for (int j = 0; j < k; j++) {
  426.             cout << niz[i][j] << "  ";
  427.         }
  428.         cout << endl;
  429.         if (i == 4)
  430.             cout << endl;
  431.     }
  432. }
  433.  
  434. void konverzija(char niz[][k], int niz2[][k]) {
  435.     for (int i = 0; i < r; i++) {
  436.         for (int j = 0; j < k; j++)
  437.             switch (niz[i][j]) {
  438.                 {
  439.             case 'A':
  440.                 niz2[i][j] = 5;
  441.                 break;
  442.             case 'B':
  443.                 niz2[i][j] = 4;
  444.                 break;
  445.             case 'C':
  446.                 niz2[i][j] = 3;
  447.                 break;
  448.             case 'D':
  449.                 niz2[i][j] = 2;
  450.                 break;
  451.             case 'E':
  452.                 niz2[i][j] = 1;
  453.                 break;
  454.                 }
  455.             }
  456.     }
  457.  
  458. }
  459.  
  460.  
  461.  
  462.  
  463. /*Napisati program koji će korisniku omogućiti unos pozitivnih neparnih cijelih brojeva za koje će se ispitivati da li im je prva cifra
  464. parna (npr. 4993 ili 4999). Ukoliko je zadovoljen uslov broj se smješta u niz od 10 elemenata. Unos se ponavlja dok se ne popuni niz od
  465. 10 elemenata koji zadovoljavaju uslov unosa. Unos se prekida ukoliko korisnik unese vrijednost 0 te se i izvršenje program završava uz
  466. poruku „Forsirani prekid“. Zatim se za sve elementi niza ispituje da li je broj prost i da li ima samo jednu parnu cifru. Ako  broj nije
  467. prost i ako ima više od jedne parne cifre, broj se izbacuje iz niza tako što se njegova vrijednost mijenja sa 0. Na kraju niz sortirati
  468. od najvećeg ka najmanjem broju te ga ispisati. Koristiti odvojene funkcije za provjeru da li je broj prost, za sortiranje i ispis niza. */
  469.  
  470.  
  471. const int v = 10;
  472.  
  473. void unos(int[], int);
  474. bool prost(int);
  475. bool jednaParna(int);
  476. bool prvaParna(int);
  477. void ispis(int[], int);
  478. void promjena(int[], int);
  479. void sort(int[], int);
  480.  
  481. int main() {
  482.     int niz[v] = {};
  483.  
  484.     unos(niz, v);
  485.     ispis(niz, v);
  486.     promjena(niz, v);
  487.     ispis(niz, v);
  488.     sort(niz, v);
  489.     ispis(niz, v);
  490.  
  491.     system("pause>0");
  492.     return 0;
  493. }
  494.  
  495. void unos(int niz[], int v) {
  496.     cout << "Unesite clanove niza : ";
  497.     for (int i = 0; i < v; i++) {
  498.         cin >> niz[i];
  499.         if (niz[i] == 0)
  500.         {
  501.             cout << "Forsirani prekid " << endl;
  502.             return;
  503.         }
  504.         if (niz[i] % 2 == 0 || prvaParna(niz[i]) || niz[i] < 0)
  505.             i--;   
  506.     }
  507. }
  508.  
  509. bool prvaParna(int x) {
  510.     int brojCifri = 0, kopija = x, prva;
  511.     do {
  512.         brojCifri++;
  513.         kopija /= 10;
  514.     } while (kopija > 0);
  515.     prva = x / pow(10, brojCifri - 1);
  516.     if (prva % 2 == 0)
  517.         return false;
  518.     else
  519.         return true;
  520. }
  521.  
  522. bool prost(int x) {
  523.     for (int i = 2; i <= x / 2; i++) {
  524.         if (x%i == 0) {
  525.             return false;
  526.         }
  527.     }
  528.     return true;
  529. }
  530.  
  531. bool jednaParna(int x) {
  532.     int brojacParnih = 0, cifra;
  533.     do {
  534.         cifra = x % 10;
  535.         if (x % 2 == 0)
  536.             return false;
  537.         x /= 10;
  538.     } while (x > 10);
  539.  
  540.     return true;
  541. }
  542.  
  543. void ispis(int niz[], int v) {
  544.     for (int i = 0; i < v; i++)
  545.         cout << niz[i] << " ";
  546.     cout << endl;
  547. }
  548.  
  549. void promjena(int niz[], int v) {
  550.     for (int i = 0; i < v; i++) {
  551.         if (!(jednaParna(niz[i]) && prost(niz[i])))
  552.             niz[i] = 0;    
  553.            
  554.     }
  555. }
  556.  
  557. void sort(int niz[], int v) {
  558.     bool promjena;
  559.     do {
  560.         promjena = false;
  561.         for (int i = 1; i < v; i++){
  562.             if (niz[i - 1] < niz[i]) {
  563.                 swap(niz[i - 1], niz[i]);
  564.                 promjena = true;
  565.             }
  566.  
  567.         }
  568.     } while (promjena);
  569. }
Add Comment
Please, Sign In to add comment