Vous êtes sur la page 1sur 6

Sakarya Üniversitesi Bilgisayar Mühendisliği

Algoritmalar – Final Sınavı


Soru 1) Aşağıdaki matrise benzer n× 6 boyutlu bir A matrisi verilsin. Bu matrisin her bir satırında ayrı bir
öğrencinin öğrenci numarası ve almış olduğu 5 dersin notlarının tutulduğunu varsayalım.
a) Bu matrisin satırlarını öğrenci numaraları küçükten büyüğe (en küçük ilk satırda en büyük son
satırda) olacak şekilde sıralayan bir programın akış diyagramını çiziniz (15 puan).
b) Her bir dersin not ortalamasını hesaplayan bir programın akış diyagramını çiziniz (10 puan).

1 0 0 3 4 7 8 6 7 8 3 5 9 7 4
1 0 0 2 2 4 4 6 4 4 7 3 8 5 3
 
1 0 0 5 7 7 5 8 8 7 6 8 1 8 6
 
 ..........
..........
..........
..........
.......

 ..........
..........
.......... .......
..........
 
1 0 0 0 19 5 8 9 8 7 7 8 8 5
Cevap 1)

a) Bu programın akış diyagramı:


Sakarya Üniversitesi Bilgisayar Mühendisliği
Algoritmalar – Final Sınavı
b) Bu programın akış diyagramı:

Soru 2) Aşağıdaki matrislere benzer şekilde bütün elemanları birbirinden farklı (1’ den 9’ a kadar tam sayılar)
olan 3× 3 boyutlu rasgele matrisler üreten bir programın akış diyagramını çiziniz (15 puan) ve programı C
kodları ile yazınız (10 puan).

Cevap 2) Programın Akış diyagramı:

Program:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
int A[9], M[3][3];
void main(void)
{int i,j,t,k;
clrscr();
Sakarya Üniversitesi Bilgisayar Mühendisliği
Algoritmalar – Final Sınavı
randomize();
do{
for(i=0;i<9;i++) A[i]=random(9)+1;
t=0;
for(i=0;i<9;i++)
{ for(j=0;j<9;j++)
{ if((i!=j)&&(A[i]==A[j])) t++; }}
}while(t!=0);
k=0;
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
{M[i][j]=A[k];k++;
printf("%d ",M[i][j]); }
printf(" \n"); }
getch(); }

Soru 3) A matrisi 2× n boyutlu bir matris olsun.


a) Bu matrisin satırlarını kendi içlerinde birbirinden bağımsız bir şekilde küçükten büyüğe sıralayan bir
alt programın akış diyagramını çizin (10 puan).
b) A matrisinin kendi içlerinde küçükte büyüğe sıralanmış satırlarını küçükten büyüğe sıralı olarak
birleştirerek 2n elemanlı sıralı bir B dizisi oluşturan bir alt programın akış diyagramını çizin (10
puan).
Not: sıralama birleştirme sırasında yapılacak. Birleştirmeden sonra yeni bir sıralama yapılmayacak.
c) Girilen 2× n A matrisi için a ve b şıkkında tanımlanan işlemleri yapan bir programı akış
diyagramlarını oluşturduğunuz alt programları da kullanarak C kodları ile yazınız (10 puan).

Cevap 3)

a) Satırlarını kendi içlerinde birbirinden bağımsız bir şekilde küçükten büyüğe sıralayan;
Sakarya Üniversitesi Bilgisayar Mühendisliği
Algoritmalar – Final Sınavı

b) Sıralı olarak birleştiren:

c) Program:
#include <stdio.h>
#include <conio.h>
int n;
int B[200],A[2][100];
void oku(void);
void sirala(void);
void birles(void);
void yaz (void);
void main(void)
{ oku();
sirala();
birles();
yaz();
Sakarya Üniversitesi Bilgisayar Mühendisliği
Algoritmalar – Final Sınavı
}
void oku(void)
{ int i,j;
clrscr();
printf("matrisin sutun sayisini giriniz: ");
scanf("%d",&n);
for(i=0;i<2;i++)
{for(j=0;j<n;j++)
{printf("A[%d][%d]: ",i,j);
scanf("%d",&A[i][j]);
printf(" \n"); }}
}
void sirala(void)
{ int i,j,k,g;
for(k=0;k<2;k++)
{for(i=0;i<n-1;i++)
{for(j=i+1;j<n;j++)
{if(A[k][j]<A[k][i])
{g=A[k][i]; A[k][i]=A[k][j]; A[k][j]=g;}}}}
}
void birles(void)
{ int i=0,alt1=0,alt2=0;
while (i<2*n)
{ if ((alt1<n)&&(alt2<n))
{ if (A[0][alt1]<=A[1][alt2])
{B[i]=A[0][alt1]; i++; alt1++;}
else
{B[i]=A[1][alt2]; i++; alt2++;}}
else if (alt1<n)
{B[i]=A[0][alt1]; i++; alt1++;}
else if (alt2<n)
{B[i]=A[1][alt2]; i++; alt2++;}
}
}
void yaz(void)
{int i;
for(i=0;i<2*n;i++) printf("%d ",B[i]);
printf(" \n");
getch();
}

Soru 4) B matrisi, 128× 128 boyutlu bir A matrisinin sıfırdan farklı elemanlarını ve bunların yerlerini
saklayan p× 3 boyutlu bir matris olsun (p: A matrisindeki 0’ dan farklı değer sayısı). Girilen bu özellikteki bir
B matrisini kullanarak A matrisini oluşturan bir programın akış diyagramını çiziniz (20 puan).
Not: A matrisinin 0’ dan farklı fark değerlerinin B matrisinde 3. sütunda ve bu değerin yer indislerinin de B
matrisinde 1. ve 2. sütunlarda tutulduğunu varsayınız.

Cevap 4)
Sakarya Üniversitesi Bilgisayar Mühendisliği
Algoritmalar – Final Sınavı

Vous aimerez peut-être aussi