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

Pb info problema 277
Cerinţa
Într-un şir de numere naturale se numeşte vârf un element care are doi vecini şi este strict mai mare decât aceştia.

Se dă un şir cu n elemente, numere naturale. Calculaţi suma elementelor din şir care sunt vârfuri.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi cele n numere naturale, separate prin spaţii.

Date de ieşire
Programul afișează pe ecran numărul S, reprezentând suma elementelor din şir care sunt vârfuri.

Restricţii şi precizări
1 ≤ n ≤ 1000
cele n numere citite vor avea cel mult 4 cifre

Exemplu
Date de intrare
7
3 8 4 4 1 9 1

Date de ieșire
17

Răspunsuri la întrebare

Răspuns de boiustef
2

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int n, v[1000];

   cin >> n;

   int i=1, S=0;

   for (i=1; i<=n; ++i )  cin >> v[i];

   i=2;

   while (i<n)

   {

       if (v[i]>v[i-1] && v[i]>v[i+1])

       {

           S+=v[i]; i+=2;

       }

       else ++i;

   }

   cout << S << endl;

   return 0;

}

Explicație:

Răspuns de Paddon
0

Varianta simpla si intuitiva

#import <iostream>

using namespace std;

bool este_varf(int vector[], int pozitie)

{

return vector[pozitie] > vector[pozitie - 1] && vector[pozitie] > vector[pozitie + 1];

}

int main()

{

int *vector, numar_de_elemente, suma = 0;

cin >> numar_de_elemente;

vector = new int [numar_de_elemente];

for (int pozitie = 0; pozitie < numar_de_elemente; ++pozitie)

 cin >> vector[pozitie];

int pozitie = 1;

while (pozitie < numar_de_elemente - 1)

{

 if (este_varf(vector, pozitie))

 {

  suma += vector[pozitie];

  pozitie += 2;

 }

 else

  pozitie++;

}

cout << "Suma: " << suma << endl;

}

Alte întrebări interesante