Başvuru Rehberi - İstanbul Kalkınma Ajansı

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