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

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

Exemplu
Intrare

4
15965 156 121 753
Ieșire

1
0
1
0


imi poate spune cineva unde am gresit?
codul meu:
#include

using namespace std;

int main()
{
int n, x, k, a[11], max, pmax, c, p, j, ok1, ok2, b, d, e;
cin >> n;

for (int i = 1; i <= n; i++)
{
cin >> x;

int cx = x;
k = 0;
while (cx > 0)
{
c = cx % 10;
a[++k] = c;
cx = cx / 10;
}
for (p = 1, j = k; i < j; i++, j--)
swap (a[i], a[j]);

max = 101;
pmax = 101;
for (b = 1; b <= k; b++)
if (a[b] > max)
{
max = a[b];
pmax = b;
}
ok1 = 1;
ok2 = 1;
for (d = 1; d <= pmax; d++)
if (a[d] >= a[d+1])
ok1 = 0;
for (e = pmax + 1; e <= k; e++)
if (a[e] <= a[e+1])
ok2 = 0;

if (ok1 == 1 && ok2 == 1 && pmax > 1 && pmax < k)
cout << 1 << endl;
else
cout << 0 << endl;
}
return 0;
}

Răspunsuri la întrebare

Răspuns de boiustef
0

Răspuns:

#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;

}

Explicație:

Alte întrebări interesante