Конференция "Начинающим" » помогите алгоритмом [D7, XP]
 
  • kazar (27.06.08 14:30) [0]
    а как бы закодить такую штуку) скажем имеется у меня 6 это номер месяца, тоесть июнь, я прибавляю 8 это 14, это буит февраль, на выходе месяцы с июня по февраль
  • Palladin © (27.06.08 14:34) [1]
    на выходе откуда?
  • Ega23 © (27.06.08 14:35) [2]
    6+8=14 ???
    Это с каких это пор?
    6+8=Е
  • Игорь Шевченко © (27.06.08 14:46) [3]

    > а как бы закодить такую штуку


    MOD 12
  • Игорь Шевченко © (27.06.08 14:47) [4]

    >  я прибавляю 8


    9 надо прибавлять
  • AndreyV © (27.06.08 15:10) [5]
    > [0] kazar   (27.06.08 14:30)

    Только с июня текущего года по февраль следующего?
    >
    [3] Игорь Шевченко ©   (27.06.08 14:46)
    > MOD 12

    Не покатит - месяца 0 не существует.
  • McSimm © (27.06.08 15:16) [6]

    > Не покатит - месяца 0 не существует.

    а если хоть капельку подумать?

    информация для капельки:
    mod 12 вернет значения от 0 до 11. (всего 12 возможных значений)
  • AndreyV © (27.06.08 15:35) [7]
    > [6] McSimm ©   (27.06.08 15:16)
    > а если хоть капельку подумать?
    >
    > информация для капельки:
    > mod 12 вернет значения от 0 до 11. (всего 12 возможных значений)

    Да я не о том.
    Вопрос не понятен. Что за: "на выходе месяцы"?
  • Anatoly Podgoretsky © (27.06.08 15:47) [8]
    27.06.2008 - 27.14.2008
  • Rouse_ © (27.06.08 15:48) [9]

    > Не покатит - месяца 0 не существует.

    Ну а с единицы только на Бейсике индексируют ;)
  • Anatoly Podgoretsky © (27.06.08 15:49) [10]
    Реализация

    for m := 6 to 14 do x := '27.' + FormatFloat('00', m) + '.2008';

  • Поросенок Винни-Пух © (27.06.08 15:50) [11]
    это не месяц. месяц круглый и желтый.
  • korneley © (27.06.08 16:07) [12]

    > Поросенок Винни-Пух ©   (27.06.08 15:50) [11]
    > это не месяц. месяц круглый и желтый.

    Гы... Он не круглый, круглая Луна. И то, не всегда. Месяц, он серповидный... :))
  • kazar (27.06.08 16:08) [13]
    Насчёт выхода, скажем пусть пишет в массив. Я получил 14 месяцев, например: июнь 2008 г, июль 2008 г, август 2008 г, ........июнь 2009 г. Тоесть в массиве будут чисто названия этих месяцев.
  • Поросенок Винни-Пух © (27.06.08 16:08) [14]
    это оптический обман. еще галилей знал, что месяц круглый
  • Palladin © (27.06.08 16:13) [15]
    Const
    Months:Array [0..11] of String=(
       'Январь',
       'Февраль',
       'Март',
       'Апрель',
       'Май',
       'Июнь',
       'Июль',
       'Август',
       'Сентябрь',
       'Ноябрь',
       'Декабрь')

    Var
     a:Array [0..6] of String;
     y,i:Integer;

     y:=2008;
     For i:=8 to 14 Do a[i-8]:=Months[i mod 12]+' '+IntToStr(y+(i div 12));

  • korneley © (27.06.08 16:15) [16]

    > Anatoly Podgoretsky ©   (27.06.08 15:49) [10]

    Не сработает :)
    А без цикла не обойтись. Если: "на выходе месяцы с июня по февраль
    " Далее
    IncMonth()

    в руки, ну и, как водится - F1
  • Anatoly Podgoretsky © (27.06.08 16:17) [17]
    > Поросенок Винни-Пух  (27.06.2008 16:08:14)  [14]

    Месяц не круглый, в нем от 28 до 31 дня.
  • Поросенок Винни-Пух © (27.06.08 16:21) [18]
    Const
    Months:Array [0..11] of String=(
      'Январь',
      'Февраль',
      'Март',
      'Апрель',
      'Май',
      'Июнь',
      'Июль',
      'Август',
      'Сентябрь',
      'Ноябрь',
      'Декабрь')


    Ай-ай! Как не стыдно!
    Sysutils.LongMonthNames
  • Palladin © (27.06.08 16:23) [19]
    а они с 1 начинаются, а нафига лишний инкремент, очень сильно влияет на производительность
  • Anatoly Podgoretsky © (27.06.08 16:26) [20]
    > korneley  (27.06.2008 16:15:16)  [16]

    Как это не сработает, я же проверял, у меня получилось 27.14.2008
  • korneley © (27.06.08 16:27) [21]

    > Palladin ©   (27.06.08 16:13) [15]

    О, блин! Только понял: "Так автору нужны только месяцы!". Поэтому
    +IntToStr(y+(i div 12));

    можно исключить. :)
  • Игорь Шевченко © (27.06.08 16:28) [22]
    Anatoly Podgoretsky ©   (27.06.08 16:26) [20]

    До сих пор в 14-ом месяце было 25 дней
  • korneley © (27.06.08 16:30) [23]

    > Anatoly Podgoretsky ©   (27.06.08 16:26) [20]

    :)) Боюсь, читатели даты будут немного дезориентированы :))
  • Palladin © (27.06.08 16:41) [24]

    > korneley ©   (27.06.08 16:27) [21]

    да не... в [13] аффтар примеры привел... но мой код все равно на смарку... я букву гэ не добавил...
  • Anatoly Podgoretsky © (27.06.08 17:04) [25]
    > korneley  (27.06.2008 16:30:23)  [23]

    Сменить читателей.
  • Anatoly Podgoretsky © (27.06.08 19:54) [26]

    > я букву гэ не добавил...

    Без буквы Гэ это не код, а без буквы Гэ
  • kazar (29.06.08 22:05) [27]
    И все таки,  ёще раз, начальная дата 29.06.2008, конечная дата 29.02.2009. Резульата
    Июнь2008, Июль2008, Август2008 …… Январь2009, Февраль2009. Но начальная и конечная дата могут меняться.
  • Сергей М. © (29.06.08 22:20) [28]
    IncMonth() в цикле по числу "прибавляемых" месяцев, в каждой итерации - сравнение полученного в рез-те инкремента значения даты с указанной границей диапазона дат.
  • kazar (29.06.08 23:54) [29]
    сори, пример можно?
  • korneley © (30.06.08 00:50) [30]

    > kazar   (29.06.08 23:54) [29]
    > сори, пример можно


    вар МайДатеТайм, типа, TДатеТайм;
    ...
     МайДатеТайм присвоить Нау;
     фор и присвоить ноль до КоличествоМесяцев минус один бегин
       ...
       МайДатеТайм присвоить IncMonth(МайДатеТайм);
       ...
    //the
     end;

  • {RASkov} © (30.06.08 00:52) [31]
    > [29] kazar   (29.06.08 23:54)

    А чем тебе [15] - не пример?
    Вот примерно тоже самое, т.е. подправлено:

    procedure EnumMes(FromYear, FromMes, CountMes: Integer; Lst: TStrings);
    var i: Integer;
    begin
     {Тут всякие проверки на вшивость, диапазон FromMes, валидность Lst... и т.п.}
     for i:=FromMes-1 to FromMes+CountMes-2 do
      Lst.Add(Format('%s %d г.', [LongMonthNames[i mod 12+1], FromYear+(i div 12)]));
    end;

    Например:
    EnumMes(2008, 6, 8, ListBox.Items);

 
Конференция "Начинающим" » помогите алгоритмом [D7, XP]
Есть новые Нет новых   [134439   +44][b:0][p:0.002]