打印最大非完美正方形
Print the maximum non perfect square
我正在尝试制作一个 c++ 程序,该程序可以找到数组中的最大非完美正方形并打印出来,即完美正方形,即 x = y^2 => 4 = 2^2
.
这是我尝试过的,对我不起作用,不知道为什么:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
cin >> n;
int arr[n];
for (int i = 0; i < n; i++)
{
cin >> arr[i];
sqrt(arr[i]);
if ((arr[i] * 10) % 10 == 0)
arr[i] = arr[1];
else
arr[i] = arr[0];
}
for (int i = 0; i < n; i++)
{
if (arr[0] < arr[i])
arr[0] = arr[i];
}
cout << arr[0] << endl;
return 0;
}
我的逻辑是取每个数组元素的平方根并检查它是不完美的还是完美的。如果我们将元素乘以 10,然后取模 10,那么我们知道它是整数还是十进制。例如:2*10 = 20,20%10 = 0(完美平方(,否则不完美。然后,我将每个非完美正方形存储在arr[0]
中,在下一个循环中,我应该找到最大的非完美正方形并打印出来。我做错了什么?
附注:
考虑arr[variable]
是有效的,因为它在 CodeBlock 中工作。谢谢!
你失去了sqrt
的结果。 sqrt(arr[i])
不会改变arr[i])
.
您不正确地检查平方根是否为积分。您应该将 sqrt
的结果转换为 int,将其自身相乘并与 arr[i]
进行比较。
我让你可以自由地自己正确更新你的代码。
此逻辑来查找一个数字是否为完全平方,这是查找正数array
的最大非完全平方的一种方法,在进入循环之前初始化answer=-1
,n
数组的大小
double answer = -1,temp;
for(int i=0;i<n;i++){
if((temp = array[i]) != (sqrt(array[i])*sqrt(array[i]))){
if(temp > answer){
answer = temp;
}
}
}
#include <iostream>
#include <cmath>
using namespace std;
int main () {
int n;
cin>>n;
int k[n];
double arr[n];
for (int i = 0 ; i < n ; i++){
cin>>k[i];
arr[i]=sqrt(k[i]);
int j = arr[i];
if (arr[i]==j){
arr[i]=0;
}
}
double m=0;
int index = 0;
for (int i = 0; i < n; i++){
if (arr[i]>m){
m=arr[i];
index = i;
}
}
cout << k[index];
}
这是一个代码。 我们引入了一个 double
,这样它就可以存储小数。 然后我们引入一个整数。 如果数字的平方根是小数,则它不是完全平方。 但是,当我j
引入这个整数时,它会将arr[i]
转换为整数。 如果数字是完全平方,则arr[i]
是整数,j==arr[i]
. 我们不希望这样,所以我们把它放在平等的0
. 我们找到最大的数组,并标记索引。 然后我们用该索引打印出原始数组中的原始数字。 我添加了这个float
因为它不存储每个小数点。
澄清一下:让我们说arr[i]=4.55556
. 然后j=4
. arr[i]!=j
.如果arr[i]=5
、 j=5
、 arr[i]=j
,然后将 arr[i]
设置为 0
。
- 试试完美的正方形,你能给点小费吗
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 不计算一个范围内的完美数
- 完美前进使用 std::forward vs RefRefCast
- 如何编写一个完美的缩写函数模板?
- 将函数参数完美转发到函数指针:按值传递呢?
- C++20理念:要求表达和完美转发
- 完美的转发和构造函数
- 我可以列表初始化 std::vector 并完美转发元素吗?
- OpenGL绘制三角形而不是正方形
- 完美的广场与位明智和
- 返回值的完美转发?
- 使用衰减与完美转发
- 可变参数模板:将整数参数完美转发到 lambda
- 完美转发C++重载和模板化函子及其参数
- 在完美转发中需要衰减
- 我无法完全理解这段代码来检查一个完美的正方形
- 打印最大非完美正方形
- 求出给定范围内的完美正方形的数量
- 如果输入的数字不是完全正方形,则找到最接近的完美正方形