ioana_martin98

Untitled

Apr 9th, 2022
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.43 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. /*
  5. * probleme in rezolvarea scrisa de tine:
  6. 1. reinitializai k=0 pentru fiecare element din vector
  7. * ex: v = 4 4 4 4
  8. * i=0: k=0, v[1]==v[2] => k=1;
  9. * i=1: k=0, v[2]==v[3] => k=1; etc.
  10. * => k trebuie initializat inaintea for-ului pentru fiecare parcurgere
  11. 2. mergeai cu i=1,n si comparai in if un v[i-1] cu v[i]. pe pozitia i=1, comparai un v[0] cu v[1], v[0] nefiind o valoare citita
  12. de tine (citirea o aveai cu i=1,n). am ales sa compar mai degraba orice element cu vecinul din dreapta, asa cum facem si la sortari, si sa merg cu i=1,n-1
  13.     * hint: o alta optiune ar fi sa punem noi manual pe v[0] valoarea lui v[1], si sa mergem cum ai pus initial, cu i=1,n, if(v[i-1]==v[i]),
  14.     * si conditia de sir const/cresc/etc. ar fi k==n
  15. 3. fiecare tip de sir la tine nu il excludea pe celalalt, a se observa ca eu am pus totul intr-o structura if else if else if ...
  16.     ruland programul tau pe un exemplu am vazut ca imi afisa ca e si constant si crescator si neordonat, ceea ce ar fi imposibil
  17.  
  18. Explicatie rezolvare:
  19.     pentru fiecare parcurgere am mers cu i=1,n-1, am comparat elementul v[i] cu v[i+1] (vecinul din dreapta) si am numarat elementele care respectau conditia
  20.     comparand cu elementul din dreapta, parcurgeam pana la penultimul element care era comparat cu ultimul element din vector.
  21.     la final, daca toate elementele respectau conditia, k-ul era n-1, deoarece nu intram decat de n-1 ori sa verific elementele, ultimul intrand
  22.     in verificarea penultimului element (ex. 10 11 12 13 14, parcurg cu i=1,4, voi compara 10 cu 11, 11 cu 12, 12 cu 13, 13 cu 14. cu 4 pasi compar toate 5 elem
  23. */
  24.  
  25. int main()
  26. {
  27.     int n, v[1001], i, k;
  28.     cin >> n;
  29.     for (i = 1; i <= n; i++)
  30.         cin >> v[i];
  31.     //vom numara cate elemente sunt egale cu vecinul din dreapta, daca sunt n-1 => sir constant
  32.     k = 0; //initializam contorul doar inainte sa intram in parcurgere
  33.     for (i = 1; i <= n - 1; i++)
  34.     {
  35.         //pentru fiecare element, verificam daca este egal cu vecinul din dreapta
  36.         if (v[i] == v[i + 1])
  37.             k++;
  38.     }
  39.     if (k == n - 1)
  40.         cout << "sir constant";
  41.     else
  42.     {
  43.         //vom numara cate elemente sunt mai mari STRICT decat vecinul din dreapta, daca sunt n-1 => sir strict crescator
  44.         k = 0; //la fel, initializam doar inainte de parcurgere
  45.         for (i = 1; i <= n - 1; i++)
  46.         {
  47.             //pentru fiecare element, verificam daca este mai mic STRICT decat vecinul din dreapta
  48.             if (v[i] < v[i + 1])
  49.                 k++;
  50.         }
  51.         if (k == n - 1)
  52.             cout << "sir strict crescator";
  53.         else
  54.         {
  55.             //vom numara cate elemente sunt mai mici sau egale decat vecinul din dreapta, daca sunt n-1 => sir crescator (nestrict)
  56.             k = 0;
  57.             for (i = 1; i <= n - 1; i++)
  58.             {
  59.                 if (v[i] <= v[i + 1])
  60.                     k++;
  61.             }
  62.  
  63.             if (k == n - 1)
  64.                 cout << "sir crescator";
  65.             else
  66.             {
  67.                 //vom numara cate elemente sunt mai mari STRICT decat vecinul din dreapta, daca sunt n-1 => sir strict descrescator
  68.                 k = 0;
  69.                 for (i = 1; i <= n - 1; i++)
  70.                 {
  71.                     if (v[i] > v[i + 1])
  72.                         k++;
  73.                 }
  74.                 if (k == n - 1)
  75.                     cout << "sir strict descrescator";
  76.                 else
  77.                 {
  78.                     //vom numara cate elemente sunt mai mari sau egale decat vecinul din dreapta, daca sunt n-1 => sir descrescator (nestrict)
  79.                     k = 0;
  80.                     for (i = 1; i <= n - 1; i++)
  81.                         if (v[i] >= v[i + 1])
  82.                             k++;
  83.                     if (k == n - 1)
  84.                         cout << "sir descrescator";
  85.                     else
  86.                         //daca nu respecta nicio alta regula, este neordonat
  87.                         cout << "sir neordonat";
  88.                 }
  89.             }
  90.         }
  91.     }
  92. }
Add Comment
Please, Sign In to add comment