if statement posted twice?

Hi guys. I'm a beginner at C++, and I'm trying to do an exercise on ifs inside ifs.

First image: http://img51.imageshack.us/img51/5851/b9qt.jpg
No else if statement so it was posted twice, but why does it have the wrong logic? The second statement posted is correct, though. o_o

Second image: http://img96.imageshack.us/img96/1351/94bc.jpg
Used else if statements this time, posted once, but wrong logic. I've analysed the code over and over, and I can't find anything wrong with it. XD
Shouldn't the logic used belong under the last statement? o_o

1
2
3
4
5
6
7
8
9
10
11
12
int number1, number2, number3, number4, number5;

printf("\n\n First number: ");
scanf("%d", &number1);
printf("\n Second number: ");
scanf("%d", &number2);
printf("\n Third number: ");
scanf("%d", &number3);                                                       
printf("\n Fourth number: ");
scanf("%d", &number4);   
printf("\n Fifth number: ");                                                       
scanf("%d", &number5);


I don't think there's anything wrong with my variables either. :x

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
                                                       if(number1 >= number2 && number3 && number4 && number5){                                                                   
                                                                   if(number2 >= number3 && number4 && number5){
                                                                              
                                                                               if(number3 >= number4 && number5){
                                                                                           if(number4 >= number5){
                                                                                              printf("\n\n Your numbers have been sorted: ");
                                                                                              printf("%d, %d, %d, %d, %d.", number1, number2, number3, number4, number5);                                                                                                       
                                                                                                       
                                                                                              printf("\n\n\n Program will now terminate..");
                                                                                           }            
                                                                                           else if(number5 >= number4){
                                                                                              printf("\n\n Your numbers have been sorted: ");
                                                                                              printf("%d, %d, %d, %d, %d.", number1, number2, number3, number5, number4);                                                                                                       
                                                                                                       
                                                                                              printf("\n\n\n Program will now terminate..");                                                                                       
                                                                                           }  
                                                                               }
                                                                               else if(number4 >= number3 && number5){
                                                                                           if(number3 >= number5){
                                                                                              printf("\n\n Your numbers have been sorted: ");
                                                                                              printf("%d, %d, %d, %d, %d.", number1, number2, number4, number3, number5);                                                                                                       
                                                                                                       
                                                                                              printf("\n\n\n Program will now terminate..");
                                                                                           }            
                                                                                           else if(number5 >= number3){
                                                                                              printf("\n\n Your numbers have been sorted: ");
                                                                                              printf("%d, %d, %d, %d, %d.", number1, number2, number4, number5, number3);                                                                                                       
                                                                                                       
                                                                                              printf("\n\n\n Program will now terminate..");                                                                                                   
                                                                                           }

                                                                               }
                                                                               else if(number5 >= number3 && number4){
                                                                                           if(number3 >= number4){
                                                                                              printf("\n\n Your numbers have been sorted: ");
                                                                                              printf("%d, %d, %d, %d, %d.", number1, number2, number5, number3, number4);                                                                                                       
                                                                                                       
                                                                                              printf("\n\n\n Program will now terminate..");
                                                                                           }            
                                                                                           else if(number4 >= number3){
                                                                                              printf("\n\n Your numbers have been sorted: ");
                                                                                              printf("%d, %d, %d, %d, %d.", number1, number2, number5, number4, number3);                                                                                                       
                                                                                                       
                                                                                              printf("\n\n\n Program will now terminate..");                                                                                                   
                                                                                           }
    
                                                                               }                                                                                            
                                                                   }                                                                                                                                                                                                                            
                                                       }
Last edited on
Hi there,

Please reformat your code in order to make your code easier to read. Some problems I can see :

1. There are so many extra whitespace. Maybe you used spaces in formatting, or your tab size is too high.
If your problem is the first one, please use tab instead.
If your problem is the last one, try adjusting your tab size, and try again.

2. You should use cin & cout. They simplify your code and make your code easier to read. Avoid using printf & scanf unless you have to.

http://www.cplusplus.com/reference/iostream/cin/
http://www.cplusplus.com/reference/iostream/cout/

3. There are so many the exact same messages. Actually, in most cases you'll only need to output once.

printf("\n\n Your numbers have been sorted: "); printf("\n\n\n Program will now terminate..");

And finally, your code should look like this :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <stdio.h>
#include <conio.h>

using namespace std;

int main()
{
	int num1, num2, num3, num4, num5;

	cout << "First number: ";cin >> num1;
	cout << "Second number: ";cin >> num2;
	cout << "Third number: ";cin >> num3;
	cout << "Forth number: ";cin >> num4;
	cout << "Fifth number: ";cin >> num5;
	cout << endl;
	
	cout << "Your numbers have been sorted: ";

	if(num1 >= num2 && num3 && num4 && num5)
	{
		if(num2 >= num3 && num4 && num5)
		{
			if(num3 >= num4 && num5)
			{
				if(num4 >= num5)
				{
					printf("%d, %d, %d, %d, %d.\n", num1, num2, num3, num4, num5);
				}
				else if(num5 >= num4)
				{
					printf("%d, %d, %d, %d, %d.\n", num1, num2, num3, num5, num4);
				}
			}
			else if(num4 >= num3 && num5)
			{
				if(num3 >= num5)
				{
					printf("%d, %d, %d, %d, %d.\n", num1, num2, num4, num3, num5);
				}
				else if(num5 >= num3)
				{
					printf("%d, %d, %d, %d, %d.\n", num1, num2, num4, num5, num3);
				}
			}
			else if(num5 >= num3 && num4)
			{
				if(num3 >= num4)
				{
					printf("%d, %d, %d, %d, %d.\n", num1, num2, num5, num3, num4);                                                                                                       
				}
				else if(num4 >= num3)
				{
					printf("%d, %d, %d, %d, %d.\n", num1, num2, num5, num4, num3);
				}
			}
		}                                                                                                                                                                                                                            
	}

	cout << "Program will now terminate.." << endl;

	getch();
	return 0;
}
Last edited on
Hi tkmdr,

if(number1 >= number2 && number3 && number4 && number5){

If number3, number4, number5 are not zero, then this is equivalent to :

if(number1 >= number2){

because var1 && var2 evaluates to true unless both are zero. This especially a problem if the variables are not initialised, because then they are almost certain not to be zero.

is that what you wanted?

Maybe you wanted this:

if(number1 >= number2 && number1 >= number3 && number1 >= number4 && number1 >= number5){

With the formatting, cplusplus makes tabs 8 spaces, so to make the formatting look better on this page, change the settings in your IDE so that tabs are 4 spaces say.
Topic archived. No new replies allowed.