The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Сообразить алгоритм подбора по длительности?"
Версия для распечатки Пред. тема | След. тема
Форум Программирование под UNIX
Исходное сообщение [ Отслеживать ]

"Сообразить алгоритм подбора по длительности?" +/
Сообщение от Gremlin_Rage (ok), 14-Июн-19, 20:23 
Нужен алгоритм подбора музыки по длительности для такого расписания
9:00-10:00 - музыка
10:00-(зависит от длительности программы)-программа(интервью или что то в этом духе обычно минут 20)
(зависит от длительности программы)-11:30-музыка
11:30-(зависит от длительности программы) - интервью(или образовательная программа
(зависит от длительности программы)-12:00-музыка(иногда может программа быть до 12 часов)
файл с музыкой путь к файлу и длительность в секундах playlist2.m3u8 https://dropmefiles.com/eYACc
файл с интервью образовательными программами playlist3.m3u8 https://dropmefiles.com/9rVLu
сама программа
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <cstdlib>
//#include <sstream>
//#include <locale>
#include <time.h>
#include "mp3.h"
#include "mp3frame.h"
//#define _CRT_SECURE_NO_WARNINGS
long int rez = 0;
struct Type
{
  std::string filename;
  float length;
};

int main(int argc, char* argv[])
{

  Type elem;
  
  setlocale(LC_ALL, "Russian");

  std::ifstream fin("playlist2.m3u8");
  if (!fin.is_open())
  {
    std::cout << "File not found!" << std::endl;
  }
  std::string str="";
  while (std::getline(fin,elem.filename))
  {
    std::getline(fin, str);
    elem.length = std::stof(str);
    if(elem.length != 0.0)
      vector2->push_back(elem);
  }
  fin.close();
  
  int sum = 0;
  for (int i = 0;i < vector2->size();i++)
    if ((*vector2)[i].length == 0.0)
      sum++;
  
  std::cout <<"size="<< vector2->size() << std::endl<<"0: " <<sum<< std::endl;
  
  std::cout << (*vector2)[0].filename << std::endl << (*vector2)[0].length << std::endl;
  std::cout << (*vector2)[vector2->size()-1].filename << std::endl << (*vector2)[vector2->size() - 1].length << std::endl;
  

  //setlocale(LC_ALL, "ru_RU.UTF-8");
  std::vector<Type> *vector3 = new std::vector<Type>();
  std::ifstream fin2("playlist3.m3u8");
  if (!fin2.is_open())
  {
    std::cout << "File not found!" << std::endl;
  }
  while (std::getline(fin2, elem.filename))
  {
    std::getline(fin2, str);
    elem.length = std::stof(str);
    if (elem.length != 0.0)
      vector3->push_back(elem);
  }
  fin2.close();
  
  sum = 0;
  for (int i = 0;i < vector3->size();i++)
    if ((*vector3)[i].length == 0.0)
      sum++;
  
  std::cout << "size=" << vector3->size() << std::endl << "0: " << sum << std::endl;
  std::cout << (*vector3)[0].filename << std::endl << (*vector3)[0].length << std::endl;

  std::cin.get();
  return 0;
}
и файлы из кривой библиотеки mp3 https://github.com/TheOnlyCaky/libmp3 выходной файл такого вида должен быть playlist.m3u8 https://dropmefiles.com/6sU0G
P.S. В принципе я думаю можно упростить алгоритм до подбора 1го пункта расписания т.е. подобрать песен на один час,а остальные пункты будут аналогично делаться

Ответить | Правка | Cообщить модератору

Оглавление
Сообразить алгоритм подбора по длительности?, Gremlin_Rage, 14-Июн-19, 20:23  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру