2015-04-29 2 views
0

У меня есть программа на C++, где мне дают большой файл учеников UC, который already sorted by ID. Мне нужно sort его school name они посещают, и учащиеся, посещающие same school, будут sorted by ID в порядке возрастания.Как сравнить две строки? (Меньше)

ie. Joe Paarmann,3,UCB 

Мне нужно реализовать данную функцию

Его compareBySchoolName (Student s1, s2), которая сравнивает два студента по имени школы он должен вернуть истинен тогда и только тогда, когда s1 школа приходит раньше (меньше) s2 school

и использовать функцию сортировки сортировать (студенты, студенты + len, compareBySchoolName);

Моя проблема заключается в том, как сравнивать имена школ, так как они являются строками? Я смущен, как начать это. Спасибо, любая помощь очень ценится.

bool compareBySchoolName(Student s1, Student s2) { 
} 
+0

Было бы очень полезно, если вы указали, какой язык программирования вы используете – makhan

+0

Это действительно не имеет смысла для функции сортировки, используйте функцию, извлекающие как вы сказали. Обычно методы сравнения возвращают int, что по соглашению должно быть -1, если сначала second –

+0

О, его C++, nvm then ... –

ответ

0

Ok Buddy, от этой ссылке: http://www.cplusplus.com/reference/algorithm/sort/

вы можете увидеть, что параметр комп делает следующее:

Binary функция, которая принимает два элемента в диапазоне в качестве аргументов, и возвращает значение, конвертируемое в bool. Возвращаемое значение указывает , считается ли элемент, переданный как первый аргумент, перед вторым в определенном строгом слабом порядке его определения. Функция не должна изменять какие-либо ее аргументы. Это может быть либо указатель функции , либо объект функции.

Так все, что вам нужно сделать, это

bool compareBySchoolName(Student s1, Student s2) { 
return s1.SchoolName< s2.SchoolName; 
} 
0

Вы можете, вам нужно решить, как вы собираетесь сравнивать строки. Я предлагаю вам использовать алфавитный порядок слов слева направо. вы не можете реализовать логику, если не знаете, какую логику вы хотите реализовать :).

0

Вы можете сделать следующее,

a.compareTo(b); //where a and b are your two strings 

Он возвращает целое значение, и на его основе можно решить. Подробнее here

0

Просто сравните его, если вы используете C++ строки C++ String Relational Operators

bool compareBySchoolName(Student s1, Student s2) { 
 
    return s1.schoolName < s2.schoolName || (s1.schoolName == s2.schoolName && s1.ID < s2.ID); 
 
}

0

другого язык имеют разные компараторы function.When вы используете функцию компаратора, то он будет получать return int value. Итак, вы используете <or> в return сателлите и получите true или false.

В C++, вы можете сделать это, как:

bool compareBySchoolName(Student s1, Student s2) { 
    return s1.schoolName < s2.schoolName || (s1.schoolName == s2.schoolName && s1.ID < s2.ID) 

} 
Смежные вопросы