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

Problema Munte!!!
Doar cu IF, WHILE si ELSE va rog. Nu am ajuns inca la For sau Vectori.
Multumesc mult.

Cerință
George este fan al drumețiilor pe munte. El crede că o excursie pe munte ii conferă o experiență adevărată dacă acesta are un singur vârf și mai mult, măsurând altitudinea din kilometru în kilometru și construind un șir cu aceste valori, șirul respectiv este un șir munte.
Un șir munte este un șir în care există un singur indice i ce verifică proprietațiile:

2 ≤ i ≤ N - 1, unde N reprezintă numarul de elemente din șir
toate elementele de la 1 pană la i sunt în ordine strict crescătoare
toate elementele de la i până la N sunt în ordine strict descrescătoare
Se dă un șir format din N numere. Să se verifice dacă șirul dat reprezintă sau nu un șir munte.

Date de intrare
Pe prima linie se află N, dimensiunea șirului. Pe următoarea linie sunt N numere naturale, elementele șirului reprezentând măsurătorile lui George.
Date de ieșire
Se va afișa un singur număr: 1 dacă șirul dat este munte, sau 0 în caz contrar.
Restricții

3 ≤ N ≤ 500

Elementele șirului sunt numere naturale mai mici decât 1 000 000
Exemplu

Date de intrare Date de ieșire

7
1 4 6 7 8 5 2 1 ---- date de iesire 1

7
1 4 6 10 8 9 2 0 ---- date de iesire 0

Răspunsuri la întrebare

Răspuns de takeovergirl
0

Bună!

#include <iostream>

using namespace std;

int main(){

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

   cin >> n;

   cin >> ante;

   for(i=1;i<=n-1 && mod!=3;i++){

      cin >> x;

       if(x==ante)mod=3;

       if(mod==1){

           if(x<ante)mod=2;

       }

       if(mod==2){

         if(x>ante)mod=3;

      }

       ante=x;

  }

   if(mod==2) cout << 1;

   else cout << 0;

}

  • am memorat altitudinea anterioară în variabila ante
  • de fiecare comparăm altitudinea nouă cu cea anterioară
  • în mod, ținem cont de modul în care trebuie să se comporte șirul
  • inițial el trebuie sa fie crescător (1), apoi descrescător (2)
  • în momentul în care șirul este constant sau devine iar crescător suntem siguri că șirul dat nu este munte (mod==3), deoarece pentru ca șirul sa fie munte trebuie ca la final mod să fie egal cu 2

drcompress: Buna!
drcompress: multumesc mult de tot
drcompress: insa nu am ajuns la for
drcompress: daca se poate doar cu while, if si else
drcompress: multumesc si pt explicatie
mirunaanastase98: int i =1;
while (i <= n-1 && mod !=3){
++i;
"aici adaugi tot ce contine acel for in acolade"
}

ti-am convertit for-ul intr-un while :)
drcompress: Multumesc frumos pentru ajutor
Alte întrebări interesante