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:
#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:
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;
}