【发布时间】:2018-01-21 03:48:16
【问题描述】:
我正在尝试制作一个 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] 中,在下一个循环中,我应该找到最大的非完美正方形并打印它。我做错了什么?
PS:
考虑arr[variable] 是有效的,因为它适用于 CodeBlocks。谢谢!
【问题讨论】:
-
这里需要更多信息:
sqrt(arr[i]);。看起来你正在抛弃结果。 -
你可以做
arr[i]=sqrt(arr[i]) -
不过,我好像不明白。您正在打印数组中最大的非完美正方形,对吧?
-
@XcoderX 是的,我正在打印最大的非完美正方形。