Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 17.06.2015
Сообщений: 27

Как отсортировать массив по количеству символов?

22.02.2019, 23:20. Показов 4785. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как отсортировать массив по количеству символов?

Например у меня есть структура в ней есть параметры работника и есть его имя. Потом я создаю массив из структуры Работник и пложу этих работников: Виктор, Константин, Антон и Лев. Задача отсортировать их по количеству символов, по возрастанию, а лучше по убыванию. И вывести на консоль.

Я вроде бы догадываюсь как это сделать, но охотно хочется посмотреть что предложат на форуме.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.02.2019, 23:20
Ответы с готовыми решениями:

Отсортировать предложения по количеству символов в них
В файле записан текст. Вывести предложения этого текста в порядке возрастания.

Отсортировать файл по словам (по количеству символов в слове), по убыванию. Delphi 7
Отсортировать файл по словам (по количеству символов в слове), по убыванию.

Отсортировать строки по количеству символов в строках и записать их в этот же файл
3.1. Создать файл, состоящий из 10 строк-предложений. Отсортировать строки по количеству символов в строках и записать их в этот же файл.

8
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
23.02.2019, 10:22
C++
1
2
3
4
5
6
// a - worker array
 
sort(a.begin(), a.end(), [](const auto& a, const auto&b) {
  return a.name.length() < b.name.length();
  // >
});
1
0 / 0 / 0
Регистрация: 17.06.2015
Сообщений: 27
23.02.2019, 11:55  [ТС]
Можно поподробней

Добавлено через 16 минут
Это всё в header:

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
struct worker
{
    char name[25]; // Имя работника
};
 
void ShellSort(worker *workerS, int size)
{
    int *charray = new int[size];
 
    for(int first=0; first < size; first++)
    {
        charray[first] = strlen(workerS[first].name);
    }
    int temp;
            for (int i = 0; i < size - 1; i++) {
                for (int j = 0; j < size - i - 1; j++) {
                    if (charray[j] > charray[j + 1]) {
                        temp = charray[j];
                        charray[j] = charray[j + 1];
                        charray[j + 1] = temp;
                    }
                }
            }
    for(int third=0; third < size; third++)
    {
        workerS[third].name = charray[third];
    }
 
 
}

Это уже в main()
К слову массив name уже заполнен некоторыми именами.
C++
1
2
3
4
5
ShellSort(workerS, n2);
                for (int i = 0; i < n2; i++)
                {
                    cout << i+1 <<" Работник: "<<workerS[i].name << endl;
                }

Застрял... возможно я совсем неправильным путём пошёл..
0
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
23.02.2019, 12:51
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct Worker {
  string name;
};
 
int32_t main() {
  int n;
  cin >> n;
 
  vector<Worker> workers(n);
  for (auto& i : workers)
    cin >> i.name;
 
  sort(workers.begin(), workers.end(), [](const auto& a, const auto& b) {
    return a.name.length() < b.name.length();
  });
}
0
0 / 0 / 0
Регистрация: 17.06.2015
Сообщений: 27
23.02.2019, 14:32  [ТС]
Не могу понять из-за вектора, почему традиционно не сделать(
0
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
23.02.2019, 14:39
Levyndra,

C++
1
2
3
Worker* workers = new Worker[n];
 
sort(workers, workers + n, ...)
0
0 / 0 / 0
Регистрация: 17.06.2015
Сообщений: 27
23.02.2019, 14:56  [ТС]
Допишите пожалуйста дальше, пока этот кусочек понял, но то, что после ...
0
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
23.02.2019, 15:10
Levyndra,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct Worker {
  string name;
};
 
int32_t main() {
  int n;
  cin >> n;
 
  Worker* workers = new Worker[n];
  for (int i = 0; i < n; ++i)
    cin >> workers[i].name;
 
  sort(workers, workers + n, [](const auto& a, const auto& b) {
    return a.name.length() < b.name.length();
  });
}
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
23.02.2019, 15:48
Цитата Сообщение от ReDoX Посмотреть сообщение
a.name.length() < b.name.length()
Levyndra, лямбда-функции (которую можно заменить именем предеката) находится условие, которое можно использовать хоть в пузырьке, хоть где-то ещё. Это та строчка которая отвечает за
Цитата Сообщение от Levyndra Посмотреть сообщение
по количеству символов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.02.2019, 15:48
Помогаю со студенческими работами здесь

Массив с тегами отсортировать по количеству повторений тегов в базе
есть функция, достающая теги из статей и считающая, сколько раз повторяется тот или иной тег. хочу сделать так, чтобы массив с тегами был...

Отсортировать массив строк по количеству слов в каждом предложении-строке
Подскажите как сделать пожалуйста!? Для ввода задано несколько предложений-строк. Отсортировать их по количеству слов в каждом...

ПОМОЧЬ отсортировать массив по количеству бит, равных 0 (в двоичной форме)
Полное задание такое ПОРАЗРЯДНЫЕ ОПЕРАЦИИ : 24. Дан массив из элементов типа unsigned char. Вывести массив в порядке возрастания по...

Создать массив из действительных чисел. Отсортировать его по количеству значащих цифр в дробной части
Создать массив из действительных чисел. Отсортировать его по количеству значащих цифр в дробной части . Данные в массив следует читать из...

Как отсортировать строки по количеству слов?
Здравствуйте. Дан текст, нужно отсортировать предложения по количеству слов в них и вывести обратно текст на экран. Я разбил текст на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru