Як я можу визначити найвище і найменше значення за допомогою робити в той час як петлі

Я в даний час застряг у своїй домашній роботі, і проблема в тому, що мені потрібно створити програму, яка буде просити 5 цілих чисел, і я повинен визначити найвищу і найнижчу цінність. Я зараз дуже заплутаний, і мій початковий код це.

#include
using namespace std;

int main(){

 int num1,num2,num3,num4,num5,min=0,max=0;

 cout << " Enter 1st number : ";
 cin >> num1;
 cout << " Enter 2nd number : ";
 cin >> num2;
 cout << " Enter 3rd number : ";
 cin >> num3;
 cout << " Enter 4th number : ";
 cin >> num4;
 cout << " Enter 5th number : ";
 cin >> num5;
 do{
    if(num10);
 cout << " The highest number is : " <

Будь-яка допомога буде оцінена. Спасибі заздалегідь!

3
Перегляньте std :: max , припускаючи, що ваше призначення дозволяє це.
додано Автор Cornstalks, джерело
Чи знаєте ви, що таке масив?
додано Автор NathanOliver, джерело
Масиви або вектори, як вони називаються в c ++, роблять це завдання набагато простішим. Тут можна переглянути підручник . Я впевнений, що професор не заперечуватиме, якщо ви придумаєте простіше рішення.
додано Автор K1ngjulien_, джерело
@ NathanOliver мій професор сказав нам використовувати тільки робити, а якщо і так як ми ще не на масивах
додано Автор james, джерело

6 Відповіді

Якщо ви маєте право використовувати std :: max і std :: min , можна використовувати:

max = std::max({num1, num2, num3, num4, num5});
min = std::min({num1, num2, num3, num4, num5});

для спрощення коду в циклі.

1
додано

Замість того, щоб порівнювати всі номери кожного разу. Просто порівняйте поточну найменшу з номерами в послідовності.

int data[5];
// read numbers into data.

int min = data[0];  //Guess that number 0 is the smallst number.

// Now check if the guess is correct and update if you are wrong.
for(int loop = 0; loop < 5; ++loop)
{
    //check if data[loop] is smaller than your current guess.
    //if it is smaller than update your guess.
    //when you have checked all the values exit the loop.
}
std::cout << "Smallest: " << min << "\n";
0
додано

You should store your numbers into a std::vector or std::array and then use the std::minmax_element algorithm to obtain the largest and smallest number.

0
додано

Немає необхідності використовувати цикл, щоб зробити це, ви можете зробити це без цього, якщо необхідно використовувати цикл, ви повинні використовувати масив або іншу структуру даних

0
додано

Це моє рішення без використання масивів. Я пропоную вам спробувати його раніше. Ви не дізнаєтеся, коли ви просто копіюєте код.

#include 

int main() {
    int i=0, num, min=FP_INFINITE, max=-FP_INFINITE;

    do {
        std::cout << "Enter number: ";
        std::cin >> num;
        if (num < min) {
            min = num;
        }
        if (num > max) {
            max = num;
        }
        i++;
    } while (i < 5);

        std::cout << "The max number is: " << max << std::endl;
        std::cout << "The min number is: " << min << std::endl;

    return 0;
}
0
додано
Це дасть неправильний максимум для {-1, -2, -3}
додано Автор NathanOliver, джерело
Чому б не INT_MIN і INT_MAX як значення. Я не думаю, що FP_INFINITE надасть вам правильне значення.
додано Автор NathanOliver, джерело
Я отримую 1 для його значення тут , тому це не портативне рішення.
додано Автор NathanOliver, джерело
@NathanOliver Дякую. Просто змінив максимальний від 0 до -FP_INFINITE. Тепер вона повинна працювати
додано Автор Uli Sotschok, джерело
Я тестував як (FP_INFINITE і INT_MAX/INT_MIN), так і для мене обидва працювали нормально. Але я теж дуже новачок у С ++, тому я не знаю, який саме підходить краще
додано Автор Uli Sotschok, джерело

Якщо вам не потрібно пам'ятати, можна навести цикл, наприклад, 5 разів, то маєте порівняння, перш ніж задавати наступний номер.

так взагалі (ідея, напишіть це самому і дізнайтеся):

for (5 times)
ask user input, save as input
if largest number is null, then equal to input
else if largest number is smaller, then set input equal to largest number

Продовжуйте для циклу.

0
додано
Замість того, щоб встановити найбільше число на нуль, потрібно просто перевірити, чи це перша ітерація. Якщо воно є, то першим введеним числом є найбільше число, інакше порівняйте число, введене до найбільшого числа. Крім того, це чудова відповідь. Це фактично вирішує проблему найбільш ефективно.
додано Автор NathanOliver, джерело
Проблема з наданням найбільшої кількості початкового значення полягає в тому, що користувач вводить всі числа нижче, ніж тоді, тоді ви даєте їм неправильний номер. Якщо ви встановите його на "null" (0) і я введу -1, -2, -3 , то отримаю 0 як max, а не -1. Таким чином, ви повинні або перевірити, чи це перша ітерація, запитати перше число перед циклом, а потім лише петлю 4 рази, або встановити найбільше число для найменшого, що може бути.
додано Автор NathanOliver, джерело
Як правило, я намагаюся уникнути перевірки 0/першої ітерації, оскільки ви, можливо, захочете зробити це так, щоб ви раніше встановили найбільше число, але це не відбувається в цьому випадку, тому обидва мають рацію./знизати плечима
додано Автор Marco, джерело
Ні, це я маю на увазі, якщо ви збережете його раніше, наприклад, ви берете його з деякого сховища або раніше введеного номера, ви можете отримати нові номери і порівняти його зі старими. Просто робить це так, якщо я повернуся і додати функції, мені ніколи не доведеться турбуватися про редагування старого матеріалу. Я не маю на увазі дати йому значення. Інший спосіб зробити це вище - запитати перший номер перед введенням циклу, тим самим уникаючи порожньої перевірки.
додано Автор Marco, джерело
IT KPI C/С++ новым годом
IT KPI C/С++ новым годом
747 учасників

Чат обсуждения С/С++. - Вопросы "напишите за меня лабу" - это оффтоп. - Оффтоп, флуд, оскорбления и вбросы здесь не приняты. - За нарушение - предупреждение или mute на неделю. - За спам и рекламу - ban. Все чаты IT KPI: https://t.me/itkpi/1147