0
How to find largest and smallest number using WHILE in turboC++
22 Réponses
+ 4
Mrinal Sood code is updated, now min & max value are initialized on the first input
#include <iostream>
using namespace std;
int main()
{
int x = 1, y;
// Smallest & largest
int min_v, max_v;
// Initialization state
bool initialized {false};
while (x < 11) {
cin >> y;
// Break out of the loop if
// input failed
if(!cin.good()) break;
// Initialization check, used
// to initialize min_v & max_v
// with the first value.
if(!initialized)
{
min_v = max_v = y;
initialized = true;
}
// Check whether y is less
// than min_v, if so,
// assign y to min_v
if(y < min_v)
min_v = y;
// Check whether y is larger
// than max_v, if so,
// assign y to max_v
if(y > max_v)
max_v = y;
x++;
}
cout << "Min value: " << min_v << endl;
cout << "Max value: " << max_v;
return 0;
}
+ 4
Good work Ipang
I think getting the input in two stages, one outside the while and another inside the loop, eliminates the need for auxiliary flag.
#include <iostream>
#include <limits>
using namespace std;
int main()
{
int x;
cin >> x;
int min_v, max_v;
min_v = max_v = x;
while (1) {
if (!(cin >> x)) {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
break;
}
if(x < min_v)
min_v = x;
else if(x > max_v)
max_v = x;
}
//...
}
Since infinite loop provides the possibility of getting unlimited input, to terminate the process inserting a letter for example, toggles the cin flag to false and breaks the loop.
+ 3
Assuming you're working with an array of int:
Declare two int variables, max_v & min_v. Initialize both variables value with array[0].
Setup your while loop to iterate the array, with 'i' as iterator, you can opt to start from index 1. Inside the while loop use two 'if' blocks, each used to get the min_v & max_v.
The first 'if' checks whether array[i] < min_v, assign array[i] to min_v if that yields true.
The second 'if' checks whether array[i] > max_v, assign array[i] to max_v if that yields true.
Code implementation is yours to create, good luck : )
+ 3
Mrinal Sood you are going on the right way and got pretty close to it. Here is an edited version of your code with some comments to explain the works.
#include <iostream>
using namespace std;
int main()
{
int x = 1, y;
// These two saves smallest & largest
// amongst numbers that were entered
int min_v = 0, max_v = 0;
while (x < 11) {
cin >> y;
// Here we check whether y is less
// than min_v, we assign y to min_v
// if it's true
if(y < min_v)
min_v = y;
// Here we check whether y is larger
// than max_v, we assign y to max_v
// if its true
if(y > max_v)
max_v = y;
x++;
}
cout << "Min value: " << min_v << endl;
cout << "Max value: " << max_v;
return 0;
}
Hth, cmiiw
+ 3
Mrinal Sood The 'if' block inside the loop is the part that decides the smallest & largest value, for example:
[First input]
min_v = 0, max_v = 0
Input: 4
if(y < min_v) //false, 4 is > 0
min_v = y; // not executed
if(y > max_v) //true, 4 is > 0
max_v = y; //input became max_v
[Second input]
min_v = 0, max_v = 4
Input: -5
if(y < min_v) //true, -5 is < 0
min_v = y; // input became min_v
if(y > max_v) //false, -5 is < 4
max_v = y; //not executed
And that's how it goes until the while loop ends, when it does, the min_v & max_v will have the smallest & largest value, and we print them on screen. Hope this explains better : )
+ 3
Androidus I don't see a necessity there, or a need for using large value, at anytime user input be less than min_v the input value will become the new value of min_v
+ 3
Androidus I have updated the code, now min & max are initialized with the first input, this way we can avoid having "out of input list" number for either min or max.
+ 2
hinanawi You know you don't have to be mean, right? The reason this app works is because people are kind and helpful to each other, people like you make it hard to keep a community. The guy just asked a question. If you know how to answer, then answer. If not, then don't answer.
+ 2
Thanks a lot Ipang but we havent learnt arrays till now. I'll surely try it when I learn it.
+ 2
Mrinal Sood Alright, then can you tell how many numbers there is to check for smallest & largest? the use of while loop signified there were many numbers to work with, that's why I thought you were working with array : )
Maybe you can save your code in your SoloLearn profile and post the code URL? it would help to better understand the situation ; )
+ 2
Androidus Thanks for reminding me about such possibility of input, inspired by that ...
+ 1
hinanawi yeah sure. If you have the solution plz give or dont suggest such things
+ 1
lpang
I want 10 numbers to be checked for smallest and largest
Have no idea how to do after this-->
https://code.sololearn.com/cqIdOnjZIG37/?ref=app
+ 1
Ipang THANKS A TON. It worked .
But when I assigned min_v and max_v to zero , it only displayed the maximum value correctly. But when I didn't assign any value to the variables(max and min)in the beginning, I got both maximum and minimum values.
Also, I don't understand the logic completely. How does the program know that the variables(max_v and min_v) store the maximum and minimum values?(don't judge me plz, I am just a beginner)
+ 1
Ipang if you want to initialize min and max you should initialize max with 0 and min with a big number like 1000000000
+ 1
Ipang Let's say you have these numbers: 1, 4, 8, 20, 50. If you initialize max with 0, it's gonna be smaller than all the numbers, which is what we want. If we initialize min with 0, then let's see what happens:
1. Is 1 smaller than 0? No
2. Is 4 smaller than 0? No
3. Is 8 smaller than 0? No
4. Is 20 smaller than 0? No
5. Is 50 smaller than 0? No
So, in the end, min is still 0.
If we initialized min with a big number like 1000000000 then this would be the logic:
1. Is 1 smaller than 1000000000? Yes - min becomes 1
2. Is 4 smaller than 1? No
3. Is 8 smaller than 1? No
4. Is 20 smaller than 1? No
5. Is 50 smaller than 1? No
So min becomes 1, which is the smallest number.
+ 1
Ipang guess that works too
+ 1
Ipang thanks I understood the logic now. But ,like Androidus said, if the user doesn't input a value less than 0 , the program won't be able to display the minimum value, which I think happened when I tried initializing min_v with 0.
But I haven't learnt the things you used in your updated code(bool etc-as I said I'm just a beginner- so sorry for that)
Thanks a lot Ipang and Androidus for helping me so much.
0
stop using turbo c++ first, then you can talk about doing assignments
0
our school uses turboc++ only, cant help it