我对我的一个问题有疑问。 我有一个包含n个元素的数组,我必须看看这个是否是由这个规则制作的: 阳性阴性阳性阳性阴性阴性阳性阳性阳性阴性阴性阴性 这是我的代码: // sa se scifice daca un vector contine elementele in ordinea: // pozitiv-negativ-pozitiv-pozitiv-negativ-negativ-pozitiv-pozitiv-pozitiv等 // Se va afisa DA sau NU。
#include <iostream>
using namespace std;
int main()
{
int i, j, k;
int n;
cout<<"Dati numarul de elemente: ";
cin>>n;
int v[n+1];
cout<<"Dati elementele vectorului: ";
for(i=1; i<=n; i++)
cin>>v[i];
int stop = 1;
int aici = 2;
int pozitiv, negativ;
for(int i=1; i<=n; i=i+stop)
{
for(int k=i; k<=aici/2; k++)
{
cout<<"v[k] = "<<v[k]<<endl;
if(v[k]>0)
pozitiv = 1;
else
{
pozitiv = 0;
break;
}
}
for(int j=aici/2+1; j<=aici; j++)
{
cout<<"v[j] = "<<v[j]<<endl;
if(v[j]<0)
negativ = 1;
else
{
negativ = 0;
break;
}
}
if(pozitiv == 0 && negativ == 0)
break;
stop = 2*i;
aici = aici + stop;
cout<<stop<<" "<<aici<<endl;
}
if(pozitiv == 1 && negativ == 1)
cout<<endl<<"DA!";
else cout<<endl<<"NU!";
cout<<endl;
return 0;
}
答案 0 :(得分:1)
int sign(int v)
{
return (v == 0) ? 0 : ((v > 0) ? 1 : -1);
}
int check(int v[], int n) // return 1 for true, 0 for false
{
int sign = 1;
int count = 1;
int sc = 0;
for (int i = 0; i < n; i++)
{
if (sign(v[i]) != sign)
return 0;
sc++;
if (sc == count)
{
sc = 0;
if (sign == 1)
sign = -1;
else
{
sign = 1;
count++;
}
}
}
return 1;
}
int main()
{
// ... put here your code for filling v
cout << (check(v, n)) ? "DA!" : "NU!" << endl;
}
另外,你应该将v声明为int v [n],并将其从v [0]填充到v [n-1]。