Новые книги

Работа сайта похожа на работу обычного магазина: если секции с разными товарами расположены логично, консультанты доступны в любой момент, а описания товаров информативны и понятны, есть шанс, что человек, зашедший в магазин, не уйдет с пустыми руками. Проанализируйте характеристики ваших потенциальных клиентов, поймите, что для них является ценностью, какие аргументы привлекут их внимание, соответственно этому продумайте структуру сайта, спроектируйте «маршрут» передвижения и составьте описания товаров – и ваши посетители будут гораздо чаще, чем сейчас, кликать на значок «корзины», а вы в разы повысите один из главных показателей работы сайта – конверсию. Авторы подробно рассказывают про основополагающие принципы, благодаря которым можно создать не только красивый, но и максимально эффективный сайт. Сайт, обеспечивающий продажи.
Без доменов современный Интернет невозможен. Читатель найдет сведения о том, как домены появились, как устроена система доменов и как ими эффективно управлять, как домены связаны с информационной безопасностью, какие административные, технические и правовые коллизии возникают вокруг них и что ждет доменные имена в будущем.

Вопрос и Ответ 54



Вопросы и Ответы


      54. Как представить число его прописным эквивалентом?

      Простых путей решения этой проблемы не существует и приходится писать процедуру разбора числа. Задача сводится к разбору числа на триады (...1,234,567) начиная с конца, а уже в них происходит конечный разбор трехзначного числа и формирование его прописного эквивалента с учетом добавления "тысяч", "миллионов" и т.д.

      Единственное, необходимо помнить о роде "добавки" (одна тысяча, один миллион) и разницы написания (одна тысяча, две тысячи и пять тысяч)...

      Пример:

      ............

      CONST

        MAX3 = 5; {Максимальное количество триад}

        A11: ARRAY[1..2] OF STRING[20] = ('одна ', 'две ');

        A1: ARRAY[0..19] OF STRING [20] = ('', 'один ', 'два ','три ', 'четыре ', 'пять ', 'шесть ', 'семь ', 'восемь ', 'девять ', 'десять ', 'одиннадцать ', 'двенадцать ', 'тринадцать ', 'четырнадцать ', 'пятнадцать ', 'шестнадцать ', 'семнадцать ', 'восемнадцать ', 'девятнадцать ');

        A10: ARRAY[0..9] OF STRING [20] = ('', 'десять ', 'двадцать ', 'тридцать ', 'сорок ', 'пятьдесят ', 'шестьдесят ', 'семьдесят ', 'восемьдесят ', 'девяносто ');

        A100: ARRAY[0..9] OF STRING[20]= ('', 'сто ', 'двести ', 'триста ', 'четыреста ', 'пятьсот ', 'шестьсот ', 'семьсот ', 'восемьсот ', 'девятьсот ');

        {четвертым параметром является обозначение мужского или женского рода,

          где '0' - женский род;
          '1' - мужской род.

        Это дает возможность, например, изменяя "рубли" на "штуки" просто поменять '1' на '0' не меняя кода.}
        A0: ARRAY[0..MAX3-1, 0..3] OF STRING[20]= (('рубль', 'рубля', 'рублей', '1'), ('тысяча', 'тысячи', 'тысяч', '0'), ('миллион', 'миллиона', 'миллионов', '1'), ('миллиард', 'миллиарда', 'миллиардов', '1'), ('триллион', 'триллиона', 'триллионов', '1'));

      procedure TForm1.Edit1Change(Sender: TObject);
      VAR

        Value: LongInt;
        i100, i10, i1: Integer;
        V, p, n, i: Integer;

      begin

        TRY

          Value := StrToInt(Edit1.Text);
          Memo1.Clear;
          n := 0;
          {Обработка отрицательного значения и нуля}
          IF Value <0 THEN BEGIN

            Memo1.Lines.Add('минус');
            Value := -Value;

          END
          ELSE

            IF Value = 0 THEN Memo1.Lines.Add('ноль')
            ELSE Memo1.Lines.Add('');

          REPEAT

            {Разбивка на триады с конца}
            V := Value MOD 1000;
            Value := Value DIV 1000;
            {Обработка}
            IF (V > 0) OR (n = 0) THEN BEGIN

              i100 := V DIV 100;
              V := V-(i100*100);
              IF V >= 20 THEN BEGIN

                i1 := V MOD 10;
                V := V DIV 10;
                i10 := V MOD 10;

              END
              ELSE BEGIN

                i1 := V;
                i10 := 0;

              END;
              CASE i1 OF

                1: p := 0;
                2..4: p := 1;
                ELSE p := 2;

              END;
              {Изменение в зависимости от женского или мужского рода}
              IF (A0[n,3] = '0') AND ((i1 = 1) OR (i1 = 2)) THEN

                Memo1.Lines.Insert(1, A100[i100]+A10[i10]+A11[i1]+A0[n,p])

              ELSE

                Memo1.Lines.Insert(1, A100[i100]+A10[i10]+A1[i1]+A0[n,p]);

            END;
            Inc(n);
            {Проверка выхода за максимальное количество триад}
            IF n > MAX3 THEN Exit;

          UNTIL Value <= 0;

        EXCEPT

          Memo1.Clear;
          Memo1.Lines.Add('Ошибка');

        END

      end;

      ............


...предыдущая страница следующая...
оглавление



"Вопрос и Ответ 54"
Copyright © "В помощь Веб-Мастеру" (Alexander D. Belyaev) 2005-2024 .
При перепечатке любого материала видимая ссылка на источник "В помощь Веб-Мастеру" и все имена, ссылки авторов обязательны!
Время генерации страницы: 0.007