Abed Al Rahman Hussien Balhawan Ответов: 5

Использование оператора if и функции для получения максимального числа C++


#include <iostream>
using namespace std;
int getmax(int num1 , int num2){
    int result;
   cout<<"Enter Number 1 : "; cin>>num1;
   cout<<"Enter Number 2 : "; cin>>num2;
    if(num1>num2){
   result=num1;
   }
   else{
   result=num2;
}
return result;
    }


int main()
{
    cout<<getmax(num1,num2);
 return 0;
    }


cout<<getmax(0,n0);
Эта работа



мой probme находится в Main,когда я вызываю функцию , я не понимаю, почему мой код не будет работать, если я поставлю getmax(num1, num2), но если я поставлю любую переменную, она будет работать с переменными, которые я вставляю в Cin

Что я уже пробовал:

<pre>cout<<getmax(0,n0);
Эта работа

5 Ответов

Рейтинг:
44

Richard MacCutchan

int main()
{
    cout<<getmax(num1,num2);

    return 0;
}

Это не имеет смысла, потому что вы не определили num1 или num2. На самом деле этот код даже не будет компилироваться. Лучший способ сделать это - собрать входные значения перед вызовом функции:
#include <iostream>
using namespace std;

int getmax(int num1, int num2)
{
    int result;
    if(num1>num2)
    {
        result=num1;
    }
    else
    {
        result=num2;
    }
    return result;
}


int main()
{
    int num1, num2;
    cout << "Enter Number 1 : ";
    cin >> num1;
    cout << "Enter Number 2 : ";
    cin>>num2;
    cout << getmax(num1,num2);

    return 0;
}


Abed Al Rahman Hussien Balhawan

это не сработало для меня сэр

Richard MacCutchan

Для меня это прекрасно работает. Что вы сделали такого, что отличается?

Abed Al Rahman Hussien Balhawan

теперь это сработало , мне не хватало письма.,

Итак, вы не предлагаете создать функцию с входным сигналом , а затем вызвать ее в main ?

Richard MacCutchan

Нет, и особенно то, как вы это делаете в решении 4. Нет никакой причины создавать переменные в main, если они никогда не будут использоваться, кроме как в качестве временных переменных для функции. Функция должна объявлять свои собственные временные (т. е. локальные) переменные.

Функция действительно должна делать что-то одно, и в этом случае она должна принимать некоторые значения и производить результат. Значения должны быть получены от пользователя в другой функции (в данном случае main) и переданы в качестве параметров, как в моем примере. По мере усложнения кода вам может потребоваться вызвать функцию из разных мест, где значения были считаны из файла, извлечены из базы данных и т. д., В разных частях полного приложения.

Рейтинг:
33

steveb

В вашей функции main num1 и num2 не объявлены. Это даже не должно компилироваться:

int main()
{
    cout<<getmax(num1,num2);
    return 0;
    }


так и должно быть
int main()
{
	int num1 = 0, num2 = 0;
	cout << getmax(num1, num2);
    return 0;
}


Abed Al Rahman Hussien Balhawan

100% я забыл определить num1 , num2 в основном большое спасибо!

Рейтинг:
27

OriginalGriff

Когда вы создаете функцию:

int getmax(int num1 , int num2){
   ...
}
вы предоставляете имена, с помощью которых функция может обращаться к значениям, которые вы передаете ей в качестве параметров - num1 и num2 в этом случае.
Но эти параметры существуют только внутри функции, потому что они будут "заполняться" "реальными значениями" каждый раз, когда вы вызываете функцию из другого кода. Это означает, что вы можете сделать это:
void ShowValue(int x)
   {
   cout << x << "\n";
   }
int main()
   {
   ShowValue (2 + 2);
   ShowValue (21 / 3);
   }
И ожидайте, что он напечатает "4", а затем "3".
Ваш main функция этого не делает - она пытается передать имена параметров, которые не существуют, потому что main находится за пределами getmax функция, и это единственное место, где параметры действительно существуют вообще (и то ненадолго, они перестают существовать, когда функция возвращается).
Так что попробуйте это:
int main()
    {
    cout<<getmax(2 + 2, 21 / 3);
    return 0;
    }
И посмотрим, что получится.

И сделайте себе одолжение: разберитесь со своими отступами - это делает ваш код намного легче читаемым, и это делает его более надежным. Выберите метод отступа и придерживайтесь его - даже если это отвратительный 1 ТБ ...


Рейтинг:
1

Greg Utas

getmax может использовать ? оператор:

int getmax(int num1, int num2)
{
   return (num1 > num2 ? num1 : num2);
}
что эквивалентно
int getmax(int num1, int num2)
{
   if(num1 > num2) return num1;
   return num2;
}


Рейтинг:
0

Abed Al Rahman Hussien Balhawan

#include <iostream>
using namespace std;
int getmax(int num1 , int num2,int num3){
    int result;
   cout<<"Enter Number 1 : "; cin>>num1;
   cout<<"Enter Number 2 : "; cin>>num2;
   cout<<"Enter Number 3 : "; cin>>num3;
    if(num1 >= num2&& num1 >= num3){
   result=num1;
   }
   else if (num2 >= num1&& num2 >= num3){
   result=num2;
}
else{ result= num3;}
return result;
    }


int main()
{
    int num1=0;
    int num2=0;
    int num3=0;
    cout<<getmax(num1,num2,num3)<<" Is the Biggest Number ";
 return 0;
    }