Advertisement
and3lko

vjezba2

Jan 20th, 2020
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.50 KB | None | 0 0
  1. // vjezbazaIntegralni3.cpp : This file contains the 'main' function. Program execution begins and ends there.
  2. //
  3.  
  4. #include <iostream>
  5. #include <ctime>
  6. #include <Windows.h>
  7. #include <memory>
  8. #include <iomanip>
  9.  
  10. using namespace std;
  11.  
  12. void najveciMoguciBroj(short int);
  13.  
  14.  
  15. //zadatak1
  16. short zadnjeTriCifre(short ,short );
  17.  
  18. //zadatak2
  19. void unos(int*, short);
  20. void ispis(int*, short);
  21. void sortiranjeSrednjaCifra(int*, short);
  22.  
  23. //zadatak3
  24. void dealokacija(short**, short);
  25. void unos(short**, short);
  26. void ispis(short**, short);
  27. void transpose(short**, short);
  28. bool prost(short,short);
  29. float aritmeticka(short**, short);
  30.  
  31. //zadatak4
  32. short brojCifri(short);
  33. short sumaCifri(short);
  34. short obrnuteCifre(short);
  35. void ispisBrojeva(short, short);
  36.  
  37. //zadatak5
  38. void unos(char*, short);
  39. void ispis(char*, short);
  40. void sortiranje(char*, short);
  41.  
  42. //zadtak6.
  43. void sortiranjeRastuce(short*, short);
  44. void sortiranjeOpadajuce(short*, short);
  45. void ispis(short*, short);
  46.  
  47. //zadatak7
  48. void dealokacija(float**, int);
  49. int const d = 7;
  50. float stvarnaMjerenja[d] = { 25.5,26.8,21,32,35.6,36,33.5 };
  51. void unos(float**, short, short);
  52. float izracunajUspjesnost(float*, short);
  53. int pronadjiNajuspjesnijeg(float**, short, short);
  54. int pronadjiDanSaNajnizomPrognozom(float**, short, short);
  55.  
  56. int main()
  57. {
  58.     //1.zadatak
  59.     /*short int x, n;
  60.     do
  61.     {
  62.         cin >> x;
  63.         if (x < 10 || x> 100)
  64.             cout << "Pogresan unos x!" << endl;
  65.     } while (x < 10 || x> 100);
  66.     do
  67.     {
  68.         cin >> n;
  69.         if (n < 2 || n > 10)
  70.             cout << "Pogresan unos n !" << endl;
  71.  
  72.     } while (n < 2 || n > 10);
  73.  
  74.     cout << "Zadnje tri cifre broja su : " << zadnjeTriCifre(x, n) << endl;
  75.     */
  76.  
  77.     //2.zadatak
  78.     /*short duzina;
  79.     cout << "Unesite duzinu niza:";
  80.     cin >> duzina;
  81.     int* pok = new int[duzina];
  82.     unos(pok, duzina);
  83.     ispis(pok, duzina);
  84.     sortiranjeSrednjaCifra(pok, duzina);
  85.     cout << "Sortiran niz po srednjoj cifri: " << endl;
  86.     ispis(pok, duzina);
  87.  
  88.     delete[]pok;
  89.     pok = nullptr;*/
  90.  
  91.     //3.zadatak
  92.     /*short duzina = 10;
  93.     short** matrica = new short* [duzina];
  94.  
  95.     for (size_t i = 0; i < duzina; i++)
  96.     {
  97.         matrica[i] = new short[duzina];
  98.     }
  99.     unos(matrica, duzina);
  100.     ispis(matrica, duzina);
  101.     transpose(matrica, duzina);
  102.     ispis(matrica, duzina);
  103.     cout << "Aritmeticka sredina svih prosti brojeva ispid sporedne dijagonale iznosi: " << setiosflags(ios::fixed) << setprecision(2) <<  aritmeticka(matrica, duzina) << endl;
  104.  
  105.     dealokacija(matrica, duzina);*/
  106.  
  107.     //zadatak4
  108.     /*short int x, y;
  109.     cout << "Unesite x :";
  110.     do
  111.     {
  112.         cin >> x;
  113.         if (x < 10 || x > 5000)
  114.             cout << "Pogresan unos x !" << endl;
  115.     } while (x < 10 || x > 5000);
  116.  
  117.     cout << "Unesite y: ";
  118.     do
  119.     {
  120.         cin >> y;
  121.         if (y < 10 || y > 5000)
  122.             cout << "Pogresan unos y !" << endl;
  123.     } while (y< 10 || y > 5000);
  124.  
  125.     short int temp;
  126.     if (x > y)
  127.     {
  128.         temp = x;
  129.         x = y;
  130.         y = x;
  131.     }
  132.  
  133.     ispisBrojeva(x, y);*/
  134.  
  135.     //zadatak5
  136.     /*short duzina = 6;
  137.     char* pok = new char[duzina];
  138.     unos(pok, duzina);
  139.     ispis(pok, duzina);
  140.  
  141.     delete[]pok;
  142.     pok = nullptr;*/
  143.  
  144.     //zadatak6
  145.     /*const short int duzina = 9;
  146.     short int* pok = nullptr;
  147.     short int niz[duzina] = { 12,2,3,0,45,6,98,-9,-10 };
  148.     pok = niz;
  149.     char odabir;
  150.     cout << "Kako zelite sorirati niz(1 ili 2): " << endl;
  151.     cout << "1. u opadajucem poretku" << endl;
  152.     cout << "2. u rastucem poretku" << endl;
  153.     cin >> odabir;
  154.     switch (odabir)
  155.     {
  156.     case '1':
  157.         sortiranjeOpadajuce(pok, duzina);
  158.         cout << "Rezultirajuci niz: ";
  159.         ispis(niz, duzina);
  160.         break;
  161.     case '2':
  162.         sortiranjeRastuce(pok, duzina);
  163.         cout << "Rezultirajuci niz: ";
  164.         ispis(niz, duzina);
  165.         break;
  166.     default:
  167.         cout << "Pogresan unos!" << endl;
  168.         break;
  169.     }
  170.     pok = nullptr;*/
  171.  
  172.  
  173.  
  174.     short int redovi = 2, kolone = 7;
  175.     float** matrica = new float*[redovi];
  176.     for (size_t i = 0; i < redovi; i++)
  177.     {
  178.         matrica[i] = new float[kolone];
  179.     }
  180.     unos(matrica, redovi, kolone);
  181.     for (size_t i = 0; i < redovi; i++)
  182.     {
  183.         cout << "Prosjek uspjesnosti za " << i + 1 <<
  184.             " Meterologa iznosi : " << setiosflags(ios::fixed) << setprecision(0) << izracunajUspjesnost(matrica[i], kolone) << " %" << endl;
  185.     }
  186.  
  187.     int najUspjesniji = pronadjiNajuspjesnijeg(matrica, redovi, kolone);
  188.     cout << "Najuspjesniji je meterolog " << najUspjesniji + 1 << endl;
  189.  
  190.     cout << "Dan s najnizom temparaturom je : " << pronadjiDanSaNajnizomPrognozom(matrica, redovi, kolone) + 1 << endl;
  191.     dealokacija(matrica, redovi);
  192.     delete[]matrica;
  193.     matrica = nullptr;
  194.  
  195.     system("pause>0");
  196.     return 0;
  197. }
  198. void najveciMoguciBroj(short int broj)
  199. {
  200.     short int cifra1, cifra2, cifra3,
  201.         najveca,srednja,najmanja,max;
  202.    
  203.     cifra1 = (broj / 100) % 1000;
  204.     cifra2 = (broj / 10) % 10;
  205.     cifra3 = broj % 10;
  206.  
  207.     max = broj;
  208.     if (cifra1 * 100 + cifra2 * 10 + cifra3 > max)
  209.         max = cifra1 * 100 + cifra2 * 10 + cifra3;
  210.     if (cifra1 * 100 + cifra3 * 10 + cifra2 > max)
  211.         max = cifra1 * 100 + cifra3 * 10 + cifra2;
  212.     if (cifra2 * 100 + cifra1 * 10 + cifra3 > max)
  213.         max = cifra2 * 100 + cifra1 * 10 + cifra3;
  214.     if (cifra2 * 100 + cifra3 * 10 + cifra1 > max)
  215.         max = cifra2 * 100 + cifra3 * 10 + cifra1;
  216.     if (cifra3 * 100 + cifra1 * 10 + cifra2 > max)
  217.         max = cifra3 * 100 + cifra1 * 10 + cifra2;
  218.     if (cifra3 * 100 + cifra2 * 10 + cifra1 > max)
  219.         max = cifra3 * 100 + cifra2 * 10 + cifra1;
  220.  
  221.  
  222.     cout << "Najveci moguci broj: " << max << endl;
  223. }
  224. short zadnjeTriCifre(short x, short n)
  225. {
  226.     long int naN = pow((double)x, n);
  227.  
  228.     short brojac = 0,brojac1=0,ostatak,noviBroj=0;
  229.    
  230.     while (brojac < 3)
  231.     {
  232.         ostatak = naN % 10;
  233.         noviBroj += ostatak * pow(10, brojac);
  234.         brojac++;
  235.         naN /= 10;
  236.     }
  237.     return noviBroj;
  238. }
  239. void unos(int* niz, short duzina)
  240. {
  241.     for (size_t i = 0; i < duzina; i++)
  242.     {
  243.         do
  244.         {
  245.             cout << "Unos [" << i << "]:";
  246.             cin >> niz[i];
  247.             if (niz[i] < 100 || niz[i] > 999)
  248.                 cout << "Pogresan unos!!!" << endl;
  249.         } while (niz[i] < 100 || niz[i] > 999);
  250.     }
  251. }
  252. void ispis(int* niz, short duzina)
  253. {
  254.     for (size_t i = 0; i < duzina; i++)
  255.     {
  256.         cout << setw(3) << "[" << i << "]:" << niz[i];
  257.     }
  258.     cout << endl;
  259. }
  260. void sortiranjeSrednjaCifra(int* niz, short duzina)
  261. {
  262.     int brojPromjena = duzina - 1;
  263.     bool promjena = true;
  264.     while (promjena)
  265.     {
  266.         promjena = false;
  267.         for (size_t i = 0; i < brojPromjena; i++)
  268.         {
  269.             short temp,srednja1,srednja2;
  270.             srednja1 = (niz[i] / 10) % 10;
  271.             srednja2 = (niz[i+1] / 10) % 10;
  272.             if (srednja1 > srednja2)
  273.             {
  274.                 temp = niz[i];
  275.                 niz[i] = niz[i + 1];
  276.                 niz[i + 1] = temp;
  277.                 promjena = true;
  278.             }
  279.            
  280.         }
  281.     }
  282. }
  283. void dealokacija(short** matrica, short duzina)
  284. {
  285.     for (size_t i = 0; i < duzina; i++)
  286.     {
  287.         delete[]matrica[i];
  288.     }
  289.     delete[]matrica;
  290.     matrica = nullptr;
  291. }
  292. void unos(short** matrica, short duzina)
  293. {
  294.     srand(time(0));
  295.     cout << "Unos matrice 10 x 10 " << endl;
  296.     for (size_t i = 0; i < duzina; i++)
  297.     {
  298.         for (size_t j = 0; j < duzina; j++)
  299.         {
  300.             do
  301.             {
  302.                 //cin >> matrica[i][j];
  303.                
  304.                 matrica[i][j] = rand() % (999 - 100 + 1) + 100;
  305.                 if (matrica[i][j] < 100 || matrica[i][j] > 1000)
  306.                     cout << "Pogresan unos !!! " << endl;
  307.  
  308.             } while (matrica[i][j] < 100 || matrica[i][j] > 1000);
  309.         }
  310.     }
  311. }
  312. void ispis(short** matrica, short duzina)
  313. {
  314.     cout <<"Ispis matrice "<< endl;
  315.  
  316.     for (size_t i = 0; i < duzina; i++)
  317.     {
  318.         for (size_t j = 0; j < duzina; j++)
  319.         {
  320.             cout << setw(3) << "[" << i << "][" << j << "]:" <<
  321.                 matrica[i][j];
  322.         }
  323.         cout << endl;
  324.     }
  325. }
  326. void transpose(short** matrica, short duzina)
  327. {
  328.     int temp;
  329.     for (size_t i = 0; i < duzina; i++)
  330.     {
  331.         for (size_t j = 0; j < i; j++)
  332.         {
  333.             temp = matrica[i][j];
  334.             matrica[i][j] = matrica[j][i];
  335.             matrica[j][i] = temp;
  336.         }
  337.     }
  338. }
  339. bool prost(short broj, short i = 2)
  340. {
  341.     if (broj <= 2)
  342.         return(broj == 2) ? true : false;
  343.     if (broj % i == 0)
  344.         return false;
  345.     if (i * i > broj)
  346.         return true;
  347.  
  348.     return prost(broj, i + 1);
  349. }
  350. float aritmeticka(short** matrica, short duzina)
  351. {
  352.     short brojac = 0;
  353.     float suma = 0;
  354.  
  355.     for (size_t i = 0; i < duzina; i++)
  356.     {
  357.         for (size_t j = 0; j < duzina; j++)
  358.         {
  359.             if (i + j > duzina - 1 && prost(matrica[i][j]))
  360.             {
  361.                 suma += matrica[i][j];
  362.                 brojac++;
  363.             }
  364.         }
  365.     }
  366.  
  367.     suma = suma / float(brojac);
  368.     return suma;
  369. }
  370. short brojCifri(short broj)
  371. {
  372.     /*short brojac = 0;
  373.     while (broj != 0)
  374.     {
  375.         brojac++;
  376.         broj /= 10;
  377.     }
  378.     return brojac;*/
  379.    
  380.         int brojac=0;
  381.  
  382.         if(broj==0)
  383.             return 0;
  384.         else
  385.             brojac++;
  386.         return brojac + brojCifri(broj / 10);
  387.    
  388.  
  389.    
  390. }
  391. short sumaCifri(short broj)
  392. {
  393.     int suma = 0,ostatak;
  394.  
  395.     while (broj != 0)
  396.     {
  397.         ostatak = broj % 10;
  398.         suma += ostatak;
  399.         broj /= 10;
  400.     }
  401.     return suma;
  402. }
  403. short obrnuteCifre(short broj)
  404. {
  405.     short noviBroj = 0, ostatak, brojac = brojCifri(broj);
  406.  
  407.    
  408.     while (broj!=0)
  409.     {
  410.         ostatak = broj % 10;
  411.         noviBroj += ostatak * pow(10.,brojac-1);
  412.         brojac--;
  413.         broj /= 10;
  414.     }
  415.     return noviBroj;
  416. }
  417. void ispisBrojeva(short x, short y)
  418. {
  419.     cout << "Brojevi koji ispunjavaju dati uslov: ";
  420.     for (size_t i = x; i < y; i++)
  421.     {
  422.        
  423.         if (obrnuteCifre(i) % sumaCifri(i) == 0)
  424.             cout << i << ",";
  425.     }
  426.     cout << endl;
  427. }
  428. void unos(char* niz, short duzina)
  429. {
  430.     for (size_t i = 0; i < duzina; i++)
  431.     {
  432.         cout << "Unesite veliko slovo ili broj: ";
  433.         do
  434.         {
  435.            
  436.             cin >> niz[i];
  437.             if ((niz[i] < 'A' || niz[i] > 'Z') && (niz[i] < '1' || niz[i] > '9'))
  438.                 cout << "Pogresan unos!!" << endl;
  439.             cin.ignore();
  440.         } while ((niz[i] < 'A' || niz[i] > 'Z') && (niz[i] < '1' || niz[i] > '9'));
  441.     }
  442. }
  443. void ispis(char* niz, short duzina)
  444. {
  445.     cout << "Elementi niza: ";
  446.     for (size_t i = 0; i < duzina; i++)
  447.     {
  448.         cout << setw(3) << niz[i];
  449.     }
  450. }
  451. void sortiranjeRastuce(short* niz, short duzina)
  452. {
  453.     short brojPromjena = duzina;
  454.     bool promejna = true;
  455.     while (promejna)
  456.     {
  457.         promejna = false;
  458.         for (size_t i = 0; i < brojPromjena; i++)
  459.         {
  460.             short temp;
  461.             if (niz[i] > niz[i + 1])
  462.             {
  463.                 temp = niz[i];
  464.                 niz[i] = niz[i + 1];
  465.                 niz[i + 1] = temp;
  466.                 promejna = true;
  467.             }
  468.            
  469.         }
  470.     }
  471. }
  472. void sortiranjeOpadajuce(short* niz, short duzina)
  473. {
  474.     short brojPromjena = duzina;
  475.     bool promejna = true;
  476.     while (promejna)
  477.     {
  478.         promejna = false;
  479.         for (size_t i = 0; i < brojPromjena; i++)
  480.         {
  481.             short temp;
  482.             if (niz[i] < niz[i + 1])
  483.             {
  484.                 temp = niz[i];
  485.                 niz[i] = niz[i + 1];
  486.                 niz[i + 1] = temp;
  487.                 promejna = true;
  488.             }
  489.  
  490.         }
  491.     }
  492. }
  493. void ispis(short* niz, short duzina)
  494. {
  495.     for (size_t i = 0; i < duzina; i++)
  496.     {
  497.         cout << setw(4) << niz[i];
  498.     }
  499. }
  500. void dealokacija(float** matrica, int redovi)
  501. {
  502.     for (size_t i = 0; i < redovi; i++)
  503.     {
  504.         delete[]matrica[i];
  505.     }
  506. }
  507. void unos(float** matrica, short redovi, short kolone)
  508. {
  509.     for (size_t i = 0; i < redovi; i++)
  510.     {
  511.         cout << "Unesite temparature za " << i + 1 << ". meterologa: " << endl;
  512.         for (size_t j = 0; j < kolone; j++)
  513.         {
  514.             cout << "Unesite temparature za " << j + 1 << ". dan: ";
  515.             do
  516.             {
  517.  
  518.                 cin >> matrica[i][j];
  519.                 if (matrica[i][j] < -20 || matrica[i][j]>50)
  520.                     cout << "Pogresan unos! " << endl;
  521.  
  522.             } while (matrica[i][j] < -20 || matrica[i][j]>50);
  523.         }
  524.     }
  525. }
  526. float izracunajUspjesnost(float* matrica, short kolone)
  527. {
  528.     short brojac = 0;
  529.     float prosjek = 0;
  530.  
  531.    
  532.         for (size_t j = 0; j < kolone; j++)
  533.         {
  534.             prosjek = stvarnaMjerenja[j] - matrica[j];
  535.             // prosjek mora biti izmedu -5 i 5
  536.             if (prosjek > -5 && prosjek < 5)
  537.                 brojac++;
  538.            
  539.            
  540.         }
  541.     return ((float(brojac) / 7.)) * 100;
  542. }
  543. int pronadjiNajuspjesnijeg(float** matrica, short redovi, short kolone)
  544. {
  545.     int index = 0;
  546.     float najUpsjesniji = 0;
  547.     for (size_t i = 0; i < redovi; i++)
  548.     {
  549.         if (izracunajUspjesnost(matrica[i], kolone) > najUpsjesniji)
  550.         {
  551.             najUpsjesniji = izracunajUspjesnost(matrica[i], kolone);
  552.             index = i;
  553.         }
  554.     }
  555.     return index;
  556. }
  557.  
  558. int pronadjiDanSaNajnizomPrognozom(float** matrica, short redovi, short kolone)
  559. {
  560.    
  561.     int index = 0;
  562.     float najnizi= FLT_MAX;
  563.     for (size_t j = 0; j < kolone; j++)
  564.     {
  565.         float dan = 0;
  566.         for (size_t i = 0; i < redovi; i++)
  567.         {
  568.             dan += matrica[i][j];
  569.         }
  570.         if (dan < najnizi)
  571.         {
  572.             najnizi = dan;
  573.             index = j;
  574.         }
  575.     }
  576.     return index;
  577. }
  578. // Run program: Ctrl + F5 or Debug > Start Without Debugging menu
  579. // Debug program: F5 or Debug > Start Debugging menu
  580.  
  581. // Tips for Getting Started:
  582. //   1. Use the Solution Explorer window to add/manage files
  583. //   2. Use the Team Explorer window to connect to source control
  584. //   3. Use the Output window to see build output and other messages
  585. //   4. Use the Error List window to view errors
  586. //   5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
  587. //   6. In the future, to open this project again, go to File > Open > Project and select the .sln file
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement