Як вызначыць найбольшае і найменшае значэнне, выкарыстоўваючы рабіць у той час як завесы

я ў цяперашні час затрымаўся ў маёй хатняй працы і праблема заключаецца ў тым, што мне трэба стварыць праграму, якая будзе запытваць 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
Паглядзіце на зЬй :: макс , пры ўмове, ваша заданне дазваляе.
дададзена аўтар Cornstalks, крыніца
Вы ведаеце, што такое масіў?
дададзена аўтар NathanOliver, крыніца
Масівы, вектары або, як іх называюць у C ++, робяць гэтую задачу нашмат прасцей. Вы можаце паглядзець падручнік для гэтага . Я ўпэўнены, што прафесар не будзе пярэчыць, калі вы прыдумалі простае рашэнне.
дададзена аўтар K1ngjulien_, крыніца
@NathanOliver мой прафесар сказаў нам, каб выкарыстоўваць толькі зрабіць у той час, і калі так як мы яшчэ не на масівы
дададзена аўтар james, крыніца

6 адказы

Калі вам дазволена выкарыстоўваць зЬй :: макс і станд :: мін , вы можаце выкарыстаць:

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 Дзякуй. Проста змянілася Макс ад Initally 0 да -FP_INFINITE. Зараз ён павінен працаваць
дададзена аўтар Uli Sotschok, крыніца
Я пратэставаў абодва (FP_INFINITE і INT_MAX/INT_MIN) і для мяне, як толькі працаваў добра. Але я таксама вельмі новай для C ++, так што я не ведаю, які з іх лепш падыходзіць
дададзена аўтар 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, крыніца
Праблема з наданнем найбольшага ліку пачатковага значэння, калі карыстальнік ўводзіць ўсе лічбы ніжэй, чым тады вы даеце ім няправільны нумар. Калі вы ўсталюеце яго ў «нуль» (0) і я ўваходжу -1, -2, -3 , то я атрымаю 0, як максімум, а не -1. Такім чынам, вы павінны альбо праверыць, калі гэта першая ітэрацыя, папытаеце першы нумар перад цыклам, а затым толькі цыкл у 4 разы, або ўсталяваць найбольшая колькасць наималейшего гэта можа быць.
дададзена аўтар NathanOliver, крыніца
Я звычайна стараюся пазбягаць яго праверыць на 0/першай ітэрацыі, як вы можаце зрабіць так, што вы раней ўсталявалі самы вялікі лік, але гэта не адбываецца ў гэтым выпадку, так як гэта права./Пацісканне плячыма
дададзена аўтар Marco, крыніца
Не, я маю на ўвазе, што калі вы захаваеце яго раней, напрыклад, вы бераце яго з некаторага захоўвання або раней уведзенага нумары, вы можаце атрымаць новыя нумары і параўнаць яго да старой. Толькі робіць гэта так, калі я вярнуся і дадаваць новыя функцыі, я ніколі не прыйдзецца турбавацца пра рэдагаванне старога матэрыялу. Я не маю на ўвазе надаўшы яму значэнне, каб пачаць з. Іншы спосаб зрабіць вышэй, каб папрасіць першага нумара перад уваходам у цыкл, такім чынам пазбягаючы пустой чэк.
дададзена аўтар Marco, крыніца