Дано случайное число, необходимо преобразовать данное число в строку из символов алфавита
Вопрос в том как мне можно объеденить эти догадки в одну функцию и сравнивать каждый числитель с порядковым номером алфавита и соответственно выводить результат.
Отслеживать
задан 20 окт 2022 в 4:37
Dmitriy Belov Dmitriy Belov
echo $search[$test] . » «; //n c h w
20 окт 2022 в 6:10
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
function foo(int $number, string $alphabet): string < $numberString = (string)$number; $numberLength = strlen($number); $alphabetLength = strlen($alphabet); $index = 0; $result = ''; do < for ($i = 2; $i >0; $i--) < $part = substr($numberString, $index, $i); $partNumber = (int)$part; if ($partNumber >= 0 && $partNumber < $alphabetLength) < $result .= $alphabet[$partNumber]; $index += $i; break; >> > while ($index
Отслеживать
ответ дан 26 окт 2022 в 19:38
1,746 16 16 серебряных знаков 39 39 бронзовых знаков
- php
- строки
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как преобразовать целое число (Целое число) строку (Строка) в PHP
Цель. У нас есть один переменная Тип целом o Целое число и мы хотим сделать ваш Преобразование для переменной типа цепь o Строка в PHP.
В качестве примера, У нас есть следующая переменная:
Laravel по-русски
Русское сообщество разработки на PHP-фреймворке Laravel.
Страницы 1
#1 18.03.2018 00:23:21
Fridz +4 Сообщений: 46
Преобразование чисел с e
Всем привет.
Прошу помощи в простой и хитрой проблеме
Субд PostgresDB, есть таблица с полем типа float8. Есть некоторые данные, к примеру 0,00005, 0,00007 и тд. При выборе этих данных из таблицы в php массиве эти числа представлены в виде 8e-005, 5e-005 и тд. Как можно получать в их в первозданном виде?
Не в сети 09.10.2016
#2 18.03.2018 14:57:28
Proger_XP +345 Топ 30% Мастер Сообщений: 1,312 Статей: 33
Re: Преобразование чисел с e
Ты уверен, что числа возвращаются именно строками? PHP по умолчанию при выводе числа как строки может вывести его с e, но это не значит, что само число было строкой.
Что показывает var_dump? string или double? Если string, то достаточно каста в число:
var_dump( (float) '8e-005' ); // double(8.0E-5)
Не в сети 08.04.2012
#3 18.03.2018 22:00:23
Fridz +4 Сообщений: 46
Re: Преобразование чисел с e
В базе они имеют тип float. Php преобразовывает такие дробные числа в вид отрицательной степенью 8e-005.
Решение sprintf(‘%f’, ‘8e-005’);
// 0.000080
Спасибо, что подключился к теме
Не в сети 09.10.2016
#4 18.03.2018 22:15:36
Proger_XP +345 Топ 30% Мастер Сообщений: 1,312 Статей: 33
Re: Преобразование чисел с e
Решение: sprintf(‘%f’, ‘8e-005’);
Мне кажется, это не совсем то решение, которое ты хочешь (во всяком случае, не идеальное). Здесь ты просто преобразуешь одну строку в другую строку. Скорее всего, смысл твоей преобразования записи с e — в том, чтобы получить числовой тип, а не просто строковую запись в более привычном виде.
Я к тому, что sprintf() возвращает все ту же string, а (float) — уже число. Чисто технически, если с 8e-005 и пр. предполагается работать как с числами (складывать и пр.), то sprintf() вообще не нужен, т.е. PHP прозрачно преобразует 8e-005 в число в момент использования (‘8e-5’ + 1). Итого у тебя лишний и ненужный вызов функции — если уж приводить к формату, то чтобы получился числовой тип и PHP не нужно было его неявно преобразовывать.
В редких случаях тип даже имеет значение. Например, strrchr() ведет себя по-разному в зависимости от типа второго аргумента:
echo strrchr('123', sprintf('%f', '1')); // 123 echo strrchr('123', (float) '1'); // false
Не в сети 08.04.2012
#5 20.03.2018 17:12:56
Fridz +4 Сообщений: 46
Re: Преобразование чисел с e
Мне нужно было получить из базы запись, которая содержит дробные числа типа float и вывести их на экран. Но php выводил в виде ‘8e-5’ и нужен был метод, который преобразовал бы к виду 0.00008 как строку или как числовой тип не имеет значения в моем случае. Дополнительные операции над ними не требуются.
Не в сети 09.10.2016
#6 20.03.2018 20:50:18
Proger_XP +345 Топ 30% Мастер Сообщений: 1,312 Статей: 33
Re: Преобразование чисел с e
Но php выводил в виде ‘8e-5’ и нужен был метод, который преобразовал бы к виду 0.00008
Тогда все верно, sprintf() это решение данной проблемы.
Выражения
Одна из вещей, которые делает почти любая программа — это вычисление чисел Фибоначчи работа с числами. Вообще, именно для этой цели (а отнюдь не для моделирования сражения между террористами и контр-террористами) компьютеры и придумывались. По этой причине в Хаскелл есть операции сложения (обозначается знаком + ), умножения (обозначается звездочкой * ), вычитания ( — ) и деления (обознчается косой чертой (слешем) / , не перепутай его с обратным слешем «\»). Также для определения порядка выполнения операций можно использовать скобки (как в обычной математике). Давай посмотрим на программу, считающей простой пример (можешь посчитать его в уме?):
main = putStrLn show (2 + 10 * 5 / 2)
Если запустить эту программу, мы получим 27 (проверить).
Тут ты также можешь заметить новую функцию show . Она преобразует значение в строку. Дело в том, что функция putStrLn умеет выводить только строки, а 27 — это число (строкой оно бы было, если бы было заключено в кавычки: «27» , а так это число. Для компьютера 27 и «27» — это совсем разные вещи). Потому мы вычисляем результат примера, с помощью show превращаем его в строку и отдаем эту строку фукнции putStrLn , которая ее выводит.
Скобки в этой программе говорят, что мы сначала должны посчитать выражение, а только потом передать получившееся число 27 функции show . Давай по шагам посмотрим, как это работает. После вычисления выражения в скобках получается 27 и мы можем записать код в таком виде:
main = putStrLn show (27)
Затем функция show (27) преобразует число в строку:
main = putStrLn «27»
Ну а дальше эта строка выводится нам на экран. Если бы мы убрали скобки:
main = putStrLn show 2 + 10 * 5 / 2
То функция show преобразовала в строку только число 2 и получилось бы:
main = putStrLn «2» + 25
Ну а сложить строку и число нельзя.
Вывод текста и чисел вместе
Строки можно склеивать с помощью операции ++ . За счет этого мы можем добавить поясняющий текст к тому, что пишет программа. Вот пример:
main = putStrLn («500 мешков по 16 кг в сумме весят » ++ show (500 * 16) ++ » кг»)
Посмотреть результат . Функция show тут преобразует число в строку, затем эти строки склеиваются и выводятся вместе.
Перводить можно не только мешки в килограммы, но и, например, рубли в доллары (заметь, дробные числа в программировании пишутся через точку):
main = putStrLn («200 долларов — это не только ценный мех, но и » ++ show (200 * 31.56) ++ » рублей»)
Функции
Давай напишем программу по переводу долларов в рубли. Мы пишем число долларов, курс и она пишет нам, какой сумме в рублях они соответствуют. Чтобы код был более читаемым и красивым, разобьем его на несколько функций. Функция, как ты, надеюсь, помнишь — это кусочек кода, который что-то делает и что-то возвращает в результате. Простейший пример — функция, которая всегда возвращает одно и то же число. Напишем функцию, возвращающую нам курс доллара к рублю (заметь, дробные числа пишутся в программировании через точку, а не через запятую):
Этой строчкой мы определили функцию exchangeRate . Теперь если мы где-то напишем это имя ( exchangeRate ), то вызовется функция и будет подставлено число 32.13. Напишем еще одну функцию, считающую сколько у нас долларов:
А теперь напишем функцию, которая получает на вход число долларов и возвращает число рублей:
convertToRubles x = x * exchangeRate
У этой функции есть так называемый x . Если мы где-то напишем, например, convertToRubles 200 , то вызовется функция, а вместо x будет передано число 200. Это число дальше умножается на курс и резуьтат возвращается. Имея все эти функции, мы можем теперь легко написать программу, которая поможет нам перевести наши деньги в другую валюту.
Чтобы не расслабляться, давай сразу же решим еще одну несложную задачу:
Родители пообещали Васе, что на каждый 100-й день в году (то есть на 100, 200 и 300) он получит от них подарок. Напиши программу, которая по номеру месяца и дня (например, «6 июня») выводит, сколько дней осталось ждать подарка.
-- Not gonna work -- exchangeRate = 32.13 -- курс обмена dollars = 200 -- число долларов convertToRubles x = x * exchangeRate -- печатаем результат вызова функции convertToRubles, -- которой на вход мы даем dollars (то есть 200) main = putStrLn (convertToRubles dollars)
А что дальше?
Упс, а предполагалось, что что-то будет дальше?
Если тебя заинтересовал язык Haskell, то вот, что ты можешь почитать для дальнейшего развития:
Если ты не знаешь английский
- Через тернии к Haskell (часть 1) и часть 2 — статья с Хабрахабра
- Видеокурс
- Решение японских кроссвордов на Хаскелл
- Раздел «Хаскелл» на Хабре.
Если ты знаешь английский
- Learn You a Haskell for great Good — довольно-таки простая и понятная (а так же хорошо иллюстрированная) книга для тех, у кого уже есть опыт программирования на других языках.
- A Gentle Introduction to Haskell — серьезный туториал без картинок.
Куда вводить код? Что надо скачать? Читай первый урок.
Есть вопросы? Задай гуглу или автору.
Нравится урок? Лайкай, репости, приглашай друзей, пости котов и Канако, шли добра, решай задачи, помогай новичкам! Кнопок для лайка нет, кто хочет зарепостить, всегда может сделать это ручками.
Как связаться с автором? Я хочу переодеть его в платье школьницы и жениться на нем. Ящик codedokode (кот) gmail.com ждет ваших писем. А вконтактик и фейсбучек ждут ваших лайков. Но ответ на банальные вопросы лучше искать в Гугле или на stackoverflow.
Я решил задачку. Молодец, делай следующий урок
Почему так много рекламы? Всю рекламу на сайте ставит юкоз (бесплатный хостинг же), а не я.
На сайте установлена система Google Analytics (и еще несколько аналогичных систем от юкоза). Данные о твоем IP-адресе, посещаемых страницах, времени посещения отправляются в Google Corporation, США. Хочу знать, кто и зачем сюда заходит. Поверь, другие сайты делают точно так же. Все сайты пишут логи.
Что это?
Это сайт, где собраны простые уроки по языку программирования Haskell. Даже если ты никогда не слышал слова «программирование» и учишься на филолога, ты можешь попробовать их сделать.
Скачивать и устанавливать тоже ничего не надо, делать уроки можно даже с айпада или ведроида.