试图编译我的C ++程序。

时间:2010-11-08 17:25:04

标签: c++builder

此程序“FindMIn”将两个值作为其参数并返回最小值。我正在尝试更改我的程序,以便它将三个值作为参数并返回三个值中的最小值。这就是我到目前为止但是如何?

#include <iostream>        
using namespace std; 
  

//function prototypes go before main - parameters much match those of the function definition

int FindMin(int x, int y);

//place prototype for PrintOutput here

int main()
{
    int n1, n2, n3;
    int result;
    char answ = 'Y';

    while (answ == 'Y')
    {
        cout << "Please enter three numbers..." << endl;
        cin >> n1 >> n2 >> n3;
        result = FindMin(n1, n2); //function call
        
        //place call to function PrintOutput here

        cout << "Would you like to run the program again?  Enter Y or N" << endl;
        cin >> answ;
     }
    

    return(0);
}

//***************************************************************
//FindMin - returns the minimum of two values
//***************************************************************
int FindMin(int a, int b)
{
    if (a < b)
        return a;
    else
        return b;
}
//******************************************************************
//PrintOutput - prints the values input and the smallest of the 
//three values
//******************************************************************
void PrintOutput(int first, int second, int min)
{
    cout << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << endl;
    cout << "The minimum value of " << first << ", " <<
        second << ", is "  << min << endl;
    cout << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << endl;
}

3 个答案:

答案 0 :(得分:0)

首先在纸上解决。

你有三个数字,比方说:1 2 3

你有一个函数findMin(int a, int b),它返回给定的两个中最小的一个。你不能直接使用这个函数,因为它只有两个参数 - 但你可以用另一种方式组合它给你至少三个数字。这是基本的数学函数使用。

这是一个提示:

min(1,2) = 1
min(1,3) = 1
min(2,3) = 2
min(1,min(2,3)) = 1

答案 1 :(得分:0)

您需要将FindMin参数展开为3个整数:

int FindMin(int x, int y, int z);

// ...

int main()
{
  // ...
        cin >> n1 >> n2 >> n3;
        result = FindMin(n1, n2, n3); //function call
  // ...
}

// ...

int FindMin(int x, int y, int z)
{
  // Place the code that compares the three numbers and returns minimum here
}

答案 2 :(得分:-6)

cin >> n1 >> n2 >> n3;

这可能是一个问题,因为n1 / n2 / n3是整数。您需要接受ASCII字符串并将其转换为int。对于这么简单的事情,你可以使用atoi,它看起来像:

char buffer[1024];
cin >> buffer;
n1 = atoi(buffer);

技巧是将数字的文本表示转换为实际数字,这是您的函数所必需的。只使用这些字符几乎肯定会产生一些奇怪的结果。