На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> как преобразовать из double в time_t ?
    в файл содержатся два ряда данных  » дата»(в формате месяц, год)  «курс валюты» .
    считываю данные сначала двумерный массив типа double, затем значения из первого столбца массива заношу в  вектор

    ExpandedWrap disabled
      Date. vector<time_t>Date;
      <div>  for (int i = 0; i < count_row; i++)
      {
      Date.push_back((time_t)massiv[i][0]);</div>
      <div>   }</div>
      а сохраняются в ней только цифры, которые были введены до запятой. То есть от 01.2017  сохраняется 01


    я в теме time полный нуль :wall:

    может подскажет кто-нибудь что делать ?
      Цитата Nelly0892 @
      в файл содержатся два ряда данных  » дата»(в формате месяц, год)  «курс валюты» .
      считываю данные сначала двумерный массив типа double
      ...
      может подскажет кто-нибудь что делать ?

      www.ya.ru -> time_t c++
      Одна из ссылок:
      mktime
        Цитата Nelly0892 @
        сначала двумерный массив типа double

        А зачем тут double?

        Добавлено
        Цитата Nelly0892 @
        может подскажет кто-нибудь что делать ?

        Дата в каком виде? ДД.ММ.ГГГГ?
          01.2017 то есть ММ.ГГГГ

          Добавлено
          я пробую это число передать в структуру дд.мм.гггг. объявляю int day=01, month, year. и пробую извлечь в виде целых чисел месяц и год
            какое число? 01.2017 что это зачисло :D
              ExpandedWrap disabled
                struct my_date
                {
                    int month;
                    int year;
                } d;
                stringstream ss("01.2017");
                ss >> d.month;
                ss.get();
                ss >> d.year;
                std::cout << d.month << ' ' << d.year;

              оно?
                месяц 01 год 2017.

                Добавлено
                ну это ведь только на выводе таким образом можно отделить месяц от года, а мне нужно для дальнейших расчетов, чтоб можно было вычитать по месяцам и годам и сортировать по годам или месяцам
                  Цитата Nelly0892 @
                  чтоб можно было вычитать по месяцам и годам и сортировать по годам или месяцам

                  А в чем проблема?
                    Цитата Nelly0892 @
                    ну это ведь только на выводе таким образом можно отделить месяц от года, а мне нужно для дальнейших расчетов

                    не только. Как хотите так и приеняйте. Вот вам сортировка двух таких дат:

                    ExpandedWrap disabled
                      int compareMyDate(my_date &date0, my_date &date1){
                         int y = date0.year-date1.year;
                         if(y!=0){
                            return y;
                         }
                         return date0.month-date1.month;
                      }
                      то есть вы так из double вытаскиваете отдельно 01 и отдельно 2017? вы сами то пробовали это делать? то есть элемент double из вектора DATA. кто-нибудь понимает вопрос?
                        понять вопрос может не каждый, точнее не только лишь все могут понять, мало кто может выделить из дабла 2017 :hang:
                          Цитата Nelly0892 @
                          кто-нибудь понимает вопрос?

                          Никто не понимает, и хранить дату в double абсурдная идея. Лучше опиши задачу целиком.
                            вобщем, есть два ряда данных
                            01.2017 -525
                            02.2017 -571
                            03.2017 -363
                            04.2017 -384
                            05.2017 -537
                            06.2017 -671

                            в vector<double>Vx передаю первый столбец

                            и мне нужно преобразовать его к типу time_t

                            сейчас делаю так по первой подсказке в этой теме.

                            только вот на выводе где последняя строка, получаю "-1"


                            ExpandedWrap disabled
                              struct tm *timeinfo = new tm;
                               
                                      int day;
                                      int month;
                                      int year;
                               
                                      vector<time_t>Data;
                                      time_t DD;
                                      double D;
                               
                                      double g;
                               
                                      //int year;
                                      //double mm, day;
                                      //int month;
                                      day = 1;
                               
                               
                                      for (int i = 0; i < count_row; i++) {
                               
                                          D = Vx[i];
                               
                                          year = (int)(modf(D, &g) * 10000);
                                          month = (int)g;
                               
                                          timeinfo->tm_year = year;
                                          timeinfo->tm_mon = month;
                                          timeinfo->tm_mday = day;
                               
                                          DD = mktime(timeinfo);
                               
                               
                                          cout << "Date  " << DD << "\n";
                               
                                      }
                              Цитата Nelly0892 @
                              сейчас делаю так по первой подсказке в этой теме.

                              плохая подсказка, используй мою.

                              Добавлено
                              Цитата Nelly0892 @
                              в vector<double>Vx передаю первый столбец

                              В vector<double>Vx не может передаваться первый столбец. Точне дату в нем можно закодировать, но я сомневаюсь что это так. Покажи код, где заполняется Vx.

                              Добавлено
                              Цитата Nelly0892 @
                              year = (int)(modf(D, &g) * 10000);

                              Это что за магическая формула?

                              Добавлено
                              Другими словами, что если кто-то умудрился закодировать в double 2 числа, то мы не сможем подсказать как их получить обратно без знаия алгоритма (или формулы) кодирования. С другой стороны где-то было написано
                              Цитата
                              в вектор Vx и Vy считываю из файла

                              Лучше при чтении не использовать double, а использовать структуру наподобие моей.

                              Добавлено
                              Если есть код чтения из файла, то лучше показать его здесь.
                                да что не понятно-то? кто-то решил, что хранить дату в дабле вида: целая часть - то месяц, а дробная - год, хорошая идея :D
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0488 ]   [ 17 queries used ]   [ Generated: 28.03.24, 17:38 GMT ]