Лабораторная работа 5. Классы и функции
Задание 1: Базовая структура
Объявите перечисление
MusicGenreс музыкальными жанрамиСоздайте структуру
Songс полями: id, название, исполнитель, альбом, год, жанр, длительность, количество прослушиванийНапишите функцию
addSong()для добавления трека в коллекцию
Задание 2: Функции вывода
Напишите функцию
printSong()для вывода информации о трекеСоздайте функцию
displayAllSongs()для показа всей коллекцииНапишите функцию
showSongsByGenre()для фильтрации по жанру
Задание 3: Функции с возвращаемыми значениями
Реализуйте функцию
playSong(), которая увеличивает счетчик прослушиванийНапишите функцию
getTotalDuration(), которая возвращает общую длительность коллекцииСоздайте функцию
findMostPopularSong(), которая возвращает указатель на самый популярный трек
Задание 4: Поиск и фильтрация
Напишите функцию
searchByArtist(), которая ищет все треки исполнителяРеализуйте функцию
findSongsFromYear()для поиска треков по году выпускаСоздайте функцию
getLongestSong(), которая возвращает указатель на самый длинный трек
Задание 5: Статистика
Напишите функцию
showStatistics()которая показывает:Общее количество треков
Общую длительность
Самый популярный жанр
Среднюю длительность треков
🎹 Пример реализации меню:
int main() {
const int MAX_SONGS = 20;
Song playlist[MAX_SONGS];
int songCount = 0;
int choice;
do {
std::cout << "\n=== МУЗЫКАЛЬНАЯ КОЛЛЕКЦИЯ ===" << std::endl;
std::cout << "1. Добавить трек" << std::endl;
std::cout << "2. Показать все треки" << std::endl;
std::cout << "3. Показать треки по жанру" << std::endl;
std::cout << "4. Найти треки исполнителя" << std::endl;
std::cout << "5. Воспроизвести трек" << std::endl;
std::cout << "6. Показать статистику" << std::endl;
std::cout << "7. Найти самый популярный трек" << std::endl;
std::cout << "8. Найти самый длинный трек" << std::endl;
std::cout << "0. Выход" << std::endl;
std::cout << "Выберите действие: ";
std::cin >> choice;
// обработка выбора
} while (choice != 0);
return 0;
}