Informatică, întrebare adresată de Niluco, 8 ani în urmă

Buna ! de ce primesc la asta 90 p ? nu imi dau seama ce am gresit
#290

Cerinţa
Se dă un şir cu n elemente, numere întregi. Să se verifice dacă elementele pare din şir sunt ordonate crescător.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale şirului, separate prin spaţii.

Date de ieşire
Programul afișează pe ecran mesajul DA, dacă elementele pare din şir sunt ordonate crescător, respectiv NU în caz contrar.

Restricţii şi precizări
1 ≤ n ≤ 100
elementele şirului vor fi cuprinse între -10000 şi 10000
şirul va conţine cel puţin un număr par



Exemplu
Date de intrare

5
2 7 6 10 5
Date de ieșire

DA


rezolvarea mea este:
#include

using namespace std;

int main()
{
int n, v[102];
bool ok = true;
cin >> n;
for(int i = 1; i <= n; i++)
cin >> v[i];
for(int i = 2; i < n; i+=2)
if(v[i] > v[i+2])
ok = false;

if(ok)
cout << "DA";
else
cout << "NU";

return 0;
}



boiustef: for(int i = 2; i < n; i+=2)
if(v[i] > v[i+2])
ok = false;
Mă miră faptul că parcurgi numai indicii pari... sau eu nu văd codul întreg...
Niluco: nu, dar spunea acolo "dacă elementele pare din şir sunt ordonate crescător"
boiustef: da, dar elementele pare pot fi oriunde... nu numai pe poziţii pare...

Răspunsuri la întrebare

Răspuns de boiustef
2

Răspuns:

#include <iostream>

using namespace std;

int n, i, v[102], a,crescator;

int main()

{

   cin >> n;

   for (i=0; i<n; ++i)

       cin >> v[i];

   i=0;

   while (v[i]%2!=0) ++i;

   a=v[i]; ++i;

   crescator=1;

   while (i < n)

   {

      if (v[i]%2==0)

      {

          if (v[i]<=a) {crescator=0; break;}

          else { a=v[i]; }

      }

       ++i;

   }

   if (crescator) cout << "DA";

   else cout << "NU";

}

Explicație:

eu cândva am rezolvat această problemă fără vector, dar pentru tine acum am folosit vector.. codul e testat la 100 p, pe pbinfo

Algoritmul:

- am citit n şi  numerele pe care le+am plasat în vector;

- am căutat primul par, pe care l-am dat lui a;

- parcurg mai departe vectorul şi dacă găsesc par, verific creşterea. Dacă nu e bine opresc ciclul, altfel actualizez a, pentru ca să pot compara următorul par cu el să verific creşterea.


Niluco: mersiiiii mult
Niluco: multumesc mult !*
Niluco: va dau coroana de indata ce pot
boiustef: am o rugăminte să-mi explici şi tu o întrebare...
Despre care coroană merge vorba? Am mai văzut de multe ori folosită aici expresia asta şi nu ânţeleg despre ce merge vorba.. Mulţumesc
Niluco: in general, cele mai bune raspunsuri primesc coroane. asta cred ca ajuta la numarul de puncte. eu de exemplu, daca caut niste raspunsuri, ma orientez dupa cele care sunt cu coroana, pentru ca 80% astea sunt cele mai utile.
Alte întrebări interesante