С++ «Неделя вторая - Алгоритмы - Сортировка целых чисел по модулю, Сортировка без учета регистра» #16
Запись от acmades размещена 05.08.2017 в 22:56
Показов 45359
Комментарии 7
Метки c++, c++11, sort, алгоритмы, блог, начинающие, новички, основы программирования, с++, сортировка
|
Идем дальше. Курс: «Основы разработки на C++: белый пояс» Начало в начале блога )))) Сортировка целых чисел по модулю Задание: В стандартном потоке дана одна строка, состоящая из N + 1 целых чисел. Первым числом идёт само число N. Далее следуют ещё N чисел, обозначим их за массив A. Между собой числа разделены пробелом. Отсортируйте массив А по модулю и выведите его в стандартный поток. Ограничения 0 <= N <= 1000 -1000000 <= A[i] <= 1000000 Примеры Вход - > Выход 2 -4 3 -> 3 -4 3 1 -3 2 -> 1 2 -3 Моё решение:
Сортировка без учета регистра Задание: В стандартном потоке дана одна строка, состоящая из числа N и следующих за ним N строк S. Между собой число и строки разделены пробелом. Отсортируйте строки S в лексикографическом порядке по возрастанию, игнорируя регистр букв, и выведите их в стандартный поток вывода. Ограничения 0 <= N <= 1000 1 <= |S| <= 15 Каждая строка S[i] может состоять из следующих символов: [0-9,a-z,A-Z] Примеры stdin - > stdout 2 q A -> A q 3 a C b -> a b C Моё решение:
Продолжение следует... | ||||||||||
Метки c++, c++11, sort, алгоритмы, блог, начинающие, новички, основы программирования, с++, сортировка
Размещено в Основы разработки на C++: белый пояс
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 7
Комментарии
-
А как вам такой вариант, он очень схож с вашим, но мне кажется, что писанины чуть меньше.
C++ 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
#include <vector> #include <iostream> #include <algorithm> #include <string> using namespace std; string Decrease(string& s) { // тут все как у вас, пишу доп. функцию string tomain; for (auto& i : s) { tomain += tolower(i); } return tomain; } int main() { int quantity;// кол-во вводимых значений string SortingString;// сами значения vector <string> AddingDatabase; //куда без вектора, хотел через множества, но я не стал разбираться с найстройкой сортировки cin >> quantity; for (; quantity > 0; quantity--) { cin >> SortingString; AddingDatabase.push_back(SortingString); } sort(begin(AddingDatabase), end(AddingDatabase), []( string& str1, string& str2) { return Decrease(str1) < Decrease (str2); /* вот тут и значительные изменения, не стал выносить все в отдельную функцию, а просто сделал лямбду*/ }); // ну а дальше все проще пареной репы for (const auto& item : AddingDatabase) { cout << item << " "; } return 0; }
Запись от Albatrosso размещена 08.08.2017 в 11:43
-
Да нет )))) писанины столько же. У меня комментариев много просто. Функцию srt тоже мог вынести в "лямбду", но если комментарии убрать, то кода почти столько же (разница в пару слов). Кроме того я просто хотел показать, что можно вообще обойтись без дополнительной функции str_to_low, но по какой то причине coursera не хочет принимать transform(может на данном этапе не предусмотрено или я накосячил).
Сообщение от Albatrosso
Запись от acmades размещена 08.08.2017 в 16:50
-
скорее дело в косяке, курсера приняла у меня min на первой неделе, когда нужно было найти минимальную из строк, а значит им побоку как мы решаем задачи, им важно чтобы мы соблюли все условия. Если бы было указано, что transform использовать нельзя, то так оно и было бы.
Сообщение от acmades
Запись от Albatrosso размещена 11.08.2017 в 10:17
-
полагаю, что продолжения у блога не будет, жаль. На первых парах ваши посты лично мне очень помогли. Именно из ваших постов я очень много полезного узнал.Запись от Albatrosso размещена 20.08.2017 в 18:29
-
Будет ))) Завтра выложу еще 2 недели учебы.
Сообщение от Albatrosso
Запись от acmades размещена 20.08.2017 в 19:02
-
C++ 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
#include <iostream> #include <vector> #include <algorithm> using namespace std; bool gt_abs(int i,int j) { return (abs(i)<abs(j)); } int main(){ int n = 0; cin >> n; int temp = 0; vector<int> v; for (int i=0;i<n;i++){ cin >> temp; v.push_back(temp); } sort(v.begin(),v.end(),gt_abs); for (int i=0;i<v.size();i++){ cout << v.at(i)<<" "; } return 0; }
Запись от flash_back размещена 23.10.2017 в 13:04
-
C++ 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
#include <iostream> #include <vector> #include <string> #include <algorithm> #include <ctype.h> using namespace std; string str_low(string s){ transform(s.begin(), s.end(), s.begin(), tolower); return s; } bool gt_abs(string s1,string s2) { return (str_low(s1)<str_low(s2)); } int main(){ int n = 0; cin >> n; string temp = ""; vector<string> v; for (int i=0;i<n;i++){ cin >> temp; v.push_back(temp); } sort(v.begin(),v.end(),gt_abs); for (int i=0;i<v.size();i++){ cout << v.at(i)<<" "; } return 0; }
Запись от flash_back размещена 23.10.2017 в 13:18


