用于检查尺寸值及其内容的函数

Function to check dimension value and what it is

本文关键字:函数 检查 用于      更新时间:2023-10-16

我正在尝试编写一个程序,检查矩形的维度是否大于零。在void函数Check中,我尝试使用数组来检查值,并使用字符串来显示用户错误的维度。我得到一个错误,它"无法将参数1从'double[6]'转换为'double'。

#include <iostream>
#include <string>
using namespace std;
void Check(double, string);
int main()
{
    const int size = 3;
    double DimArray[size];
    string MyArray[size] = { "Height", "Length", "Width"};
    cout << "Enter the height, length and width of rectangle: ";
    cin >> DimArray[0] >> DimArray[1] >> DimArray[2];
    Check(DimArray, MyArray);
    return 0;
}
void Check(double arr1[], string arr2[])
{
    int i;
    for (i = 0; i < 4; i++)
    {
        if (arr1[i] <= 0)
          cout << "Your entered " << arr2[i] << "is less than zero!";
        cout << "Please enter a valid number --> ";
        cin >> arr1[i];
    }
}

您应该正确地声明函数。代替

void Check(double, string);

应该有

void Check( double[], const std::string[], size_t );

也代替了功能体中的循环

for (i = 0; i < 4; i++)

必须有

for (i = 0; i < 3; i++)

该功能可以定义为

void Check( double arr1[], const std::string arr2[], size_t n )
{
   for ( size_t i = 0; i < n; i++ )
   {
       while ( arr1[i] <= 0 )
       {
            std::cout << "Your entered " << arr2[i] << "is not positive!n";
            std::cout << "Please enter a valid number --> ";
            std::cin >> arr1[i];
       }
   }
}

或者,如果您要定义文件范围的常量

const size_t SIZE = 3;

那么函数定义(以及相应的声明)可以简化

void Check( double arr1[], const std::string arr2[] )
{
   for ( size_t i = 0; i < SIZE; i++ )
   {
       while ( arr1[i] <= 0 )
       {
            std::cout << "Your entered " << arr2[i] << "is not positive!n";
            std::cout << "Please enter a valid number --> ";
            std::cin >> arr1[i];
       }
   }
}

此外,最好定义一个const char * 数组,而不是std::string数组

const char * MyArray[size] = { "Height", "Length", "Width"};

因为据我所知,你不会改变它。

由于您的原型需要类型double,而您正在传递double arr1[]。。

更改原型:

void Check(double, string);

至:

void Check(double arr1[], string arr2[])