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
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;
}}
#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...
Alte întrebări interesante
Matematică,
8 ani în urmă
Franceza,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
9 ani în urmă
Engleza,
9 ani în urmă
Chimie,
9 ani în urmă