首页 > 解决方案 > 检查多重性 3

问题描述

我在检查 3 的多重性时遇到了一点问题。它说我的 arr 必须是整数,但在客观上我需要有一个浮点数。如何对浮点数进行此检查“arr[i] % 3 == 0”。

谢谢。

#include <iostream>
#include <cmath>

using namespace std;

float minElement(float arr[], int length) {

    float minElement = arr[0];

    for (int i = 0; i < length; i++)
    {
        if (minElement > arr[i])
            minElement = arr[i];
    }

    return minElement;
}

float multiplyArr(float arr[], int length) {

    float multiply = 1;

    for (int i = 0; i < length; i++)
    {
        if (arr[i] != 0 && arr[i] % 3 == 0)
        multiply *= arr[i];
    }

    return multiply;
}

int main()
{
    float length;
    cout << "Enter integer value: ";
    cin >> length;

    float* p_darr = new float[length];

    cout << "Enter values: " << endl;
    for (int i = 0; i < length; i++) {

        cin >> p_darr[i];
    }

    cout << "Max. element: " << minElement(p_darr, length) << endl;
    cout << "Multiply:  " << multiplyArr(p_darr, length) << endl;

    delete[] p_darr;
    return 0;
}

标签: c++

解决方案


假设

大量漂浮

意思是“大价值”。您不能执行此操作,因为它没有意义。评论(和其他答案)会建议fmod。我会建议反对。

如果我给你值 3.6x10^12 并问你除以 3 后的余数是多少,你不能给我一个有意义的答案。

3600000000000 % 3是 0.3600000000001 % 1是 1.3600000000002 % 2是 2.

但所有三个值都是 3.6x10^12。

如果您需要整数模值,通常意味着您需要整数精度。浮点值不会提供它。

相反,您应该将输入读取为字符串,逐个字符地解析它,然后计算模数。这是计算机理论课上典型的第一个作业(就像我以前做 TA 一样)。


推荐阅读