Помогите со строками в C - PullRequest
       3

Помогите со строками в C

1 голос
/ 21 апреля 2010

Учитывая переменные char * name1, name2 и name3, напишите фрагмент кода, который назначает наибольшее значение переменной max (предположим, что все три уже объявлены и им присвоены значения).

Я пытался и придумал это:

    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;
}

Однако я получаю эту ошибку. Ваш код неверен. Вы не справляетесь с ситуацией где две или более строки равны.

решаемые ...

Ответы [ 2 ]

1 голос
/ 21 апреля 2010

Осторожно: strcmp делает не делает числовое сравнение!

То есть

strcmp("10","2")

возвращает отрицательное значение, указываячто "2" больше, чем "10", что почти наверняка не , что вы хотите.

Вы, вероятно, хотите преобразовать строки в числа некоторого вида перед сравнением.Попробуйте использовать sprintf или atoi или atof или strtod.

1 голос
/ 21 апреля 2010

strcmp возвращает 0, если ваши строки равны

Я оставлю это вам, чтобы выяснить, почему вы не справляетесь с этим.

Edit:

Бобу и Алисе 10 лет.
Каков максимальный возраст?

Подсказка: это не неопределенно .... это 10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...