Arama butonu
Bu konudaki kullanıcılar: 1 misafir
5
Cevap
1060
Tıklama
0
Öne Çıkarma
C Proje Ödevi[Yardım]Az bi yer kaldı yapamıyorum...
M
14 yıl
Onbaşı
Konu Sahibi

Merhaba arkadaşlar C proje ödevim şifreleme-deşifreleme programı yazmak.Program döngü-dizi kullanılarak yapılacak (pointer filan kullanılmayacak).
quote:

ullanıcı tarafından girilen bir metni şifreleyip ekrana yazdıran veya şifreli bir metni ve öteleme miktarını alarak asıl metni bulan programı yazınız.
Program da şifreleme işlemi harflerin ötelenmesi ile oluşmaktadır. Kullanıcıdan mesaj istenir, daha sonra öteleme miktarı istenir.
Örneğin;
Hangi işlemi yapacaksınız?
1-Şifreleme
2-Deşifre
seçiminiz=1
Mesajınızı giriniz=abc
Öteleme miktarı=1
Şifreli metin=bdf
olarak gerçekleştirir. Buradaki işlem mesajın 1.harfini öteleme miktarı kadar, 2 harfini öteleme miktarından 1 fazla 3.harf 2 fazla olacak şekilde devam etmektedir.Metnin içerisinde rakam, alfa nümerik karakter ve başuk varsa aynen bırakılmaktadır.
Deşifre seçeneği seçildiğinde ise yukarıda yapılan işlemleri tersten yapacaktır.
Şifreli mesajı giriniz=bdf
öteleme miktarını giriniz=1
metininiz=abc
Dikkat edilmesi gereken bir konu örneğin metin olarak "yaz" yazıldığında, ve öteleme miktarı 1 denildiğinde y harfi z ile a harfi c ile z harfi ise c ile ötelenerek, zcc şekline dönüşmektedir. Yani z den sonra tekrar a dan başlanmaktadır. (ingiliz alfabesinde bulunan 26 harf kullanılmalıdır.)


Burdaki çoğu zımbırtıyı ayarladım ama bi türlü döngüyü nerde kıracağımı kestiremedim.Sayı olsa boşluk oolmuyo boşluk olsa alfabe sapııtıyo yardımcı olabilecek varsa çok ii olur,Selamlar...

benim yazdığım;
#include "stdio.h" 
#include "conio.h"
#include "stdlib.h"
#include "string.h"
int main()
{int ote,m,i,j,uz;

char alfa[27]="abcdefghijklmnopqrstuvwxyz";
char sayilar[11]={'1','2','3','4','5','6','7','8','9','0'};
char dizi[255];


printf("Sifrelenecek metni girin=");
gets(dizi);
printf("Sifreleme Kodunu giriniz=");
scanf("%d",&ote);
uz=strlen(dizi);

for(m=0;m<uz;m++)//1. for
{
for(i=0;i<26;i++)//2. for
{
for(j=0;j<10;j++)//3. for
{
if(dizi[m]==alfa[i])
{
printf("%c",alfa[(i+ote)%26]);ote++;
break;}
else if(dizi[m]==' ') printf("%c",dizi[m]);

else if(dizi[m]==sayilar[j])
{

printf("%c",sayilar[j]);break;
}



}//3. for sonu
}//2. for sonu
}//1. for sonu
getch();}



T
14 yıl
Teğmen

Anladığım kadarıyla kodu soyle degistir bi dene biraz aceleye geldi ama muhtemelen çalışır.
for(m=0;m<uz;m++)//1. for
{
for(i=0;i<26;i++)//2. for
{
if( dizi[m]==alfa ) ///alfa i olacak burası cıkmıyor
{
printf("%c",alfa[(i+ote+m)%26]);
i=28;

}


}//1. for sonu
}//2. for sonu
getch();}





< Bu mesaj bu kişi tarafından değiştirildi Tegir -- 7 Mayıs 2010; 17:46:30 >
Bu mesaja 1 cevap geldi.
M
14 yıl
Onbaşı
Konu Sahibi

ilgilendeğin için teş. ederim ama olmadı :)


Bu mesaja 1 cevap geldi.
T
14 yıl
Teğmen

Bir şey değil ama sorunun nerde olduğunu söylersen kodu değiştirip tekrar deneyebilirsin.


Bu mesaja 1 cevap geldi.
P
14 yıl
Binbaşı

Buna benzer ödevi c++ da yapmıştım. Yardımcı olacaksa pm at, yollayabilirim.


Bu mesaja 1 cevap geldi.
Q
14 yıl
Yüzbaşı

for(m=0;m<uz;m++)//1. for 
{
a=0;
for(i=0;i<26;i++)//2. for
{
if(dizi[m]==alfa[i])
{
printf("%c",alfa[(i+ote+m)%26]);
a=1;
}
}

if (a=0)
printf("%c",dizi[m]);



}//1. for sonu


Böyle yapınca olacaktır.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.