Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 10.09.2018, 13:55   #1
DimaDynasty
Пользователь
 
Аватар для DimaDynasty
 
Регистрация: 10.09.2018
Адрес: Ukraine
Сообщений: 21
Репутация: 10
По умолчанию Заменить каждую цифру на ее дополнение

Здравствуйте, помогите пожалуйста с решением задачи.
Дано целое положительное число. Необходимо заменить каждую цифру на её дополнение до максимальной в числе
DimaDynasty вне форума   Ответить с цитированием
Старый 10.09.2018, 14:16   #2
evg_m
Профессионал
 
Регистрация: 20.04.2008
Сообщений: 4,715
Репутация: 2097
По умолчанию

помогаю.
999...9 {максимальное число с ЗАДАННЫМ(или вычисленным) количеством цифр} - n{наше число}

и возможные варианты для ЭТОГО же
999...9 =1000...0 -1
1000...0 =1* (10**x) { =1E+x}
__________________
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума   Ответить с цитированием
Старый 10.09.2018, 14:23   #3
DimaDynasty
Пользователь
 
Аватар для DimaDynasty
 
Регистрация: 10.09.2018
Адрес: Ukraine
Сообщений: 21
Репутация: 10
По умолчанию

А можно по подробнее?
DimaDynasty вне форума   Ответить с цитированием
Старый 10.09.2018, 14:35   #4
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,964
Репутация: 6285
По умолчанию

Код:

DECLARE @i int
SET @i = 192
SELECT CAST('1'+REPLICATE('0',LEN(CAST(@i AS varchar))) AS int)-@i-1

__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 10.09.2018 в 14:37.
Аватар вне форума   Ответить с цитированием
Старый 10.09.2018, 14:37   #5
DimaDynasty
Пользователь
 
Аватар для DimaDynasty
 
Регистрация: 10.09.2018
Адрес: Ukraine
Сообщений: 21
Репутация: 10
По умолчанию

Спасибо большое)) Выручили ))
DimaDynasty вне форума   Ответить с цитированием
Старый 17.09.2018, 14:40   #6
DimaDynasty
Пользователь
 
Аватар для DimaDynasty
 
Регистрация: 10.09.2018
Адрес: Ukraine
Сообщений: 21
Репутация: 10
По умолчанию

А можно чтоб число было универсальное?
DimaDynasty вне форума   Ответить с цитированием
Старый 17.09.2018, 14:46   #7
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,964
Репутация: 6285
По умолчанию

Так в том примере оно и так универсальное. Ну почти, положительное естественно и не больше 999999999. Делай хранимку и число передавай параметром. Или функцию и в запросе обращайся к ней. И так чуть проще
Код:

SELECT CAST(REPLICATE('9',LEN(CAST(@i AS varchar))) AS int)-@i

__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума   Ответить с цитированием
Старый 17.09.2018, 14:48   #8
DimaDynasty
Пользователь
 
Аватар для DimaDynasty
 
Регистрация: 10.09.2018
Адрес: Ukraine
Сообщений: 21
Репутация: 10
По умолчанию

Поставьте число 500 пожалуйста, пример:вводим число 500 должно выводиться 55
DimaDynasty вне форума   Ответить с цитированием
Старый 17.09.2018, 14:53   #9
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,964
Репутация: 6285
По умолчанию

У, я не так понял. То что у меня - это так же как и evg_m понял. Ща попробую

Код:

DECLARE @i int,
        @s varchar(10)
set @i = 500
set @s = CAST(@i AS varchar(10))
SELECT CAST(REPLICATE(CASE WHEN CHARINDEX('9',@s)>0 THEN '9'
                           WHEN CHARINDEX('8',@s)>0 THEN '8'
                           WHEN CHARINDEX('7',@s)>0 THEN '7'
                           WHEN CHARINDEX('6',@s)>0 THEN '6'
                           WHEN CHARINDEX('5',@s)>0 THEN '5'
                           WHEN CHARINDEX('4',@s)>0 THEN '4'
                           WHEN CHARINDEX('3',@s)>0 THEN '3'
                           WHEN CHARINDEX('2',@s)>0 THEN '2'
                           WHEN CHARINDEX('1',@s)>0 THEN '1'
                           ELSE '0' END, LEN(@s)) AS int)-@i

__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 17.09.2018 в 15:08.
Аватар вне форума   Ответить с цитированием
Старый 17.09.2018, 15:07   #10
DimaDynasty
Пользователь
 
Аватар для DimaDynasty
 
Регистрация: 10.09.2018
Адрес: Ukraine
Сообщений: 21
Репутация: 10
По умолчанию

Спасибо, все очень понятно))
DimaDynasty вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вводится строка произвольного текста, в котором есть и цифры. Удвоить каждую цифру.(PascalABCNET) FlayGlam Помощь студентам 0 03.12.2016 10:56
В алфавитно-цифровой строке удвоить каждую цифру. Dari8093 Общие вопросы C/C++ 9 18.12.2015 13:39
Заменить 1-ю цифру на единицу hackerbond Помощь студентам 0 02.10.2014 09:06
Заменить цифру makskovalko Помощь студентам 1 08.10.2013 00:49
Дано целое число. Уменьшить каждую цифру этого числа на 1. Makcumqa Помощь студентам 2 18.03.2010 09:09


03:51.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru