Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- #include <cmath>
- using namespace std;
- /*Poštujući sve faze procesa programiranje, napisati program će odrediti i ispisati zadnje tri cifre broja x^n. Unos brojeva x i n
- vršiti u glavnoj funkciji uz uslov 10<x<100 i 2<n<10, a funkciju za određivanje zadnje tri cifre napraviti zasebno.
- Primjer izlaza:
- Unesite brojeve x i n: 64 i 5
- Zadnje tri cifre broja su: 824
- */
- void ZadnjeTri(int, int);
- int main() {
- int x, n;
- cout << "Unesite broj x : ";
- do
- cin >> x;
- while (x < 10 || x>100);
- cout << "Unesite n : ";
- do
- cin >> n;
- while (n < 2 || n > 10);
- ZadnjeTri(x, n);
- system("pause>0");
- return 0;
- }
- void ZadnjeTri(int x, int n) {
- int broj,cifra=0;
- broj = pow(x, n);
- for (int i = 0; i < 3; i++) {
- cifra += broj % 10 * pow(10, i);
- broj /= 10;
- }
- cout << "Zadnje 3 cifre : " << cifra;
- }
- /*Napisati program koji će učitati prirodni broj n ≤ 10, a zatim n prirodnih trocifrenih brojeva koje treba pospremiti u odgovarajući niz.
- Taj niz brojeva treba sortirati uzlazno po srednjoj cifri. Nakon sortiranja treba ispisati dobiveni niz. Za sortiranje koristiti zasebnu
- funkciju kojoj se proslijeđuje nesortiran niz.*/
- void unos(int[], int);
- void sort(int[], int);
- void ispis(int[], int);
- int main() {
- int niz[10], n;
- cout << "Unesite prirodni broj n : ";
- do
- cin >> n;
- while (n < 1 || n >10);
- unos(niz, n);
- sort(niz, n);
- ispis(niz, n);
- system("pause>0");
- return 0;
- }
- void unos(int niz[], int v) {
- cout << "Unesite clanove niza : ";
- for (int i = 0; i < v; i++){
- cin >> niz[i];
- if (niz[i] < 100 || niz[i] > 999)
- i--;
- }
- }
- void sort(int niz[], int v) {
- int broj, cifra1, cifra2, temp;
- bool provjera;
- do{
- provjera = false;
- for (int i = 1; i < v; i++) {
- broj = niz[i-1];
- cifra1 = (broj / 10) % 10;
- broj = niz[i];
- cifra2 = (broj / 10) % 10;
- if (cifra1 > cifra2){
- temp = niz[i];
- niz[i] = niz[i - 1];
- niz[i - 1] = temp;
- provjera = true;
- }
- }
- } while (provjera);
- }
- void ispis(int niz[], int v) {
- cout << "Niz nakon sortiranja : " << endl;
- for (int i = 0; i < v; i++)
- cout << niz[i] << " ";
- }
- /*Napisati program koji će omogućiti:
- • Unos 2D niza od 10x10 elemanata vodeći računa da su svi elementi dvocifreni (ukoliko unos nekog elementa ne zadovoljava uslov,
- ponavljati unos tog elementa dok se ne zadovolji uslov) – Koristiti funkciju unos
- • Izvršiti transpoziciju niza tako što će se zamjeniti redovi i kolone – Koristiti funkciju transpose, a zatim na osnovu izmijenjenog
- 2D niza:
- • Izračunati aritmetičku sredinu svih prostih brojeva ispod sporedne dijagonale – Koristiti dvije funkcije:
- aritmeticka i prost_broj (pozivati će se iz funkcije aritmeticka)
- • Napisati funkciju simpatican koja će provjeriti da li su brojevi iznad sporedne dijagonale simpatični*.
- Obavezno koristiti navedene funkcije, a parametre i eventualne povratne vrijednosti definisati prema potrebi.
- U main() funkciji napisati testni program koji će omogućiti izvršenje svih funkcija navedenim redoslijedom.
- Transpozicija 2D niza od 4x4 elementa
- Pomoć: Broj je simpatičan ukoliko je zbir cifara njegovog kvadrata jednak kvadratu zbira njegovih cifara.
- Broj 21 je simpatičan jer je s(421) = s(21) * s(21) pri čemu je s(n) zbir cifara prirodnog broja n.
- */
- const int v = 2;
- void unos(int[][v]);
- void transpose(int[][v]);
- void ispis(int[][v]);
- bool prost(int);
- void art(int[][v]);
- void simpaticni(int[][v]);
- bool simpProvjera(int);
- int Zbir(int);
- int main() {
- int niz[v][v];
- unos(niz);
- ispis(niz);
- transpose(niz);
- ispis(niz);
- art(niz);
- simpaticni(niz);
- system("pause>0");
- return 0;
- }
- void unos(int niz[][v]) {
- cout << "Unesite clanove niza : ";
- for (int i = 0; i < v; i++) {
- for (int j = 0; j < v; j++) {
- cin >> niz[i][j];
- if (niz[i][j] < 10 || niz[i][j] > 99)
- j--;
- }
- }
- }
- void transpose(int niz[][v]) {
- int niz2[v][v];
- for (int i = 0; i < v; i++) {
- for (int j = 0; j < v; j++) {
- niz2[j][i] = niz[i][j];
- }
- }
- for (int i = 0; i < v; i++) {
- for (int j = 0; j < v; j++) {
- niz[i][j] = niz2[i][j];
- }
- }
- }
- void ispis(int niz[][v]){
- cout << "Matrica : " << endl;
- for (int i = 0; i < v; i++) {
- for (int j = 0; j < v; j++) {
- cout << niz[i][j] << " ";
- }
- cout << endl;
- }
- }
- void art(int niz[][v]) {
- float art = 0;
- int brojac = 0;
- for (int i = 0; i < v; i++) {
- for (int j = 0; j < v; j++) {
- if (i + j >= v) {
- if (prost(niz[i][j])){
- art += niz[i][j];
- brojac++;
- }
- }
- }
- }
- cout << "Artimeticka sredina prostih brojeva ispod sporedne dijagonale je : " << art / brojac << endl;
- }
- bool prost(int x) {
- for (int i = 2; i <= x / 2; i++) {
- if (x%i == 0) {
- return false;
- }
- }
- return true;
- }
- void simpaticni(int niz[][v]) {
- int simp[10], brojac = 0;
- for (int i = 0; i < v; i++) {
- for (int j = 0; j < v; j++) {
- if (i + j < v - 1) {
- if (simpProvjera(niz[i][j])) {
- simp[brojac++] = niz[i][j];
- }
- }
- }
- }
- cout << "Simpaticni brojevi iznad sporedne dijagonale su : ";
- for (int i = 0; i < brojac; i++)
- cout << simp[i];
- }
- bool simpProvjera(int x) {
- if (Zbir(x*x) == Zbir(x*Zbir(x)))
- return true;
- else
- return false;
- }
- int Zbir(int x) {
- int suma = 0, cifra;
- while (x > 0) {
- cifra = x % 10;
- suma += cifra;
- x /= 10;
- }
- return suma;
- }
- /*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
- bilo koji broj izvan datog raspona korisnik ponavlja unos tog elementa niza.
- 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
- za prekid. Nakon toga, program računa aritmetičku sredinu unesenih brojeva, te iz niza izbacuje sve one elemente čija je udaljenost
- od aritmetičke sredine veća od 10, na način da se sačuva redoslijed dodavanja elemenata. Implementaciju uraditi upotrebom sljedećih funkcija:
- • void unos (double[], int, int&); gdje je treći parametar stvarna veličina niza nakon unosa;
- • double aritmeticka_sredina(double[], int);
- • void ukloni(double[], int, double, int&); gdje je drugi parametar aritmetička sredina, a posljednji veličina niza nakon uklanjanja elemenata.
- U glavnom programu testirati dostupne funkcije, te obaviti ispis elemenata niza nakon uklanjanja vodeći se datim primjerom izlaza.
- */
- const int v = 20;
- void unos(double[], int, int&);
- double aritmeticka_sredina(double[], int);
- void ukloni(double[], int, double, int&);
- void ispis(double[], int);
- int main() {
- double niz[v], ar;
- int sv = 0;
- unos(niz, v, sv);
- ar = aritmeticka_sredina(niz, sv);
- cout << "Artimeticka sredina je : " << ar << endl;
- ispis(niz, sv);
- ukloni(niz, 20, ar, sv);
- cout << "Velicina novog niza je : " << sv << endl;
- ispis(niz, sv);
- system("pause>0");
- return 0;
- }
- void unos(double niz[], int v, int &sv) {
- cout << "Unesite clanove niza : " << endl;
- for (int i = 0; i < v; i++) {
- do
- cin >> niz[i];
- while (niz[i] < -100 || niz[i]>100);
- if (niz[i] == 0)
- return;
- sv++;
- }
- }
- double aritmeticka_sredina(double niz[], int sv) {
- double as = 0;
- for (int i = 0; i < sv; i++)
- as += niz[i];
- return as / sv;
- }
- void ukloni(double niz[], int s, double ar, int &sv) {
- unsigned int l = 0, removed = 0;
- for (int i = 0; i < sv; i++) {
- if (ar - niz[i] < 10 && niz[i] - ar < 10)
- niz[l++] = niz[i];
- else
- removed++;
- }
- sv -= removed;
- }
- void ispis(double niz[], int v) {
- for (int i = 0; i < v; i++)
- cout << niz[i] << " ";
- cout << endl;
- }
- /*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:
- • 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.
- • 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.
- 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.
- • 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.
- 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“.*/
- //Nije zavrsen
- const int r = 10, k = 5;
- void evaluiraj(char[], int);
- void ispis(char[][k]);
- double najkomp(int[][k], int&);
- void konverzija(char[][k], int[][k]);
- void ispisk(int[][k], int);
- int main() {
- char niz[r][k] = {};
- int niz2[r][k] = {};
- int izbor, iz2, najK;
- do {
- cout << "Kojeg studenta zelite evaluirati ? " << endl;
- do {
- cin >> izbor;
- } while ((izbor > 10 || izbor < 1) || niz[izbor - 1][0] != 0);
- evaluiraj(niz[izbor - 1], k);
- cout << "Da li zelite jos evaluacija ? (0 za ne)" << endl;
- cin >> iz2;
- } while (iz2 != 0);
- konverzija(niz, niz2);
- ispis(niz);
- najkomp(niz2, najK);
- ispisk(niz2, najK);
- cout << "Najbolji prosjek ima kompetencija : " << najK + 1;
- system("pause>0");
- return 0;
- }
- void ispisk(int niz[][k], int najK) {
- cout << "Prosjek naj kompetencije je : " << najkomp(niz, najK) << endl;
- }
- double najkomp(int niz[][k], int &najK) {
- int naj = 0, temp = 0, brojac = 0;
- for (int i = 0; i < k; i++)
- {
- brojac = 0;
- for (int j = 0; j < r; j++)
- {
- temp += niz[j][i];
- if (niz[j][i] != 0)
- brojac++;
- }
- if (naj < temp) {
- naj = temp;
- najK = i;
- }
- temp = 0;
- }
- return (naj / brojac);
- }
- void evaluiraj(char niz[], int k) {
- for (int i = 0; i < k; i++) {
- cout << "Unesite evaluaciju za " << i + 1 << " : " << endl;
- do {
- cin >> niz[i];
- } while (!(niz[i] == 'A' || niz[i] == 'B' || niz[i] == 'C' || niz[i] == 'D' || niz[i] == 'E'));
- }
- }
- void ispis(char niz[][k]) {
- for (int i = 0; i < r; i++) {
- for (int j = 0; j < k; j++) {
- cout << niz[i][j] << " ";
- }
- cout << endl;
- if (i == 4)
- cout << endl;
- }
- }
- void konverzija(char niz[][k], int niz2[][k]) {
- for (int i = 0; i < r; i++) {
- for (int j = 0; j < k; j++)
- switch (niz[i][j]) {
- {
- case 'A':
- niz2[i][j] = 5;
- break;
- case 'B':
- niz2[i][j] = 4;
- break;
- case 'C':
- niz2[i][j] = 3;
- break;
- case 'D':
- niz2[i][j] = 2;
- break;
- case 'E':
- niz2[i][j] = 1;
- break;
- }
- }
- }
- }
- /*Napisati program koji će korisniku omogućiti unos pozitivnih neparnih cijelih brojeva za koje će se ispitivati da li im je prva cifra
- 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
- 10 elemenata koji zadovoljavaju uslov unosa. Unos se prekida ukoliko korisnik unese vrijednost 0 te se i izvršenje program završava uz
- 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
- 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
- od najvećeg ka najmanjem broju te ga ispisati. Koristiti odvojene funkcije za provjeru da li je broj prost, za sortiranje i ispis niza. */
- const int v = 10;
- void unos(int[], int);
- bool prost(int);
- bool jednaParna(int);
- bool prvaParna(int);
- void ispis(int[], int);
- void promjena(int[], int);
- void sort(int[], int);
- int main() {
- int niz[v] = {};
- unos(niz, v);
- ispis(niz, v);
- promjena(niz, v);
- ispis(niz, v);
- sort(niz, v);
- ispis(niz, v);
- system("pause>0");
- return 0;
- }
- void unos(int niz[], int v) {
- cout << "Unesite clanove niza : ";
- for (int i = 0; i < v; i++) {
- cin >> niz[i];
- if (niz[i] == 0)
- {
- cout << "Forsirani prekid " << endl;
- return;
- }
- if (niz[i] % 2 == 0 || prvaParna(niz[i]) || niz[i] < 0)
- i--;
- }
- }
- bool prvaParna(int x) {
- int brojCifri = 0, kopija = x, prva;
- do {
- brojCifri++;
- kopija /= 10;
- } while (kopija > 0);
- prva = x / pow(10, brojCifri - 1);
- if (prva % 2 == 0)
- return false;
- else
- return true;
- }
- bool prost(int x) {
- for (int i = 2; i <= x / 2; i++) {
- if (x%i == 0) {
- return false;
- }
- }
- return true;
- }
- bool jednaParna(int x) {
- int brojacParnih = 0, cifra;
- do {
- cifra = x % 10;
- if (x % 2 == 0)
- return false;
- x /= 10;
- } while (x > 10);
- return true;
- }
- void ispis(int niz[], int v) {
- for (int i = 0; i < v; i++)
- cout << niz[i] << " ";
- cout << endl;
- }
- void promjena(int niz[], int v) {
- for (int i = 0; i < v; i++) {
- if (!(jednaParna(niz[i]) && prost(niz[i])))
- niz[i] = 0;
- }
- }
- void sort(int niz[], int v) {
- bool promjena;
- do {
- promjena = false;
- for (int i = 1; i < v; i++){
- if (niz[i - 1] < niz[i]) {
- swap(niz[i - 1], niz[i]);
- promjena = true;
- }
- }
- } while (promjena);
- }
Add Comment
Please, Sign In to add comment