## sing1006 -5

well,this is my college assignment question.the question ask us to write a program that can compare 3 number,who is the biggest and smaller.the output should be like this:

Enter 3 numbers.
Number1:
Number2:
Number3:

1)Find the biggest value among the 3 value you have enter juz now.
2)Find the smallest value among the 3 value you have enter juz now.
3)Exit program

Here are my coding for the upper part.

``````#include<iostream.h>
void main(){

int num1,num2,num3,x,max;

cout<<"Enter 3 numbers."<<endl;
cout<<"Number1:";
cin>>num1;
cout<<"Number2:";
cin>>num2;
cout<<"Number3:";
cin>>num3;

<<"1)Find and Display Biggest Number"<<endl
<<"2)Find and Display Smallest Number"<<endl
<<"3)Exit program"<<endl;
cin>>x;

if(x==1){
if(num1>num2 && num1>num3){
max=num1;
cout<<max;
}else if(num2>num1 && num2>num3){
max=num2;
cout<<max;
}else if(num3>num1 && num3>num2){
max=num3;
cout<<max;``````

what i want to ask is the lower part of this question.start from if statement there.is that correct?inside the if statement still can have if statement?

## papanyquiL 45

I think a switch statement would be more efficient here.

## sing1006 -5

huh....at lower part there need to check 2 condition right?1 is for main menu ones.and another 1 is to check the 3 value.so,what i want to ask is how should i use the those selection statement.i mean the arrangement.which 1 1st.and how to put.T^T

## ravenous 266

I think what you have is a reasonable start. You have the right idea, using nested `if` statements is one way to do it. I think that papanyquiL is correct that a `switch()... case` statement would be more tidy (for deciding which choice the user has made). I would probably go for a structure like:

``````do{
std::cin >> choice;

switch(choice){
case 1:    max(num1, num2, num3);
break;
case 2:    min(num1, num2, num3);
break;
case 3:    break;
break;
}
}while(choice != 3);``````

Then you would make functions to calculate and display the max and min etc.

## sing1006 -5

looks like u misunderstand what i code up there.int max up there mean biggest value.for example,i enter 1,2,3 at 1st,then the main menu come out.then,i enter 1,after that,it will find the biggest value and that is 3.sorry for my lousy English.
can u help me check is that any wrong in my switch statement below.i cant get the biggest value.

``````switch(x==1){
case 1:num1>num2 && num1>num3;
cout<<num1;
break;
case 2:num2>num1 && num2>num3;
cout<<num2;
break;
case 3:num3>num1 && num3>num2;
cout<<num3;
break;
default:cout<<"You have enter at least 2 same number.";
break;
};``````

## ravenous 266

No, I'm afraid you have misunderstood. But don't worry, that's why we have this kind of forum :)

The `switch()... case` statement is used (in this case) to decide which path to take; to calculate the minimum, maximum or to exit. It is not, as you have it, for deciding which number is the maximum. You should use a function to decide which number is actually the max, min or whatever.

A function can be defined by you in your code to do certain things, for example in your case it could "return the maximum of three numbers. When you define a function you need to tell the computer three things:

1. What kind of variable is returned by the function when it has done the thing that it was supposed to do. For example, an `int` , `char` or `double` .
2. What is the name of the function, so that you can write it in your code and the compiler will know what you want it to do.
3. The arguments of the function. These are the variable that you give to the function so that it can do its job. In your case, the three numbers that the user entered (which are all of type `int` ).

So, you might want a function called `max` that takes three integers as arguments and returns and integer, which would be the maximum of the three arguments. We would declare this function at the top of the code, like this:

``````#include <iostream>

int max(int, int, int);  /* Declaration of max function */

int main(){

/* The rest of your code goes here */``````

The function declaration starts with the return-type (the kind of variable that's returned by the function. Sometime a function doesn't return a variable at all, e.g. if it just prints a message to the screen, in this case we use `void` as the return-type). In this case the return type is an `int` , but that's just for this example, it could be any variable type, depending on what you want the function to do. Then there is the function name, `max` and finally, in round brackets after the name is the argument list. Again, here they're all `int` but that's just for this function, they could be any kind of variable type.

This line doesn't actually calculate the maximum, it just warns the compiler that you're going to make a function with these details at some point. The next thing is to make a function implementation, which is where you actually do the calculations. The best part is that you have already written a perfectly good implementation in your code, so we can just go ahead and copy that into the implementation of `max` . The implementation can go anywhere outside `main()` and below the declaration of the function, it can even go in a completely different file! A standard place to put the implementation (in a small program like this) is after `main()` . So, now your program might look like:

``````#include <iostream>

/* The function declaration, again */
int max(int, int, int);

int main(){
/* Insert your bit for getting the user to enter the three numbers here... */
/* ... and to print the menu */

/* Use a do... while loop to keep repeating the program until the user asks to stop */
do{
int result;   /* use this to store the result of the min/max calculation */
int choice;   /* Use this to store the user's menu choice                */

std::cin >> choice;

/* Use a switch()... case to process the user's menu choice */
switch(choice){
/* They've chosen '1', so calculate the max */
case 1:    result = max(num1, num2, num3);
std::cout << result << std::endl;
break;
/* They've chosen '2', so calculate the min */
case 2:    result = min(num1, num2, num3);
std::cout << result << std::endl;
break;
/* They've decided to exit, so maybe print a "goodbye" message */
case 3:    exitMessage();
break;
/* They've made a choice that doesn't exist, so maybe print a message */
/* That reminds them of the possible choices                          */
break;
}
}while(choice != 3);   /* If the user chose '3' then they wanted to exit the program, otherwise carry on looping! */

/* Done! */
return 0;
}
/* MAIN FINISHES HERE !               */
/* NOW FUNCTION IMPLEMENTATIONS START */

/* Implementation of the max function, notice the arguments have names now, as well as types */
int max(int num1, int num2, int num3){
int max;   /* This is going to be the value that we return */
/* Now find the maximum, just like you did before */
if(num1>num2 && num1>num3){
max=num1;
}else if(num2>num1 && num2>num3){
max=num2;
}else if(num3>num1 && num3>num2){
max=num3;
}

/* Once you've decided the maximum, you 'return' it                    */
/* This has the effect of inserting this number in the place where you */
/* originally called the function in the main()                        */
return max;
}``````

This code will not compile, since you still need to make functions for `min()` , `exitMessage()` and `badChoice()` (declarations and implementations), but hopefully you get the idea: functions help keep code tidy and reduce the need to repeat yourself.

## sing1006 -5

ok,i try to understand the coding above and i come out wif the the thing like this.

``````#include<iostream.h>
int max(num1,num2,num3);
int min(num1,num2,num3);
void main(){

cout<<"Enter 3 numbers."<<endl;
cout<<"Number1:";
cin>>num1;
cout<<"Number2:";
cin>>num2;
cout<<"Number3:";
cin>>num3;

<<"1)Find and Display Biggest Number"<<endl
<<"2)Find and Display Smallest Number"<<endl
<<"3)Exit program"<<endl;

do{
int result;
int choice;
cin>>choice;

switch(choice){
case 1:result=max(num1,num2,num3);
cout<<result<<endl;
break;
case 2:result=min(num1,num2,num3);
break;
case 3:
cout<<"Goodbye";
break;
default:cout<<"Invalid Entry";
break;
};
while(choice!=3);
}
int max(num1,num2,num3){
int max;
if(num1>num2 && num1>num3){
max=num1;
}else if(num2>num1 && num2>num3){
max=num2;
}else if(num3>num1 && num3>num2){
max=num3;
}
return max;
}
int min(num1,num2,num3){
int min;
if(num1<num2 && num1<num3){
min=num1;
}else if(num2<num1 && num2<num3){
min=num2;
}else if(num3<num1 && num3<num2){
min=num3;
}
return min;
}``````

since i using void main.did i still need to write the return max or return min?and what is mean by std?our lecturer haven't teach about that yet,what is it use for?

## ravenous 266

since i using void main.did i still need to write the return max or return min?and what is mean by std?our lecturer haven't teach about that yet,what is it use for?

1. You should use `int main()` , not `void main()` , see here
2. You should use `#include <iostream>` not `#include<iostream.h>` . Using `<iostream.h>` means that you're not using the `std` namespace, google for "C++ namespace" and I'm sure you will get lots of pages. If you use `<iostream>` you will get an error saying that the functions `cout` and `endl` aren't recognised. In this case, you have to use `std::cout` and `std::endl` etc.
3. Carefully compare the code you posted with the code that I posted. There are a number of important differences (apart from the ones that I mentioned above). Understand these and fix them and you might have more luck :)

Apart from these issues, your program is nearly done.

Also, if you want to understand more about what happens when you call functions, I made another post here. It's mostly about why you shouldn't call `main()` , but it has a description of what we mean when we say a function "returns".