Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Rylezzzz
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 6
#1

Сортировать фамилию и возраст - C++

04.06.2014, 09:56. Просмотров 362. Ответов 4
Метки нет (Все метки)

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

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

0 ≤ возраст ≤ 200
1 ≤ длина фамилии ≤ 20
1 ≤ количество строк с фамилией и возрастом ≤ 100000

Примеры
Входные данные
kozyrev 19
daneev 200
deadushki 200
butusov 0
Результат работы
deadushki 200
daneev 200
kozyrev 19
butusov 0


попробовал сделать так, но он просто тупо сортирует
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
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
 
int main()
{   
    ifstream fin("in.txt");
 
    vector<string> y;
    string buf;
    while(fin >> buf)
        y.push_back(buf);
 
    for (int j = 1; j<y.size(); j++)
    for (int i = 0; i<y.size() - j; i++)
    if (y[i]<y[i + 1])
    {
        string b = y[i];
        y[i] = y[i + 1];
        y[i + 1] = b;
    }
    ofstream fout("out.txt");
    for (int i = 0; i<y.size(); i++)
        fout << y[i] << endl;
 
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2014, 09:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировать фамилию и возраст (C++):

Получить из строки отдельно фамилию, имя, отчество, возраст и номер телефона - C++
Есть строка (массив типа char), в которой содержится информация о сотруднике: фамилия, имя, отчество, возраст и номер телефона. Как из этой...

Помогите исправить ошибку. Вывести на печать фамилию и возраст работников 3 отдела. - C++
Добрый день, помогите исправить ошибку) Вывести на печать фамилию и возраст работников 3 отдела // обработка.cpp: определяет точку...

Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы - C++
Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы. _______ Как это задание...

Дано число n, определяющее возраст человека (в месяцах). Выразить возраст человека годах и в месяцах - C++
Здравствуйте,помогите пожалуйста. Дано число n(1≤n≤1188), определяющее возраст человека (в месяцах). Выразить возраст человека годах и в...

Сортировать - C++
написать программу самым простым способом типо сортировки и так далее !!! вот задача : Задана строка, содержащая целые числа...

Сортировать числа - C++
Помогите написать код по сортировке чисел. Вводим рандомных 10 чисел, из них нужно найти самое большое четное число и поставить ее в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
04.06.2014, 10:03 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Читать нужно в вектор структур и сортировать его std::sort с предикатом.
0
Rylezzzz
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 6
04.06.2014, 10:14  [ТС] #3
можешь код написать?? а то уже ничего не соображаю, буду благодарен
0
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
04.06.2014, 13:22 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <clocale>
#include <algorithm>
#include <sstream>
 
using namespace std;
 
struct ppl_age
{
  std::string name;
  int age;
};
 
std::ostream& operator<< (std::ostream& stream, const ppl_age& age_rec)
{
   stream<<age_rec.name;
   stream<<" ";
   stream<<age_rec.age;
   return stream;
}
 
std::istream& operator>> (std::istream& stream, ppl_age& age_rec)
{
   stream>>age_rec.name;
   stream>>age_rec.age;
   return stream;
}
 
bool createTestFile()
{
   std::vector<ppl_age> age_records;
   ppl_age new_age_rec;
   new_age_rec.name = "btest";
   new_age_rec.age = 10;
   age_records.push_back(new_age_rec);
   new_age_rec.name = "btest";
   new_age_rec.age = 20;
   age_records.push_back(new_age_rec);
   new_age_rec.name = "atest";
   new_age_rec.age = 20;
   age_records.push_back(new_age_rec);
   ofstream fout;
   fout.open("ppl.txt");
   if(fout.is_open())
   {
      for(unsigned age_cnt = 0; age_cnt<age_records.size();age_cnt++)
      {
         fout << age_records[age_cnt] << endl;
      }
      fout.close();
   }
   else
   {
      cout << "Can't open output file" << endl;               
      return false;
   }   
   return true;
}
 
bool isFirstGreater(const ppl_age& first, const ppl_age&  second)
{
   if(first.age > second.age) 
      return true;
   if(first.age == second.age)
      return first.name<second.name;
   return false;
}
 
int main()
{
   createTestFile();
   std::vector<ppl_age> age_records;
   ifstream fin;
   fin.open ("ppl.txt");
   if(fin.is_open())
   {
      while(true)
      {
         ppl_age new_age_rec;
         fin>>new_age_rec;
         if(fin.good())
            age_records.push_back(new_age_rec);
         else
            break;
      }
      fin.close();
   }
   std::sort(age_records.begin(),age_records.end(),isFirstGreater);
   for(unsigned age_cnt = 0; age_cnt<age_records.size();age_cnt++)
   {
      cout << age_records[age_cnt] << endl;
   }
   system ("pause");
   return 0;
}
Примерно так. Условия поправишь по вкусу.
1
Rylezzzz
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 6
04.06.2014, 13:24  [ТС] #5
СПАСИБО! огромное))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2014, 13:24
Привет! Вот еще темы с ответами:

Сортировать матрицу - C++
Сортировать матрицу таким образом, чтобы сначала располагались все серии из одинаковых элементов, а затем - все остальные элементы.

возраст - C++
Необходимо решить задачу: Дано натуральное число N, определяющее возраст человека в годах(N&lt;100). Дать для этого числа наименование...

Сортировать по возрастанию(по алфавиту) - C++
2. Символьный массив, состоящий из 15и символов. Сортировать их по возрастанию(по алфавиту). Например: Дано: ф а п р б г д . . . . В...

Как сортировать массив - C++
В массиве положительных чисел а1,а2,...аN разместить в начале массива числа, в записи которых есть цифра &quot;0&quot;,сохраняя исходное расположение...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.06.2014, 13:24
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru