Предмет: Информатика, автор: carsar38

Сделать программу на c++ :Даны строки: имя фамилия отчество ,
Нужно чтобы программа выдавал отчества в алфавитном порядке, как это можно сделать?


ShredingerCat: Если перефразировать, то вас есть некоторое количество массивов, состоящих из 3-х строк: Ф., И., О? Я правильно понял?
ShredingerCat: Вы подаете эти массивы (например [Иванов, Иван, Иванович], [Сергеев, Сергей, Сергеевич] ) на функцию, которую хотите написать, и она должна вам вернуть массив из Отчеств, отсортированных в алфавитном порядке (например, [Иванович, Сергеевич]) ?
ShredingerCat: А не, вроде понял, что нужно: отсортировать строки ФИО в алфавитном порядке.
carsar38: В принципе не играет роли как это может быть как 1 строка ФИО или как набор символов, нет ограничений, а вывести нужно только отчества в алф порядке отбросив ФИ

Ответы

Автор ответа: ShredingerCat
2

Код не слишком удобно вставлять, поэтому прикрепляю прогу в файле.

Идея:

  1. Выделить отчество: добавляем в новый вектор буквы после второго пробела ФИО - получаем отчество, и так для всех ФИО - получаем вектор с отчествами.
  2. Отсортировать вектор с отчествами. Делаем с помощью стандартной функции sort, а условие сортировки - буква первого элемента младше буквы второго элемента вектора.
Приложения:

carsar38: В принципе все в этой проге классно, но можно обойтись без векторов?
ShredingerCat: Чем они не приглянулись? :)
carsar38: Никогда не встречался с векторами даже, мы их не проходили еще), а вообще вопрос, что делает: vector full_names... что обозначает string в ковычках?
ShredingerCat: Вектор - тот же массив, который выделяется на куче (структура данных в оперативке - доступ напрямую по адресу в памяти). Плюс у вектора есть много методов, которые предоставляют удобство программисту.
ShredingerCat: В этнерпрайзе везде используют вектора, но не обычные массивы (если не нужна супер оптимизация, где критично время обращения к менеджеру кучу - маленькая часть операционки, которая дает память программе в рантайме). А string в треугольных кавычках - это элемент вектора (аля массив, состоящий из строк). Треугольные кавычки потому, что вектор - шаблон. П.С обычный массив выделяется на стеке при компиляции (если только не юзаешь специальные операторы типа new).
ShredingerCat: Это я все к тому, что про векторы можно почитать как можно раньше :)
carsar38: А можно векторы здать с клавы ну как в массиве строк?
ShredingerCat: Можно. Читаешь в строку, а потом заталкиваешь ее в конец вектора:
std::vector vector_of_strings;
std::string tmp_string;

std::cin >> tmp_string;
vector_of_strings.emplace_back(tmp_string);
ShredingerCat: К сожалению, в предыдущем комменте заметил, что удаляется все, что указано в треугольных скобках. Нужно vector"треугольная скобка"string"треугольная скобка" vector_of_strings ...
Похожие вопросы
Предмет: Английский язык, автор: karpachokori
Предмет: Геометрия, автор: ILOVEYOU99