пытаюсь скомпилировать мою программу на C ++. - PullRequest
0 голосов
/ 08 ноября 2010

Эта программа "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 голосов
/ 08 ноября 2010

Сначала разберись на бумаге.

У вас есть три числа, скажем: 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
0 голосов
/ 08 ноября 2010

Вам нужно будет расширить параметры 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
}
0 голосов
/ 08 ноября 2010
cin >> n1 >> n2 >> n3;

Это может быть проблемой, поскольку n1 / n2 / n3 являются целыми числами.Вы захотите взять строку ASCII и преобразовать ее в int.Для чего-то такого простого вы можете просто использовать atoi, который будет выглядеть примерно так:

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

Хитрость заключается в преобразовании текстового представления числа в фактическое число, которое требуется для вашей функции.Использование символов почти наверняка приведет к каким-то странным результатам.

...