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

Salut! Cine ma poate ajuta cu o rezolvare la aceasta problema, va rog? Mentionez ca trebuie rezolvata doar cu while si if, altfel se prinde profu :))

Cerința
Un şir se numeşte şir munte, dacă are un singur maxim pe poziţia v, numit vârf şi respectă următoarele proprietăţi:

În stânga şi în dreapta vârfului există cel puţin câte un element.
Secvenţa a[1], a[2], ... , a[v] este strict crescătoare.
Secvenţa a[v], a[v+1], ... , a[n] este strict descrescătoare.
Se citeşe un şir cu n elemente. Să se verifice dacă este şir munte.

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

Date de ieșire
Programul va afișa pe ecran unul dintre mesajele DA sau NU în funcţie că este şir munte sau nu.

Restricții și precizări
3 ≤ n ≤ 1000
0 ≤ elementele şirului ≤ 1 000 000 000
Exemplu 1:
Intrare

5
1 2 3 4 5
Ieșire

NU
Exemplu 2:
Intrare

5
1 2 3 4 3
Ieșire

DA
Explicație
Primul exemplu nu este şir munte, pe când al doilea exemplu este şir munte.

Răspunsuri la întrebare

Răspuns de andrei750238
4

#include <iostream>

using namespace std;

int main(){

int mod=1,n,x,ante,i;

//Citeste nr de valori din sir

cin >> n;

//Citeste primul numar

cin >> ante;

i=1;

//Citeste restul de numere

while(i<n){

       //Citeste numarul curent

 cin >> x;

       //Daca termenul curent e mai mic decat cel anterior iar pana acum sirul a fost crescator schimba sirul la modul descrescator

 if(x<ante && mod==1)mod=2;

 //Daca sirul e descrescator iar termenul curent e mai mare decat cel anterior atunci sirul nu are proprietatea data

 else if(mod==2 && x>ante) mod=3;

 //Daca termenul curent e egal cu anteriorul atunci sirul nu are proprietatea data

 if(x==ante) mod=3;

 //Pregateste pentru iteratia urmatoare

 ante=x;

 i++;

}

//Verifica daca sirul e descrescator (modul 2)

if(mod==2) cout << "DA";

else cout << "NU";

}

Anexe:
Alte întrebări interesante