Soru Not Adı Soyadı : Öğrenci No : 1 2 3 Toplam F.Ü TEKNOLOJİ FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ BÖLÜMÜ YMT111 FİNAL SINAVI 2013–2014 Güz (22 OCAK 2014) SORULAR Toplam 3 soru 100 Puan, cevaplarınızı her soru için ayrılan boşluklara yazınız, süre 90 dakikadır. Soru1: Aşağıda verilen fonksiyonun, dışarıdan girilecek herhangi bir y değeri için sonucunu hesaplayan programı C veya Java dilinde yazınız? (30 puan) Not: Olası hatalar için gerekli önlemleri alınız. x3 3y 2 x 1 y 2 x 10 Soru 2: Dışarıdan verilen X değerine göre aşağıdaki matrisi iki boyutlu bir dizide oluşturup bu dizideki elemanları aşağıda gösterildiği gibi “finalsoru2.txt” dosyasına yazan bir C veya Java programını. (30 puan) Not: İki Boyutlu Kare Matris en fazla 100 elemanlı olabilir. Gerekli önlemleri alınız. X=3 ise 1 2 3 1 2 1 Soru 3: Kriptoloji (Şifre Bilimi) biliminde kilometre taşlarından olan ENIGMA makinesi, İkinci Dünya savaşında Almanlar tarafından geliştirilen 3 rotorlu mekanik kriptolama gerçekleştirmektedir. ENIGMA makinesinin çalışma mantığına benzeyen aşağıdaki kuralları barındıran bir yazılım geliştirilmek istenmektedir. (40 puan, Bu soruda puanlama Tam Doğru ilkesiyle yapılacaktır.) 1. Şifreleme büyük harf üzerinden yapılacaktır. (Sadece büyük harf girilmesini sağlayın). 2. Şifreleme İngiliz alfabesinde olan karakterler üzerinden yapılacaktır. (Sadece İngiliz alfabesindeki harflerin girilmesini sağlayın). Ör: “ABCDEFGHIJKLMNOPQRSTUVWXYZ” 3. Tüm harfler dizi içerisine atılacaktır. 4. Kriptolama 2 Rotor üzerinden gerçekleştirilmesi planlanmaktadır. Her rotor harf dizisi içerecektir. R1= “ABCDEFGHIJKLMNOPQRSTUVWXYZ” R2= “ABCDEFGHIJKLMNOPQRSTUVWXYZ” 5. Her rotorun kaydırma için bir Anahtar değeri bulunmaktadır. Anahtarlar her gün değiştirilmektedir. Şifrenin kodlandığı tarihin Anahtarları kullanıcı tarafından dışarıdan girilmelidir. AR1=3 AR2=5 6. Her Rotorun başlangıç harfi bu anahtar değerdeki harf olacak şekilde kaydırılmaktadır. Kaydırma işlemi Global bir değişkende Fonksiyon olarak gerçekleştirilecektir. Yeni R1=“CDEFGHIJKLMNOPQRSTUVWXYZAB” Yeni R2=“EFGHIJKLMNOPQRSTUVWXYZABCD” 7. Kriptolama her harf için tek tek yapılmaktadır. 8. Clear Text (Ham veri) içerisindeki her harfin Rotor 1 deki sıra numarası tespit edilir. Clear Text = “ULAS” “U” harfi Rotor 1’de 19. sıradadır. Clear Text en fazla 250 karakter içerebilir. 9. Kriptolu Veri için Rotor 2 ‘ye bakılacaktır. Rotor 1’den elde edilen sıra numarasında bulunan harf Kriptolu harfi verecektir. Rotor 2’de 19. sırada bulunan harf “W” harfidir. 10. Ham veri olarak kullanıcıdan alınan değer Kriptolandıktan sonra “Kripto.txt” dosyasına yazılacaktır. 11. Kriptolama bir fonksiyon olarak gerçekleştirilecektir. Ör: AR1=3 AR2=5 Clear Text = “ULAS” olarak girilmiş ise, Kripto.txt Dosyasının içeriği “WNCU” olacaktır. Başarılar Dilerim Yrd. Doç. Dr. Mustafa ULAŞ Soru 1: Cevap 14 satırdır. Her komut tek satır olacak şekilde en fazla 18 satır kullanabilirsiniz. #include <stdio.h> #include <conio.h> int x=1; float t=1,y=0; main(){ printf("Y Değeri:"); scanf("%f",&y); for(x=1;x<=10;x++){ if(y*y!=2*x) t*= (x*x*x+3*y)/(y*y-2*x); } printf("\nSonuc : %f",t); getch(); } Soru 2: Cevap 24 satırdır. Her komut tek satır olacak şekilde en fazla 28 satır kullanabilirsiniz. #include <stdio.h> int x,a[10][10],i,j; main(){ do{ printf("1-10 Arasi bir Sayi: "); scanf("%d",&x); }while(x>10); FILE *dosya; dosya = fopen("finalsoru2.txt","w"); for(i=0;i<x;i++){ for(j=0;j<x;j++){ if(j>=i){ a[i][j]=1+(j-i); fprintf(dosya,"%3d",a[i][j]); }else{ a[i][j]=0; fprintf(dosya," "); } } fprintf(dosya,"\n"); } fclose(dosya); } Soru 3: Cevap 61 satırdır. Her komut tek satır olacak şekilde en fazla 71 satır kullanabilirsiniz. #include <stdio.h> #include <string.h> #include <conio.h> int i,j,AR1,AR2; char R1[]={'A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; char R2[]={'A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; char ClearText[250],kr,Crypted[250]; void rotorkaydir(int Anahtar,int Rotor){ char Artik; if(Rotor==1){ for(i=0;i<Anahtar-1;i++){ Artik=R1[0]; for(j=0;j<25;j++) R1[j]=R1[j+1]; R1[25]=Artik; } }else if(Rotor==2){ for(i=0;i<Anahtar-1;i++){ Artik=R2[0]; for(j=0;j<25;j++) R2[j]=R2[j+1]; R2[25]=Artik; } } } void Sifrele(char veri[]){ for(i=0;i<strlen(veri);i++){ for(j=0;j<26;j++){ if(veri[i]==R1[j]){ Crypted[i]=R2[j]; break; } } } FILE *dosya; dosya = fopen("Kripto.txt","w"); fprintf(dosya,"%s",Crypted); fclose(dosya); } main(){ printf("1.Rotor Anahtarını Giriniz : "); scanf("%d",&AR1); printf("2.Rotor Anahtarını Giriniz : "); scanf("%d",&AR2); printf("Ham veriyi giriniz : "); i=0; do{ kr=getche(); if(kr>='A'&&kr<='Z'){ ClearText[i]=kr; i++; }else{ if(kr!=13) printf("\nLütfen ABCDEFGHIJKLMNOPQRSTUVWXYZ harflerini girniz.\n"); } }while(kr!=13&&i<250); ClearText[i]=NULL; rotorkaydir(AR1,1); rotorkaydir(AR2,2); Sifrele(ClearText); }
© Copyright 2024 Paperzz