如何检查所有数组元素是否相等?
例如:
1 2 3
退出:没有
例2:
2 2 2 2
退出:是
我写了这个,但它总是显示" NO" :
# include < iostream >
using namespace std;
int main(){
int n , a[ n ] , i;
cin>>n;
cout<< endl;
for(i=0 ; i<=n-1 ; i++)
{
cin>>a[ i ];
}
if (a[ i ]! = a[ i + 1 ]) {cout<<"NO";}
else {cout<<"YES";}
return 0;
}
第二个节目:
例如:
1 2 2 5 7 2 9 1 5 8
退出:1 2 5 7 8
我必须使用Selection Sort,Bubble Sort或Insertion来对程序进行排序 谢谢你:)。
答案 0 :(得分:0)
当n
未初始化时,您无法制作范围为n
的数组。
int n , a[ n ] , i;
cin>>n;
此外,您当前在if语句中使用值i
的{{1}}。那样不行。您正在访问刚刚在数组中输入的值以外 - 更糟糕的是 - 在数组边界之外。
你需要一个循环来检查:
n
但是,在C ++中,使用标准容器而不是旧的C风格数组要容易得多。像这样使用int main(){
int n , i;
cin>>n;
int a[n]; // n must be initialized first
cout<< endl;
for(i=0 ; i<=n-1 ; i++) // Read in array values
{
cin>>a[ i ];
}
for(i=0 ; i<=n-2 ; i++) // Check array value in a loop. Notice: i <=n-2
{
if (a[i] != a[i+1])
{
cout << "NO";
return 0;
}
}
cout << "YES";
return 0;
}
和vector
:
set
最后请注意#include <iostream>
#include <set>
#include <vector>
using namespace std;
int main(){
int n , i;
vector<int> a; // Use vector instead array to hold the data
set<int> unique; // Use set for finding unique values as a set
// can only hold a specific value one time
cin >> n;
for(i=0 ; i<n ; i++)
{
int tmp;
cin >> tmp;
a.push_back(tmp); // Put value into vector
unique.insert(tmp); // Put value into set
}
if (unique.size() == 1)
{
cout << "YES" << endl;
}
else
{
cout << "NO" << endl;
}
cout << "Unique value:" << endl;
for (auto v : unique)
{
cout << v << endl;
}
return 0;
}
不用于解决您的问题。 vector
就足够了。我使用了set
,以便输入数据仍保存在某处,以防您需要使用它进行更多操作 - 如果没有,您可以删除vector
部分。
对于你的第二个项目:
Google:“wiki bubble sort”,你会发现https://en.wikipedia.org/wiki/Bubble_sort
附带伪代码和所有。