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

Sa se verifice dacă un şir dat este şir vale.
Cerința
Un şir se numeşte şir vale, dacă are un singur minim pe poziţia v şi respectă următoarele proprietăţi:

În stânga şi în dreapta minimului există cel puţin câte un element.
Secvenţa a[1], a[2], ... , a[v] este strict descrescătoare.
Secvenţa a[v], a[v+1], ... , a[n] este strict crescătoare.
Se citeşte un şir cu n elemente. Să se verifice dacă este şir vale.

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 va afișa pe ecran unul dintre mesajele DA sau NU în funcţie că este şir vale sau nu.

Răspunsuri la întrebare

Răspuns de Utilizator anonim
0
void min(int v[], int b, int &a, int &j)//v-sirul,b-dimensiunea lui v, a-minim,j-pozitia minimului
{   a=v[0];
   j=0;
   for(int i=0;i<=b;++i)
     if(a>v[i])
     {
           a=v[i];
           j=i;
     }
}

bool verifD(int v[], int &j)
{
     bool c=true;
for(int i=0;i<=j-i;++i)
if(v[i]<v[i+1])
c=false;
return c;
}


bool verifC(int v[], int b, int &j)
{
     bool c=true;
for(int i=j;i<=b-1;++i)
if(v[i]>v[i+1])
c=false;
return c;
}

int main()
{
....
min(...)
if(verifC(...)&&verifD(...))
   cout<<"DA";
else
   cout<<"NU";
....
}

Răspuns de ardyarde
1
#include <iostream>
using namespace std;
int main()
{
  int v,n,i,ok=1;
cout<<"n=";
  cin>>n;
  int a[n+1];
cout<<"introduceti sirul "<<endl;
  cin>>a[1];
  for(i=2;i<=n;i++)
    cin>>a[i];
  for(i=2;i<=n;i++)
  if(a[i-1]>a[i]&&a[i+1]>a[i])
        v=i;
  for(i=1;i<v;i++)
    if(a[i+1]>=a[i])
    {
    cout<<"NU"; ok=0;
    break;
    }
  if(ok)
    for(i=v;i<n;i++)
      if(a[i]>=a[i+1])
      {
      cout<<"NU"; ok=0;
      break;
      }
  if(ok)
        cout<<"DA";
        return 0;
}

Alte întrebări interesante