R
İ
T
K
Erciyes Üniversitesi, Mühendislik Fakültesi, Bilgisayar Mühendisliği Bölümü
Bilgisayar Programlama-I Dersi, Yıl İçi Sınavı, 21.11.2012
Soru 2.'ye ait C programını bu kutuya kodlayınız.
Ad Soyad:
Numara:1030
1.Ö
2.Ö
Sorular
1. Aşağıda akış diyagramı verilen programın görevini diyagramın sağındaki küçük kutucuğa yazınız. Akış
diyagramına karşılık gelen programı C programlama dilini kullanarak aşağıdaki büyük kutuya kodlayınız.N=10.
Soru 1.'deki programın görevini bu kutucuğa yazınız
Başla
..................................................................
..................................................................
i=0,···,N-1
..................................................................
j=0,···,N-1
E
N
F=1
i=0,···,N-1
Bitir
A[i,j]=?
..................................................................
Soru 1.'e ait C programını bu kutuya kodlayınız.
F=F*A[i,N-1-i]
----------------------------
R
Ö
* Sınav süresi 110 dakikadır.
* 1. soru 25, 2. soru 35, 3. soru 40 puandır.
Başarılar dileklerimle...
Yrd. Doç. Dr. Alper BAŞTÜRK
2. Tamsayı değerler ile oluşturulacak
10 uzunluklu A dizisinin elemanları ile, yine
tamsayı değerler ile oluşturulacak 10
uzunluklu B dizisinin aynı yerleşimindeki
elemanlar arasında kombinasyon hesabı
yapılacaktır. Programda bulunması gereken
fonksiyonlara ait prototipler aşağıda
verilmiştir.
int faktoriyel(int k)
int kombinasyon(int n, int r)
Yapılacak işlem kombinasyon(a[i],b[i])
şeklindedir. A dizisinin elemanları, B
dizisindeki aynı yerleşimdeki elemanlardan
büyük eşit olma şartını sağlamalıdır.
C  n, r  
..................................................................
n!
ile verilmektedir.
r ! n  r  !
Soru 2'yi son sayfadaki kutuya kodlayınız.
3. 64 karakter uzunluklu bir dizgi önce kodlanacak, daha sonra kodlanmış dizginin tekrar kodu çözülecektir.
Aşağıda kodlama işlemine ait işlem basamakları anlatılmaktadır.
i. Önce 64 uzunluklu giriş dizgisi, satır yönünde ilerlenerek 8x8'lik bir dizgi
matrisine yerleştirilecektir.
ii. Daha sonra oluşturulan 8x8'lik bu dizgi matrisinin transpozu alınacaktır.
iii. Transpoz sonucu yeni elde edilen 8x8'lik dizgi matrisi, satır yönünde
ilerlenerek tekrar 64 uzunluklu bir dizgiye çevirilecektir.
Yukarıda anlatılan işlemler aşağıda örneklerle tarif edilmiştir.
}
giriş dizgisi = "Erciyes Universitesi a.b.1978 tarihinde Kayseri'de kurulmustur." olsun.
void ___________(char mat1[8][8],char mat2[8][8],int satir,int sutun)
{
// dizgi matrisinin transpozesi alınacak
int i,j;
for(_____________________)
for(_____________________)
i. işlem sonrası
E
U
t
.
r
K
d
m
r
n
e
1
i
a
e
u
c
i
s
9
h
y
i
v
i
7
i
s
k
s t
ii. işlem sonrası
y e s
e r s
a .
8
t
n d e
e r i
u r u
u r .
i
b
a
'
l
\0
E
r
c
i
y
e
s
U
n
i
v
e
r
s
i
t
e
s
i
.
1
9
7
8
r
i
h
i
n
a
d
. t e
b a
K
a
y
s
e
r
i
'
d m
e u
s
k t
u u
r r
u .
l \0
E
N
iii. işlem sonrası
kodlanmış dizgi = "EUt.rKdmrne1iaeucis9hy sivi7isktye 8neuuera drrrss.teiu. iba 'l"
olarak elde edilecektir. Kodlanmış dizginin kodunun çözülebilmesi için aynı işlemler yine aynı
sırada tekrarlanmalıdır.
Yukarıda anlatılan işlemi gerçekleştiren C programına ait kaynak kod, bazı kısımlar boş bırakılarak
aşağıda verilmiştir. Buna göre:
R
Ö
BOŞ BIRAKILAN ALANLARI UYGUN BİÇİMDE DOLDURUNUZ.
#include <stdio.h>
#include <stdlib.h>
#include <___________>
void
void
void
void
R
İ
T
K
char dzg2[64],dzg3[64];
char mat1[8][8],mat2[8][8];
kodlaveyacoz(_______,mat1,mat2,_______,satir,sutun); // veri kodlaniyor
puts(_______);
kodlaveyacoz(_______,mat2,mat1,dzg3,satir,sutun);
// kodlanmis verinin kodu cozuluyor
puts(_______);
system("PAUSE");
return 0;
____________(char dzg1[],char mat1[][],int satir,int sutun);
____________(char mat1[][],char mat2[][],int satir,int sutun);
mat2arr(char mat2[][],char dzg2[],int satir,int sutun);
______________(char Dzg1[],char Mat1[][],char Mat2[][],char Dzg2[],int satir,int sutun);
int main(void)
{
int satir=____,sutun=____;
char dzg1[64]="Erciyes Universitesi a.b.1978 tarihinde Kayseri'de kurulmustur.";
______________ = ______________;
}
void ___________(char mat2[8][8],char dzg2[],int satir,int sutun)
{
// 8x8 boyutundaki dizgi matrisi, 64 uzunluklu dizgiye cevirilecek
int i,j;
for(_____________________)
for(_____________________)
______________ = ______________;
}
void ____________(char Dzg1[],char Mat1[8][8],char Mat2[8][8],char Dzg2[],int satir,int sutun)
{
arr2mat(Dzg1,Mat1,satir,sutun); // Dzg1->Mat1
trnsmat(Mat1,Mat2,satir,sutun); // Mat1->devrik Mat2
mat2arr(Mat2,Dzg2,satir,sutun); // devrik Mat2->Dzg2
}
void ___________(char dzg1[],char mat1[8][8],int satir,int sutun)
{
// 64 uzunluklu dizgi, 8x8 boyutunda dizgi matrisine cevirilecek
int i,j;
for(_____________________)
for(_____________________)
______________ = ______________;
}
// programın sonu
Download

Erciyes Üniversitesi, Mühendislik Fakültesi, Bilgisayar Mühendisliği