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

Hei! Imi poate spune si mie cineva de ce nu merge algoritmul?
#include

using namespace std;
int i,n,a[11],d,c,cf,ok;
int main()
{
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a[i];
d=a[i];
ok=1;
while(ok==1||d!=0)
{
c=d%10;
cf=d/10%10;
if(c>cf && d==a[i])
ok=0;
if(c>cf && d!=a[i])
{
d=d/10;
while(d==0)
{
c=d%10;
cf=d/10%10;
if(c {
ok=0;
break;
}
}
}
d=d/10;
}
cout< }
return 0;
}
Cerinţa
Se dau n numere naturale. Determinați, pentru fiecare dintre ele, dacă este de tip “munte”.

Problema este de pe pbinfo si se numeste NumarMunte #189.

Multumesc mult!

Răspunsuri la întrebare

Răspuns de boiustef
0

#include <iostream>

using namespace std;

int m[12], cif[12];

int descreste(int a, int b)

{

   int ok=1;

   for (int i=a; i<b && ok; ++i)

       if (cif[i]<=cif[i+1]) ok=0;

   return ok;

}

int munte(int num)

{

      int nc=0;

      while (num)

      {

       ++nc; cif[nc]=num%10; num/=10;

      }

      int k=1;

      while (cif[k]<cif[k+1] && k<nc) ++k;

      if (k==1 || k==nc) return 0;

      else if (descreste(k, nc)) return 1;

      else return 0;

}

int main()

{

   int n, i, a;

   cin >> n;

   for (i=1; i<=n; ++i)

   {

       cin >> a;

       if (munte(a)) m[i]=1;

   }

   for (i=1; i<=n; ++i)

   {

       cout << m[i] << "\n";

   }

   return 0;

}


Alte întrebări interesante