Учитель задал нам задачу: на вход пятизначное число. Затем у этого пятизначного числа берутся первые два и последние два числа, затем меняются местами. Например: Input: 24158, Output: 58124. Если два передних и задних числа, а также число посередине будут занимать по одной переменной, всего будет 4 переменных. А у нас задание: сократить число переменных до 2-х! Т.е.
1-я переменная — само число, 2-я переменная — все действия внутри числа.
Program Z_1; var x, a, b, c: LongInt; begin Randomize; x := random(89999) + 10000; writeln(‘Число: ‘, x); a := x div 1000; b := x mod 100; c := x div 100 mod 10; writeln(‘Результат: ‘, b,c,a); end.
Должно получиться:
Program Z_1; var x, a: LongInt; begin Randomize; x := random(89999) + 10000; writeln(‘Число: ‘, x); a := . ; writeln(‘Результат: ‘, a); end.
Подскажите, как можно сократить число переменных до требуемого?
Отслеживать
13.6k 12 12 золотых знаков 43 43 серебряных знака 72 72 бронзовых знака
Источник: ru.stackoverflow.com
18 Функции Excel ПОДСТАВИТЬ и ЗАМЕНИТЬ
Как изменить положительные числа на отрицательные в Microsoft Excel
При некоторых расчетах в электронных таблицах Microsoft Excel получается так, что отрицательные числа становятся положительными или положительные отрицательными, что нужно изменить, нормализовав тем самым отображение содержимого.
Я представлю два метода, выполняющих перевод значений в ячейках, а вы выберите тот, который придется по душе.
Способ 1: Формула + вспомогательный столбец
Этот метод хорош тем, что не требует ручной манипуляции со специальными вставками, о которых пойдет речь в следующем варианте. Однако придется использовать формулу, чтобы достичь желаемого результата. Дело в том, что если просто умножить ячейки на -1, а затем перенести их, в пустых клетках появится 0.
Если же пустых клеток у вас нет, просто умножьте значение на -1 во вспомогательным столбце, растяните формулу, а затем перенесите ее так, как это будет показано в конце следующей инструкции.
Что касается создания функции, то в этом случае идеальным вариантом будет ЕСЛИ, чтобы исключить пустые ячейки. Давайте более детально разберемся с ее созданием и настройкой вспомогательного столбца.
- Напротив текущей таблицы в пустой клетке введите =ЕСЛИ(), объявив тем самым интересующую нас функцию.
- Затем впишите условие A1<>»». Это означает, что действие нужно выполнить, когда в ячейке нет пустоты.
- После этого введите само действие, то есть умножьте ячейку на -1, записав это как A1*-1;. После единицы обязательно поставьте точку с запятой.
- Если же условие не удовлетворяется, то есть ячейка пустая, ее нужно оставить пустой. Укажите это в формуле как «».
- Нажмите Enter и ознакомьтесь с результатом. Вы видите, что получили значение без минуса или с ним, в зависимости от изначального числа.
- Растяните функцию на необходимое число клеток в сторону и вниз, чтобы покрыть все ячейки таблицы, после чего скопируйте ее, нажав сочетание клавиш Ctrl + C.
- Щелкните правой кнопкой мыши по первому значению изначальной таблицы и из контекстного меню выберите параметр вставки «Значение». Иконку вы видите на следующем скриншоте.
- Как видно, вставка прошла успешно – теперь вспомогательный столбец можно удалить, что никак не повлияет на отображение оригинальных чисел.
Внимательно ознакомьтесь со скриншотами, и у вас все получится! Если хотите, просто вставьте готовую формулу, заменив номер ячейки на свой. Выглядит она так: =ЕСЛИ(A1<>»»;A1*-1;»»).
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Способ 2: Умножение на значение
Исправление чисел, превратившихся в даты
Так обычно происходит, если региональные настройки внешней программы не совпадают с региональными настройками Windows и Excel. Например, вы загружаете данные с американского сайта или европейской учётной системы (где между целой и дробной частью — точка), а в Excel у вас российские настройки (где между целой и дробной частью — запятая, а точка используется как разделитель в дате).
При импорте Excel, как положено, пытается распознать тип входных данных и следует простой логике — если что-то содержит точку (т.е. российский разделитель дат) и похоже на дату — оно будет конвертировано в дату. Всё, что на дату не похоже — останется текстом. Давайте рассмотрим все возможные сценарии на примере испорченных данных на картинке выше:
- В ячейке A1 исходное число 153.4182 осталось текстом, т.к. на дату совсем не похоже (не бывает 153-го месяца)
- В ячейке A2 число 5.1067 тоже осталось текстом, т.к. в Excel не может быть даты мая 1067 года — самая ранняя дата, с которой может работать Excel — 1 января 1900 г.
- А вот в ячейке А3 изначально было число 5.1987, которое на дату как раз очень похоже, поэтому Excel превратил его в 1 мая 1987, услужливо добавив единичку в качестве дня:
Вот такие варианты. И если текстовые числа ещё можно вылечить банальной заменой точки на запятую, то с числами превратившимися в даты такой номер уже не пройдет. А попытка поменять их формат на числовой выведет нам уже не исходные значения, а внутренние коды дат Excel — количество дней от 01.01.1900 до текущей даты:
Лечится вся эта история тремя принципиально разными способами.
Способ 1. Заранее в настройках
Если данные ещё не загружены, то можно заранее установить точку в качестве разделителя целой и дробной части через Файл — Параметры — Дополнительно (File — Options — Advanced) :
Снимаем флажок Использовать системные разделители (Use system separators) и вводим точку в поле Разделитель целой и дробной части (Decimal separator) .
После этого можно смело импортировать данные — проблем не будет.
Способ 2. Формулой
Если данные уже загружены, то для получения исходных чисел из поврежденной дата-тексто-числовой каши можно использовать простую формулу:
=—ЕСЛИ( ЯЧЕЙКА(«формат»;A1)=»G» ; ПОДСТАВИТЬ(A1;».»;»,») ; ТЕКСТ(A1;»М,ГГГГ») )
В английской версии это будет:
=—IF (CELL («format «;A1)=»G»; SUBSTITUTE (A1;».»;»,»); TEXT (A1;»M ,YYYY «))
Логика здесь простая:
- Функция ЯЧЕЙКА (CELL) определяет числовой формат исходной ячейки и выдаёт в качестве результата «G» для текста/чисел или «D3» для дат.
- Если в исходной ячейке текст, то выполняем замену точки на запятую с помощью функции ПОДСТАВИТЬ (SUBSTITUTE) .
- Если в исходной ячейке дата, то выводим её в формате «номер месяца — запятая — номер года» с помощью функции ТЕКСТ (TEXT) .
- Чтобы преобразовать получившееся текстовое значение в полноценное число — выполняем бессмысленную математическую операцию — добавляем два знака минус перед формулой, имитируя двойное умножение на -1.
Способ 3. Макросом
Если подобную процедуру лечения испорченных чисел приходится выполнять часто, то имеет смысл автоматизировать процесс макросом. Для этого жмём сочетание клавиш Alt + F11 или кнопку Visual Basic на вкладке Разработчик (Developer) , вставляем в нашу книгу новый пустой модуль через меню Insert — Module и копируем туда такой код:
Sub Fix_Numbers_From_Dates() Dim num As Double, cell As Range For Each cell In Selection If Not IsEmpty(cell) Then If cell.NumberFormat = «General» Then num = CDbl(Replace(cell, «.», «,»)) Else num = CDbl(Format(cell, «m,yyyy»)) End If cell.Clear cell.Value = num End If Next cell End Sub
Останется выделить проблемные ячейки и запустить созданный макрос сочетанием клавиш Alt + F8 или через команду Макросы на вкладке Разработчик (Developer — Macros) . Все испорченные числа будут немедленно исправлены.
Ссылки по теме
- Как Excel на самом деле работает с датами и временем
- Замена текста функцией ПОДСТАВИТЬ
- Функция ВПР и числа-как-текст
Источник: www.planetaexcel.ru