İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

Kriptolama programı

bahadir77709.07.201514 cevap3.734 görüntüleme
2015'den beri12 mesaj
#1
iyi günler,

C 'de girilen 4 haneli sayıyı kriptolamak için bir program yazdım.

Alınan sayıyı önce tek haneli sayılar olarak ayırıyorum(a-b-c-d gibi.) ve (a+7)%10 kuralına göre sifreleyip yeniden 4 haneli bir sayı elde ediyorum(xyzw gibi.)

Sorunum bu kriptolu sayıyı gerçek sayıya çevirecek fonksiyonu yazamamam. (a+7)%10 = x formülünde, x 'i biliyorsak a' yı nasıl buluruz?
Cevaplar
2014'den beri8 mesaj
#2
(a+7)nin yüzde 10u yanlış anlamadıysam. Eğer yanlış anlamamışsam :D (a+7).10/100=x
a=10x-7

- - - Mesaj Güncellendi - - -

(a+7)nin yüzde 10u yanlış anlamadıysam. Eğer yanlış anlamamışsam :D (a+7).10/100=x
a=10x-7
ygs-lys kasıyom böyle sorular iyi geliyor :D
2011'den beri9.780 mesaj
#3
% yerine daha net sonuçlar çıkacak bir algoritma yaz ki, sağlamasını yaparken de aynı şekilde küsüratlardan dolayı şaşırmasın.
bahadir777 Konuyu açan
2015'den beri12 mesaj
#4
yüzde 10' u değil mod 10'u. Yani 10 ile bölümünden kalanı. örneğin 24%10 =4.
2011'den beri9.780 mesaj
#5
bana göre aynı mod ile kalanı hesaba katmadığın için sağlaması tam çıkmıyordur :wink:
bahadir777 Konuyu açan
2015'den beri12 mesaj
#6
hocam küsüratlarla felan uğraşmıyorum. örneğin 1254 sayısını önce 1 - 2 - 5 - 4 olarak ayırıyorum
ve her sayı için (1+7)%10=8, (2+7)%10=9, (5+7)%10=2, (4+7)%10=1 dönüşümünü yapıyorum.
yeni sayı:8921 ---> bu sayıyı tekrar 1254 sayısına nasıl çevirebilirim öğrenmek istediğim bu.
2014'den beri8 mesaj
#7
eğer modsa o çeviremezsin örnek olarak 5 mod2 ye göre 1, 7 de mod 2ye göre 1 sen mod 2ye göre 1 dedin mi bütün tek sayılar alınır.moddan sadece hangileri olabilceğini bulabilirsin :(
bahadir777 Konuyu açan
2015'den beri12 mesaj
#8
snertosun dedi: ↑
eğer modsa o çeviremezsin örnek olarak 5 mod2 ye göre 1, 7 de mod 2ye göre 1 sen mod 2ye göre 1 dedin mi bütün tek sayılar alınır.moddan sadece hangileri olabilceğini bulabilirsin :(
Kesinlikle takıldığım nokta bu.
Peki kriptoladığım bu sayıyı gerçek sayıya nasıl dönüştürebilirim. Algoritma önerebilirmisiniz?
Çünkü hocamın benden istediği bu. yani bir yolu olmalı :)
2011'den beri9.780 mesaj
#9
(x+10)-7
2014'den beri8 mesaj
#10
aslında o tek basamaklı bi sayıymış o yüzden yapabiliriz :D a+7 mod 10 a göre x ise a=x+3

- - - Mesaj Güncellendi - - -

eğer a+8 deseydin mod 10 a göre y olsaydı a=y+2 ama bu son dediklerim sadece tek basamaklıysa
2011'den beri9.780 mesaj
#11
Karakterlerin ascii kodlarını "000" formatında çevirip tersten yaz

eSa : 101,083,097 = 101380790

:wink:
2014'den beri8 mesaj
#12
1245 sayısını sırasıyla mod10a göre a+7 biçimde yazdın ve sayı 8921 çıktı her bi sayıya 3 ekleyip mod 10ununu alırsan bulamilirsin eski sayıyı. Evet kesin çözüme ulaştık :D Eğer a+7 yerine a+8 deseydin son çıkan sayıya 2 ekleyip mod10unu alcaktık tekrar eski sayıya ulaşmış olcaktık.
2014'den beri9.818 mesaj
#13
Ah bizim mat hocası olsaydı sorardım kadın 60 yaşında ama eski yılların ansiklopedisi kesin sana bir fonksiyon bulurdu
bahadir777 Konuyu açan
2015'den beri12 mesaj
#14
snertosun dedi: ↑
1245 sayısını sırasıyla mod10a göre a+7 biçimde yazdın ve sayı 8921 çıktı her bi sayıya 3 ekleyip mod 10ununu alırsan bulamilirsin eski sayıyı. Evet kesin çözüme ulaştık :D Eğer a+7 yerine a+8 deseydin son çıkan sayıya 2 ekleyip mod10unu alcaktık tekrar eski sayıya ulaşmış olcaktık.
evet hocam gerçekten sağlıyor ve mantıklı görünüyor.
bir kaç sayıda daha deneyip sonucu yazarım.
çok teşekkür ederim.

edit: program sağlıklı çalışıyor. kaynak kodu:

#include <stdio.h>

int kripto (int );
int cevirici (int);

main() {
int sayi, kripSay, gercekSay;

printf("4 basamaklı bir sayi girin: "); scanf("%d\n", &sayi);

kripSay = kripto(sayi);
printf("Kriptolu sayi: %d\n", kripSay);

gercekSay = cevirici(kripSay);
printf("gercek sayi: %d", gercekSay);
}

int kripto(int alinan) {
int a, b, c, d, gonSay, kalan;

kalan = alinan % 1000;
a = (alinan - kalan) / 1000;
//printf("a: %d\n", a);
alinan = alinan - (a * 1000);
kalan = alinan % 100;
b = (alinan - kalan) / 100;
//printf("b: %d\n", b);
alinan = alinan - (b * 100);
kalan = alinan % 10;
c = (alinan - kalan) / 10;
//printf("c: %d\n", c);
alinan = alinan - (c * 10);
d = alinan;
//printf("d: %d\n", d);

a = (a + 7) % 10;
b = (b + 7) % 10;
c = (c + 7) % 10;
d = (d + 7) % 10;

gonSay = (a * 1000) + (b * 100) + (c * 10) + d;

return gonSay;
}

int cevirici(int sayi) {
int a, b, c, d, alinan, kalan, gonSay;

kalan = alinan % 1000;
a = (alinan - kalan) / 1000;
//printf("a: %d\n", a);
alinan = alinan - (a * 1000);
kalan = alinan % 100;
b = (alinan - kalan) / 100;
//printf("b: %d\n", b);
alinan = alinan - (b * 100);
kalan = alinan % 10;
c = (alinan - kalan) / 10;
//printf("c: %d\n", c);
alinan = alinan - (c * 10);
d = alinan;
//printf("d: %d\n", d);

a = (a+3) % 10;
b = (b+3) % 10;
c = (c+3) % 10;
d = (d+3) % 10;

gonSay = (a * 1000) + (b * 100) + (c * 10) + d;
return gonSay;

}
2014'den beri8 mesaj
#15
Çalışmasına çok mutlu oldum :D umarım üniversteyi kazandığımda böyle zevkli şeyler yaparım.

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.