Yazılım | Programlama C İle şifreleyici oluşturmak

CruellHacker

Yeni üye
19 May 2018
36
0
Gotham
Merhaba THT Ailesi , kendimi C dilinde geliştirmeye odaklanmış sıradan biriyim son günlerde kendimi ders konularına bakıp , alıştırma algoritmaları oluşturarak ilerliyorum. Son günlerde şifreleme üzerine yoğunlaşmaya başladım ve kuramadığım bir algoritma üzerine yardım istemeye karar verdim.

Algoritmanın temel mantığı kullanıcı tarafından girilen sayıyı şifreleyip output olarak yazdırmak , şifrelemenin mantığı şu şekilde ;

kullanıcı inputu : 01234
program output'u : 011222344

şöyle ki ; input içindeki her sayının 3 ile modunu alarak kalan kadar sayıyı tekrarlıyor yani ,

* 0 % 3= 0 yani 0 kendini hiç tekrar etmeden sadece 1 kere 0 yazdırıyor.

*1%3 =1 şifre içindeki 1 kendini 1 kere tekrar ediyor yani output'ta yazılması gereken 1 rakamı 2 tane oluyor.

*2%3=2 şifre içinde 2 'nin 2 kere daha yazılması lazım yani input = 2 için output=222 oluyor.

*3%3=0 kalan 0 olduğu için 3 sadece 1 kere yazılıyor program böyle devam edip gidiyor.

yazdığım kodda belirli başlı eksikler var öncelikle her seferinde mod 10 alarak azalttığım için şifre ters oluyor ve başa 0 lı kod yazınca 0 ' ı yazdırmıyor.
yani ,

input : 0123

output : 322211 olarak çıkıyor bunun üstesinden gelemedim. Kod şu şekilde ;


Kod:
#include <stdio.h>
#include <stdlib.h>


int main() {
	
	int a,mod,rakam;
	
	
	printf("Lutfen inputu giriniz : ");
	scanf("%d",&a);
	printf("\n");
	
	while (a>0) {
		
		rakam=a%10;
		a=a/10;
		
		mod =rakam%3;
		
		
		for (;mod>=0;mod--) {
			printf("%d",rakam);
		}
		
		
	}
	
	
	
}



Şimdiden yardımlarınız için teşekkür ediyorum arkadaşlar ayrıca algoritma mantığını nasıl geliştirebilirim bununla ilgili kaynak önerirseniz sevinirim iyi günler.
 
Moderatör tarafında düzenlendi:

TTRTAHIR

Katılımcı Üye
3 Tem 2016
500
0
Kod:
    int temp;
    for(int i = 1 ; i <= 5 ; i++){
        temp = getchar() - 48;
        printf("%d",temp);
        for(int j = 1 ; j <= temp % 3 ; j++)
            printf("%d",temp);
    }

Kod:
getchar()
kullanarak en bastaki karakteri alabilirsin. Neden '48' dersen de "Ascii tablosu"na bak.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.