Informatică, întrebare adresată de magdaudragosp1p0b1, 9 ani în urmă

Problema #189 de pe pbinfo
Un număr este de tip “munte” dacă cifrele sale formează inițial un șir strict crescător, apoi un șir strict descrescător.

Cerinţa
Se dau n numere naturale. Determinați, pentru fiecare dintre ele, dacă este de tip “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 afișează pentru fiecare dintre cele n numere citite, pe câte o linie a ecranului valoarea 1, dacă numărul corespunzător este de tip “munte”, respectiv valoarea 0 în caz contrar.

Restricţii şi precizări
1 ≤ n ≤ 10
cele n numere citite vor fi mai mici decât 2.000.000.000
cele n numere citite vor fi mai mari decât 100

Nu inteleg ce am gresit la programul meu...Putin ajutor va rog.

#include <iostream>
using namespace std;
int main(){   
int n,v[10],i,j,x,y,z,aux; 
 cin>>n; bool munte=true;
 for (i=0;i<n;i++){   
   cin>>x;aux=x;int c=0;   
   while (x){c++;x/=10;}   
    for (j=0;j<c;j++){v[j]=aux%10;aux/=10;}
     while(munte){   
  for (j=0;j<c;j++) {
        if (v[j+1]>v[j]) continue;   
        if (v[j+1]==v[j]) {munte=false;}       
        if (v[j+1]<v[j]) {y=v[j];break;}        }
        for(j=c-1;j>=0;j--){
        if (v[j-1]>v[j]) continue;       
        if (v[j-1]==v[j]) {munte=false;}       
        if (v[j-1]<v[j]) {z=v[j];break;}        }        }         
        if (y==z) cout<<1;   
       else cout<<0;

}}

Răspunsuri la întrebare

Răspuns de Hatty
2
Răspunsul corect este:

#include <iostream>
using namespace std;
int main(){   
int n,v[10],i,j,x,y,z,aux; 
 cin>>n; bool munte=false;
 for (i=0;i<n;i++){   
   cin>>x;aux=x;int c=0;   
   while (x){c++;x/=10;}   
    for (j=0;j<c;j++){v[j]=aux%10;aux/=10;}
     while(munte){   
  for (j=0;j<c;j++) {
        if (v[j+1]>v[j]) continue;   
        if (v[j+1]==v[j]) {munte=true;}       
        if (v[j+1]<v[j]) {y=v[j];break;}        }
        for(j=c-1;j>=0;j--){
        if (v[j-1]>v[j]) continue;       
        if (v[j-1]==v[j]) {munte=true;}       
        if (v[j-1]<v[j]) {z=v[j];break;}        }        }         
        if (y==z) cout<<1;   
       else cout<<0;

}}

magdaudragosp1p0b1: Dar e acelasi lucru...
CinevaFaraNume: Variabila munte ramane neatinsa, fortandu-te direct afara din a doua bucla while
Alte întrebări interesante