将数组中的偶数平方打印到单独的数组中
Printing the even squares from an array into a separate array
From main function:
for (int i = 0; i <= squaresLength; i++)
{
cout << arraySquares[i] << endl;
}
cout<<endl;
函数定义:
void evenSquares(int arrIn[], int lengthIn, int arrOut[], int& lengthOut)
{
int i, j;
for (i=0; i<lengthIn; i++)
{
if (((arrIn[i]*arrIn[i])%2)==0)
{
for (j=0; j<lengthIn; j++)
{
{
arrOut[j]=(arrIn[i]*arrIn[i]);
}
}
}
lengthOut=j;
}
}
输出25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
25600
0
我知道这个函数很乱。它应该计算arrIn的每个元素的平方,然后将偶数平方存储在arout中,同时将lengthOut的新值设置为arout中偶数平方的数量。提前感谢您的帮助
这不会调用嵌套循环。您希望遍历输入数组并按比例将项写入输出数组,因此只需要一个循环,并仔细跟踪arrOut
的长度。
幸运的是,我们可以使用lengthOut
作为j
的长度和索引,以向arrOut
添加元素。
lengthOut = 0;
for (i = 0; i < lengthIn; i++)
{
if ((arrIn[i] * arrIn[i]) % 2 == 0)
{
arrOut[lengthOut] = arrIn[i] * arrIn[i];
lengthOut++;
}
}
您还可以通过消除重复计算来改进这一点。
for (i = 0; i < lengthIn; i++)
{
int square = arrIn[i] * arrIn[i];
if (square % 2 == 0)
{
arrOut[lengthOut] = square;
lengthOut++;
}
}
同样,第一个for
循环会出现一个差1的错误:<=
应该是<
。
for (int i = 0; i < squaresLength; i++)
{
cout << arraySquares[i] << endl;
}
问题在于,在第一个for循环中,每次您找到偶数平方时,您都会用arrIn[i]*arrIn[i]
的长度tin副本填充arout。注意,i
在第二个for中没有改变。正确的代码应该是
int i,j,square;
j = 0;
for (i=0; i<lenghtIn; i++) {
square = arrIn[i]*arrIn[i];
if (square%2==0)
arrOut[j++] = square;
}
lenghtOut = j;
相关文章:
- 动态分配的聊天数组打印缺失的数据和空
- 对象数组打印空白字符串
- 数组打印"random"值时出现问题
- 数组打印出垃圾值
- 数组打印奇怪的字符,例如 ∟ @
- 测量我的随机数数组打印的时间始终显示为 0 秒
- 数组打印出错误的数字
- 从对象数组打印字符串对象
- 您好,如何防止此函数使用质数数组打印 1
- 如何从主内部的数组打印总计
- 如何将数组打印为矢量形式
- 有人能给我一些关于在C++中使用数组打印出丰富、完美和不足的数字的提示吗
- 为什么我的C++数组打印相同的值
- 如何阻止我的数组打印地址
- 将值输入到结构数组 + 打印输出
- C++11 为什么 cout 从布尔数组打印大整数
- 从字符串数组打印其中一个字符串时出现空指针赋值错误
- 将无符号字符数组打印为十六进制
- 缩短的数组打印错误的结果
- C++中的字符串数组:打印额外的字符