Software Engineer
Seçkin Üye
SQL:
/*
Bir şirket bazı verilerini telefon aracılığıyla başka bir yere iletmek istemektedir ama telefonlarının dinlendiğinden şüphelenmektedir. Bütün veriler dört basamaklı tamsayılar şeklinde iletilecektir. Size verilen görev ise bu verileri daha güvenli bir şekilde iletilmeleri için şifrelemenizdir. Programınız şifrelemeyi şu şekilde yapmalıdır:
Her basamağı 7 ile toplamının 2’lik sistemdeki eşitiyle değiştirmeli ve birinci basamağı üçüncü basamak, ikinci basamağı da dördüncü basamak ile yer değiştirmelisiniz.
1. Bir döngü kurun
2. 1000-9999 narası 10 sayı üretim
3. Birinci sütun sayının kendisi, ikinci sütun sayının şifrelenmiş hali olacak şekilde bir tabloda gösterin
*/
Yukarıda verdiğim soruyu SQL kullanarak çözünüz.
Çözemeyenler için çözüm :
Çözemeyenler için çözüm :
SQL:
Create Function FN_DecimalToBinary
(
@Sayi INT
)
RETURNS VARCHAR(4)
As
Begin
Declare @intvalue int = @Sayi
Declare @vsresult varchar(4)
Declare @inti int
Select @inti = 4, @vsresult = ''
while @inti>0
Begin
Select @vsresult=convert(char(1), @intvalue % 2)+@vsresult
Select @intvalue = convert(int, (@intvalue / 2)), @inti=@inti-1
End
Return @vsresult
End
Go
/* Problemin Çözümü */
Declare @SifreTablosu Table
(
Kod Int,
Sifre Varchar(20)
)
Declare @i INT = 1
Declare [USER=546016]@kod[/USER] INT
Declare [USER=191864]@sifre[/USER] VARCHAR(20)
Declare @binler INT,@yuzler INT, @onlar INT,@birler INT
While @i <= 10
Begin
Set [USER=546016]@kod[/USER] = FLOOR(RAND()*(9999-1000+1)+1000)
Set @binler = [USER=546016]@kod[/USER] / 1000
Set @yuzler = ([USER=546016]@kod[/USER] % 1000) / 100
Set @onlar = ([USER=546016]@kod[/USER] % 100) / 10
Set @birler = [USER=546016]@kod[/USER] % 10
Set [USER=191864]@sifre[/USER] = dbo.FN_DecimalToBinary(@onlar)+' '+dbo.FN_DecimalToBinary(@birler)+' '+dbo.FN_DecimalToBinary(@binler)+' '+dbo.FN_DecimalToBinary(@yuzler)
Insert Into @SifreTablosu
Select @kod,[USER=191864]@sifre[/USER]
Set @i = @i+1
End
Select * From @SifreTablosu