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
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";
....
}
{ 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
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;
}
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
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Biologie,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă