/** 请写一个程序,判断给定整数序列能否构成等差数列。
**输入说明:多组数据,每组输入数据由两行构成,第一行只有一个整数n(<1000),
**表示序列长度(即序列中整数的个数,0表示输入结束),第二行为n个整数,
**每个整数的取值区间都为[-32768----32767],整数之间以空格或挑格间隔。
**输出说明:对于每一组数据,输出一个yes或no,表示该序列能否构成等差数列。
*/
#include<iostream>
#include<string>
#include<vector>
const int MaxSize=100; //数列的最大数的个数
using namespace std;
void Judge(int n); //判断函数,参数是数列数值的个数
int main()
{
int count1; //数列数值的个数
cin>>count1;
Judge(count1);
return 0;
}
void Judge(int num)
{
vector<string> s;
vector<string>::iterator it;
int n,x,i,j,t;
int a[MaxSize];
n=num;
while(n)
{
for(i=0; i<n; ++i) //初始化数列
{
cin>>a[i];
}
for(j=0; j<n; ++j) //将数列从小到大排序,冒泡排序
{
for(i=0;i<n-j-1;++i)
{
if(a[i]>a[i+1])
{
t=a[i+1];
a[i+1]=a[i];
a[i]=t;
}
}
}
x=a[1]-a[0]; //求等差
for(i=1; i<n; ++i)
{
if((a[i]-a[0])!=i*x) //不是等差的条件
{
s.push_back("No");
break;
}
if(i==n-1)
{
s.push_back("Yes");
}
}
cin>>n; //再次输入,如果是0的话,结束
}
for(it=s.begin(); it<s.end(); ++it) //将实际情况打印
{
cout<<(*it)<<endl;
}
}
等差数列
最新推荐文章于 2024-08-19 19:47:46 发布