Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Поиск даты в масиве


Автор: Веталька 10.8.2011, 20:52
Подскажите как найти последний день недели в масиве.
например дано:
10.08.2011
11.08.2011
12.08.2011
24.08.2011
надо найти
12.08.2011
24.08.2011

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

Автор: volatile 11.8.2011, 00:01
Надо просто вычислить день недели.
Если у следующей даты день недели уменьшился, или прошло больше 7 дней, значит у текущей даты - это последний день недели.
(если я правильно понял вопрос).

Там еще надо обратить внимание, чтобы неделя начиналась с понедельника.
Потому-что, например, у америкосов она начинается с воскресенья.

На чём вы пишите? Покажите код.

Автор: Веталька 11.8.2011, 10:13
вот набросал
Цитата

    {
        int lastReadingWeekDate = mDayList.get(mDayList.size()-1);
        int temp = mDayList.size()-1;
        mIdMonthList.clear();
        mIdMonthList.add(mDayList.size()-1);
           for(int count = mDayList.size()-2; count > -1; --count)
           {      
              if(lastReadingWeekDate<mDayList.get(count))
                {
                 lastReadingWeekDate=mDayList.get(count);
                 mIdMonthList.add(count);
                 temp = count;
               }
             if(lastReadingWeekDate>mDayList.get(count))
              {
             if(lastReadingWeekDate-mDayList.get(count)>7)
              {
                lastReadingWeekDate=mDayList.get(count);
                mIdMonthList.add(count);
                temp = count;
             }
        /*else
        {
         сравниваем номеры дней, но походу эту проверку модно и упустить?         
        }*/
          
         }      
      }
        }


Добавлено через 8 минут и 24 секунды
ем..вообщем тут ошибка в условии
 if(lastReadingWeekDate-mDayList.get(count)>7)
              {
                lastReadingWeekDate=mDayList.get(count);
                mIdMonthList.add(count);
                temp = count;
             }

сейчас функцию для вычитания количества дней между ними напишу и по идеи все заработает

Автор: volatile 12.8.2011, 00:07
Цитата(Веталька @  11.8.2011,  10:13 Найти цитируемый пост)
сейчас функцию для вычитания количества дней между ними напишу 

Имхо, ни к чему изобретать календарь. Это уже сделали до вас.
На чистом С/С++
http://www.cplusplus.com/reference/clibrary/ctime

Если этого мало, то в бусте есть еще вагон и маленькая тележка.
http://www.boost.org/doc/libs/1_47_0/doc/html/date_time.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)