Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 23.04.2013
Сообщений: 37
1

Используя класс list, в котором храняться фамилии студентов группы, организовать поиск по фамилии

21.08.2014, 13:43. Показов 3016. Ответов 28
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дали задание: используя класс list, в котором храняться фамилии студентов группы, организовать поиск по фамилии. Не могу создать list с уже заданным содержимым.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.08.2014, 13:43
Ответы с готовыми решениями:

Из списка студентов группы вывести фамилии двух самых старших студентов.
Здравствуйте. Задача поставлена следующим образом: из списка студентов группы, где приведены...

Распечатать анкетные данные студентов интересующей вас группы. Фамилии студентов начинаются с букв I, F и G
!!!!!

Из списка студентов группы напечатать фамилии студентов-отличников
Из списка студентов группы, где приведены сведения: фамилия, оценки по трем предметам, напечатать...

В файле, содержащем фамилии студентов и их оценки, записать большими буквами фамилии тех студентов, которые имеют средний балл более "4".
В файле, содержащем фамилии студентов и их оценки, записать большими буквами фамилии тех студентов,...

28
2277 / 1768 / 741
Регистрация: 27.07.2012
Сообщений: 5,251
21.08.2014, 13:51 2
C++
1
2
3
4
std::list<string> students;
students.push_back("Иванов");
students.push_back("Петров");
students.push_back("Сидоров");
1
11 / 11 / 0
Регистрация: 04.04.2014
Сообщений: 140
21.08.2014, 13:54 3
C++
1
2
3
4
5
string stud1("Petrov");
string stud2("ivanov");
std::list<string> students;
students.push_back(stud1);
students.push_back(stud2);
Это по заполнению списка(есть сомнение, но вроде должно работать). По поиску не подскажу
1
1 / 1 / 0
Регистрация: 23.04.2013
Сообщений: 37
21.08.2014, 13:55  [ТС] 4
ясно, спасибо, думал есть ещё какие-то способы
0
2277 / 1768 / 741
Регистрация: 27.07.2012
Сообщений: 5,251
21.08.2014, 13:57 5
Цитата Сообщение от Sandir Посмотреть сообщение
думал есть ещё какие-то способы
Ну они ещё есть:
C++
1
2
string names[3] = { string("Иванов"), string("Петров"), string("Сидоров") };
list<string> students(names, names + 3);
1
317 / 179 / 73
Регистрация: 18.01.2014
Сообщений: 387
21.08.2014, 14:00 6
C++11:
C++
1
std::list<std::string> students{ "Иванов", "Петров", "Сидоров" };
1
1 / 1 / 0
Регистрация: 23.04.2013
Сообщений: 37
21.08.2014, 18:43  [ТС] 7
John Prick, а вообще есть какой-то эквивалент счетчика в list? Потому что *it выдаёт именно значение, а не номер. Поясню:
C++
1
2
3
4
5
for(list<string>::iterator it = students.begin(); it != students.end(); ++it)
if(*it == "Иванов"){
cout << "Иванов учится в этой группе" << endl;
break;
}
Но можно как-то вывести при этом его номер по списку? Или это уже двумерный список?
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
21.08.2014, 19:08 8
John Prick, а вообще есть какой-то эквивалент счетчика в list?
Нету. А если бы даже был, работал бы все равно через одно место. Такова плата за вставку/удаление за константное время. Если нужно чтоб было можно получить номер произвольного элемента, пользуйтесь vector (с линейным временем вставки-удаления).

UPD Впрочем, можете посмотреть в сторону std::distance, он вроде бы и с листом должен работать.
1
1 / 1 / 0
Регистрация: 23.04.2013
Сообщений: 37
21.08.2014, 21:42  [ТС] 9
Цитата Сообщение от Renji Посмотреть сообщение
пользуйтесь vector (с линейным временем вставки-удаления)
Не подскажите, что это?
0
317 / 179 / 73
Регистрация: 18.01.2014
Сообщений: 387
21.08.2014, 21:45 10
Цитата Сообщение от Sandir Посмотреть сообщение
Не подскажите, что это?
C++
1
2
3
4
#include <vector>
...
std::vector<std::string> students;
students.push_back("Иванов");
http://www.cplusplus.com/reference/vector/vector/
1
1 / 1 / 0
Регистрация: 23.04.2013
Сообщений: 37
21.08.2014, 21:48  [ТС] 11
и как получить порядковый номер?
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
21.08.2014, 21:49 12
и как получить порядковый номер?
it-students.begin().
1
1 / 1 / 0
Регистрация: 23.04.2013
Сообщений: 37
21.08.2014, 21:54  [ТС] 13
спасибо, буду знать
0
2277 / 1768 / 741
Регистрация: 27.07.2012
Сообщений: 5,251
21.08.2014, 23:37 14
Цитата Сообщение от Sandir Посмотреть сообщение
а вообще есть какой-то эквивалент счетчика в list? Потому что *it выдаёт именно значение, а не номер.
C++
1
int index = std::distance(students.begin(), it);
1
1 / 1 / 0
Регистрация: 23.04.2013
Сообщений: 37
22.08.2014, 12:30  [ТС] 15
John Prick, а как бы это выглядело двумерным списком?
0
2277 / 1768 / 741
Регистрация: 27.07.2012
Сообщений: 5,251
22.08.2014, 12:39 16
Sandir, что такое двумерный список?
1
1 / 1 / 0
Регистрация: 23.04.2013
Сообщений: 37
22.08.2014, 12:43  [ТС] 17
где-то видел такое:
C++
1
list<list<int> myint> mylist
Добавлено через 32 секунды
UPD просто интересно как это работает
0
2277 / 1768 / 741
Регистрация: 27.07.2012
Сообщений: 5,251
22.08.2014, 13:12 18
Ну список списков. Работает также, как и всегда. В первом списке в качестве элементов будут списки целых чисел.
1
1 / 1 / 0
Регистрация: 23.04.2013
Сообщений: 37
22.08.2014, 13:22  [ТС] 19
Вот только у меня не компилируется, кидает ошибку на эту строку "некорректный аргумент шаблона"
0
2277 / 1768 / 741
Регистрация: 27.07.2012
Сообщений: 5,251
22.08.2014, 13:30 20
Что это?
list<list<int> myint> mylist
C++
1
list< list<int> > mylist;
0
22.08.2014, 13:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2014, 13:30
Помогаю со студенческими работами здесь

Напечатать фамилии студентов группы
Задание такое: Создать список студентов, указав: фамилия, имя, отчество студента, группу, оценки...

Сортировка списка студентов группы по фамилии
Список студенческой группы записан в массиве структур. Каждая строка списка содержит фамилию...

Необходимо, чтобы в ComboBox можно было выбрать номер группы, после чего в DataGridView должны появится фамилии и имена студентов выбранной группы
Есть база данных (Access) с множеством таблиц. Для работы с ComboBox и DataGridView я использую...

Вывести на экран фамилии студентов 3 группы 1 курса
Создать список студентов из n строк (число n ввести с клавиатуры),содержащую следующую информацию :...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru