![]() |
|
Модераторы: bsa |
![]()
|
|
| Thief |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 6.11.2008 Репутация: нет Всего: нет |
Требуется создать программу по сортировке сотрудников по возрасту. Сама программа сортирует по возрасту, но как сделать так, чтобы можно было вводить и фамилии ещё и при этом всё нормально сортировалось?
Это сообщение отредактировал(а) bsa - 6.11.2008, 18:15 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Thief, сделай структуру, в которой поля будут "имя", "фамилия" и "возраст". Затем сортируй по одному из полей.
|
|||
|
||||
| Thief |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 6.11.2008 Репутация: нет Всего: нет |
Сделал структуру, но снова проблемы((( Как сделать так, чтобы ФИО можно было вводить русскими буквами, а то у меня после сортировки выводяться вместо букв значки? Помогите, пожалуйста, исправить сортировку ( сротирует по имени, а надо по возрасту).
|
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Ну а в чем проблема? Не можешь сравнивать поле age или family?
Я бы на твоем месте создал функцию swap, которая бы меняла местами две структуры:
|
||||
|
|||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
ну а чтобы было совсем хорошо имхо стоит сделать класс, с переопределенными operator=, копирующим конструктором, operator>, operator>=, etc.
использовать для сортировки std::sort или иные (по вкусу)... и т.п.... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
||||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Уж лучше создать функциональные объекты, для конкретного сравнения (по фамилии, по имени или по возрасту) для обоих направлений, которые и поставлять третьим параметром в sort. |
|||
|
||||
| Thief |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 6.11.2008 Репутация: нет Всего: нет |
Всё исправил, почти всё работает ( с кодировкой не могу разобраться ). Большое спасибо тем кто помогал!!! Но как сделать так, чтобы ФИО можно было вводить русскими буквами, а то у меня после сортировки выводяться вместо букв значки? Может подскажет кто? А то у меня не получается.
#include <locale.h> setlocale(LC_ALL, "Russian") написаны, но ФИО русскими буквами не выводяться ((( |
|||
|
||||
| Lorigin |
|
|||
|
Печатаю фото на холс Профиль Группа: Участник Сообщений: 29 Регистрация: 11.3.2008 Где: Москва Репутация: нет Всего: нет |
если в студии:
|
|||
|
||||
| Thief |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 6.11.2008 Репутация: нет Всего: нет |
Я всё равно не могу понять, почему после сортировки мои ФИО не пишутся по-русски. Ведь printf("По окончании ввода всех данных нажмите ENTER.\n\n"); printf("Пожалуйста, введите фамилию: \n"); нормально выводяться на русском, а эти отсортированные нет. Может кто-нибудь всё-таки покажет на моём примере как это реализовать. Я буду очень признателен, потому что самому не додуматься.
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Thief, напиши простейшую программу, которая будет вводить строку с клавиатуры и выводить ее на экран
|
|||
|
||||
| Thief |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 6.11.2008 Репутация: нет Всего: нет |
не понял, зачем?
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Затем, чтобы узнать где проблема с кодировкой. |
|||
|
||||
| Thief |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 6.11.2008 Репутация: нет Всего: нет |
После сортировки мои ФИО пишутся по-русски: удалил #include <locale.h> setlocale(LC_ALL, "Russian") и всё заработало. Я пробовал использовать функцию OemToChar, но компилятор выдавал ошибку.
Также в простой программе использовал функцию OemToChar. Но компилятор выдаёт ту же ошибку: error C2664: 'CharToOemW' : cannot convert parameter 1 from 'const char *' to 'LPCWSTR' Подскажите пожалуйста, в чём может быть проблема.
Это сообщение отредактировал(а) Thief - 15.11.2008, 15:06 |
|||
|
||||
| Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
Если пишешь в студии то можно в настройках проекта отключить использование юникода (Project -> Properties -> Configuration Properties -> General -> Character Set -> Поставить Not Set) это должно помочь.
Это сообщение отредактировал(а) Crafty - 15.11.2008, 15:47 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |