Advertisement
Guest User

drugi sa codinga

a guest
May 25th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.95 KB | None | 0 0
  1. pair<int,int> Unos(vector<vector<int>>&matrica) {   //funkcija vraca par broja redova i kolona
  2.     vector<int>temp;
  3.     int brojRedova = 0, brojKolona = 0, broj = 0;
  4.     do{
  5.         cout << "Unesite broj redova (>=3) -> ";
  6.         cin >> brojRedova;
  7.         cout << "Unesite broj kolona (>=3) -> ";
  8.         cin >> brojKolona;
  9.     } while (brojRedova<3 || brojKolona<3);
  10.     for (size_t i = 0; i < brojRedova; i++){
  11.         matrica.push_back(temp);
  12.         for (size_t j = 0; j < brojKolona; j++){
  13.             cout << "Unesite " << i * brojKolona + j + 1 << ". element matrice -> ";
  14.             cin >> broj;
  15.             matrica[i].push_back(broj);
  16.         }
  17.     }
  18.     return make_pair(brojRedova, brojKolona);
  19. }
  20. pair<int, int>PronadjiMaksimum(vector<vector<int>>matrica, int red, int kolona) {   //funkcija vraca par koji je pozicija lokalnog maxa
  21.     int pocetniRed, pocetnaKolona;
  22.     while (true){
  23.         pocetniRed = red;
  24.         pocetnaKolona = kolona; // u sljedecem djelu provjeravamo da li postoji susjedni clan,i ako postoji da li je veci od P
  25.         if (red-1>=0){
  26.             if (matrica[red-1][kolona]>matrica[red][kolona]){
  27.                 red--;
  28.                 continue;
  29.             }
  30.             if (kolona + 1<matrica[0].size()){
  31.                 if (matrica[red - 1][kolona + 1] > matrica[red][kolona]) {
  32.                     red--;
  33.                     kolona++;
  34.                     continue;
  35.                 }
  36.             }
  37.         }
  38.         if (kolona+1<matrica[0].size()){
  39.             if (matrica[red][kolona + 1] > matrica[red][kolona]) {
  40.                 kolona++;
  41.                 continue;
  42.             }
  43.         }
  44.         if (red + 1 < matrica.size()) {
  45.             if (kolona + 1<matrica[0].size()){
  46.                 if (matrica[red+1][kolona + 1] > matrica[red][kolona]) {
  47.                     red++;
  48.                     kolona++;
  49.                     continue;
  50.                 }
  51.             }
  52.             if (matrica[red + 1][kolona ] > matrica[red][kolona]) {
  53.                 red++;
  54.                 continue;
  55.             }
  56.             if (kolona - 1 >= 0) {
  57.                 if(matrica[red + 1][kolona-1]> matrica[red][kolona]) {
  58.                     red++;
  59.                     kolona--;
  60.                     continue;
  61.                 }
  62.             }
  63.         }
  64.         if (kolona - 1 >= 0) {
  65.             if (matrica[red][kolona - 1]> matrica[red][kolona]) {
  66.                 kolona--;
  67.                 continue;
  68.             }
  69.         }
  70.         if (red - 1 >= 0) {
  71.             if (kolona - 1 >= 0) {
  72.                 if (matrica[red - 1][kolona - 1] > matrica[red][kolona]) {
  73.                     kolona--;
  74.                     red--;
  75.                     continue;
  76.                 }
  77.             }
  78.         }
  79.         if(pocetniRed==red&&kolona==kolona)
  80.             return make_pair(red, kolona);
  81.     }
  82. }
  83. pair<int, int> UnesiPoziciju(int brojRedova,int brojKolona) {   // funkcija vraca red i kolonu pozicije
  84.     int red, kolona;
  85.     do{
  86.         cout << "Unesite broj reda pozicije -> ";
  87.         cin >> red;
  88.         cout << "Unesite broj kolone pozicije -> ";
  89.         cin >> kolona;
  90.     } while (red<0 || red >= brojRedova || kolona<0 || kolona >= brojKolona);
  91.     return make_pair(red, kolona);
  92. }
  93. int main() {
  94.     vector<vector<int>>matrica;
  95.     int brojRedova,brojKolona,red,kolona;
  96.     tie(brojRedova, brojKolona)=Unos(matrica);
  97.     tie(red, kolona) = UnesiPoziciju(brojRedova,brojKolona);    //unosimo p
  98.     tie(red, kolona) = PronadjiMaksimum(matrica, red, kolona);  //ponovno koristenje red i kolona za dobivanje pozicije maksimuma
  99.     cout << "Lokalni maksimum je -> "<<matrica[red][kolona]<<" (" << red << "," << kolona << ")" << endl;
  100.     system("pause>0");
  101.     return 0;
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement