впервые постер здесь. Пожалуйста, имейте в виду, что я все еще очень новичок в c++ и кодировании в целом. Я пытаюсь переписать программу, которая запрашивает у пользователя, сколько чисел они хотят сравнить, затем они вводят значения каждого числа. Я достиг этого с помощью операторов if и if, но теперь я прошу сделать это с помощью определенных пользователем функций. Проблема, которую я имею до сих пор, заключается в том, что первое число, которое я вводил, является тем, которое было сохранено, но оно запрашивает дополнительные числа, а цикл for внутри функции работает правильно. Некоторые предложения о том, что я делаю неправильно, получили бы большую оценку. У меня есть все объявленные переменные, которые нужны, поэтому я только ставил прототип для сохранения в пространстве.
int main()
{
int DisplayGreatest(int,int);
do {
cout << "Please select an option" << endl;// Menu Options
cout << "A: Highest" << endl;
cout << "B:Lowest" << endl;
cout << "C: Quit " << endl;
cin >> Selection; // Menu Selection
cout << endl;
if ( (Selection == 'a') || (Selection == 'A') )
{
cout << "How many numbers do you want to use?" << endl;
cin >> Aselection;
cout << "enter your first choice" <<endl;
cin >> currentAinput;
DisplayGreatest (Aselection,currentAinput);
cout << "The largest number is "<< currentAinput << endl;
}
}
}
Функция:
int DisplayGreatest(int Aselection, int currentAinput)
{
int i;
int keepAinput=0;
for(i=1;i<Aselection;i++)
{
cin >> currentAinput;
if (currentAinput > keepAinput)
{
keepAinput=currentAinput;
}
}
return currentAinput;
}
В вашем коде есть несколько ошибок:
Вот функциональная версия:
#include <iostream>
using namespace std;
int DisplayGreatest(int Aselection)
{
int keepAinput = 0;
int currentAinput;
do {
cin >> currentAinput;
if (currentAinput > keepAinput)
{
keepAinput = currentAinput;
}
} while(--Aselection > 0);
return keepAinput;
}
int main()
{
char Selection;
do {
int Aselection;
int currentAinput;
cout << "Please select an option" << endl;// Menu Options
cout << "A: Highest" << endl;
cout << "B:Lowest" << endl;
cout << "C: Quit " << endl;
cin >> Selection; // Menu Selection
cout << endl;
if ( (Selection == 'a') || (Selection == 'A') )
{
cout << "How many numbers do you want to use?" << endl;
cin >> Aselection;
cout << "enter your first choice" <<endl;
cout << "The largest number is "<< DisplayGreatest (Aselection) << endl;
}
} while(Selection != 'C' && Selection != 'c');
}
int DisplayGreatest(int,int)
вероятно, должен быть объявлен в глобальном пространстве имен, то есть:
int DisplayGreatest(int, int);
int main()
{
}
int DisplayGreatest (int Aselection, int currentAinput)
{
}
Кроме того, вы можете принимать входные данные в цикле, но это несколько более естественный подход к целой векторной стоимости ints, а затем поиск наивысшего/наименьшего значения с использованием той же идеи (цикл через каждый из них и сохранение текущего самого высокого/самого низкого).
EDIT: О, я вижу, какова ваша проблема сейчас. Вам необходимо вернуть keepAinput в конце вашей функции и назначить ее текущей или другой переменной и распечатать в зависимости от того, что вы ее назначили. Или просто напечатайте результат напрямую, IE:
cout << "Highest number is " << DisplayGreatest(Aselection, currentAinput) << endl;