tags:

views:

175

answers:

2

Given the char * variables name1 , name2 , and name3 , write a fragment of code that assigns the largest value to the variable max (assume all three have already been declared and have been assigned values).

I've tried and came up with this:

    if ((strcmp(name1,name2)>0)&&(strcmp(name1,name3)>0)){
max=name1;
}
else if ((strcmp(name2,name1)>0)&&(strcmp(name2,name3)>0)){
max=name2;
}
else if((strcmp(name3,name1)>0)&&(strcmp(name3,name2)>0)){
max=name3;
}
else if(strcmp(name3,name1)==0){
max=name1,name3;
}
else if (strcmp(name2,name1)==0){
max=name2,name1;
}
else if (strcmp(name2,name3)==0){
max=name2,name3;
}
else{
max=name1,name2,name3;
}

However, I get this error Your code is incorrect. You are not handling the situation                where two or more strings are equal.

Solved...

+1  A: 
Brian R. Bondy
100% agree with that statement!
Marlon
Yeah and it returns a positive value if x>y in terms of strcmp(x,y).
DomX23
Wow, I finally got it... I like how you guys make me solve the answer myself without providing code.
DomX23
That's how it works here! =)
Chris Cooper
+1  A: 

Watch out: strcmp does not do numeric comparison!

That is

strcmp("10","2")

returns a negative value, indicating that "2" is bigger than "10" which is almost certainly not what you want.

You probably want to convert the strings to numbers of some kind before comparing. Consider using sprintf or atoi or atof or strtod.

dmckee