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;
}