• Sonuç bulunamadı

Bil 101 Bilgisayar Yazılımı 1 Çözümlü Sorular Timur Karaçay

N/A
N/A
Protected

Academic year: 2022

Share "Bil 101 Bilgisayar Yazılımı 1 Çözümlü Sorular Timur Karaçay"

Copied!
8
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

1

Çözümlü Sorular Timur Karaçay

SORU 1: Aşağıdaki programın çıktısını, adım adım izleyerek (trace) bulunuz?

#include <stdio.h>

int f(int x) { if (x <=2)

return 2;

else return 2*f(x-1);

}

int main() {

int k =4, m=6;

printf("%d %d \n" , f(k), f(m));

return 0;

} Yanıt:

8 32

(2)

2 SORU 2:

a. 5 x 5 tipi bir matrisi iki boyutlu bir a dizimi (array) ile tanımlayınız.

b. Bileşenlerine rasgele (random) değerler atayan atama() adlı bir fonksiyon yazınız. Fonksiyona a dizimini parametre olarak geçiriniz.

c. Matrisi gösteren göster() adlı bir fonksiyon yazınız. Fonksiyona a dizimini parametre olarak geçiriniz.

d. Matrisi saat yönünde 90 derece döndürerek b matrisini elde eden dondur() adlı bir fonksiyon yazınız. Fonksiyona a dizimini parametre olarak geçiriniz.

e. 90 derece dönmüş halini © tanımladığınız göster() fonksiyonu ile yazdırınız.

Fonksiyonları main() içinde çağırıp çalıştırınız.

Cevap:

#include <stdio.h>

#include <time.h>

#define n 5

void atama(int w[][n]);

void dondur(int w[][n]);

void goster(int w[][n]);

int a[n][n];

int b[n][n];

int main() { atama(a);

goster(a);

dondur(a);

goster(b);

return 0;

}

void atama(int s[][n]) { int i,j;

srand(time(NULL));

for (j = 0; j < n; j++) for(i = 0; i < n; i++)

s[i][j] = rand()%5 ; return;

}

void dondur(int s[][n]) { int i,j;

for (j = 0; j < n; j++) for(i = 0; i < n; i++)

(3)

3 printf("\n\n");

return;

}

void goster(int s[][n]) { int i,j;

for (j = 0 ; j < n ; j++) { for (i = 0; i < n ; i++)

printf("%d\t" ,s[i][j]);

printf("\n");

} return;

}

Örnek Çıktı:

/**

4 1 0 4 1 0 0 0 2 1 0 3 4 0 1 1 1 2 3 3 0 3 2 4 0

0 1 0 0 4 3 1 3 0 1 2 2 4 0 0 4 3 0 2 4 0 3 1 1 1

*/

(4)

4 SORU 3:

a. Klavyeden 10 sayı girilmesini sağlayan ve girilen sayıları arr adlı dizimin (array) bileşenlerine atayan bir fonksiyon yazınız.

b. Girdiğiniz dizimin maksimumunu bulan bir fonksiyon yazınız. Fonksiyon parametresi olarak dizimi geçiriniz.

c. Yazdıklarınızı main() fonksiyonuna çağırıp çalıştırınız.

#include<stdio.h>

#define BOY 10 void veriGir();

int maximum (int a[], int);

int arr[BOY];

int max;

int main() { veriGir();

maximum(arr,BOY);

printf("maximum sayı : \n%d" ,maximum(arr,BOY));

return 0;

}

void veriGir() { int i;

for (i=0; i < BOY; i++) {

printf("%d inci bileseni giriniz\n" , i);

scanf("%d",&arr[i]);

} }

int maximum (int a[], int n) { int i;

max = a[0];

for (i = 1; i < n ; i++) if (a[i] > max)

max = a[i];

max = a[i];

return max;

} /**

0 inci bileseni giriniz 3

1 inci bileseni giriniz 5

2 inci bileseni giriniz -6

(5)

5 78

4 inci bileseni giriniz 34

5 inci bileseni giriniz 21

6 inci bileseni giriniz -45

7 inci bileseni giriniz -81

8 inci bileseni giriniz 63

9 inci bileseni giriniz 5

maximum say² : 78

*/

(6)

6

SORU 4 : Sayısal Loto’da, üzerlerinde 49 tane birbirlerinden farklı sayı bulunan 49 top içeren dönen saydam bir küre ile çekiliş yapılır. Her çekilişte küreden bir top düşer. Altı kez çekiliş yapılır.

Bir çekilişte düşen top tekrar küreye atılmaz. Böylece aynı sayının tekrarlanması önlenir. Düşen altı toptaki sayıların oluşturduğu dizim (array), büyük ikramiyeyi kazanan kolondur.

1. Sayısal loto çekilişini temsil eden loto() adlı bir fonksiyon yazınız.

2. Çıkan altı sayıyı k adlı tek boyutlu bir dizim (array) olarak ifade ediniz.

3. Çıkan dizimi sırasız yazdırmak için dizimYaz() adlı bir fonksiyon yazınız. Fonksiyon parametresi olarak k dizimini geçiriniz.

4. Çıkan sayıları köpük sıralası (Buble Sort) yöntemiyle artan sıraya koyan bir fonksiyon yazınız.

Fonksiyon parametresi olarak k dizimini geçiriniz.

5. Sıralanmış loto sayılarını dizimYaz() fonksiyonu ile tekrar yazdırınız. Fonksiyon parametresi olarak k dizimini geçiriniz.

6. Yazdığınız fonksiyonları main() içine uygun sırada çağıran deyimleri koyunuz ve çalışan bir C programı haline getiriniz.

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

void loto();

void bubleSort( int dizi[ ], int );

void arrayYaz(int arr[], int );

int k[6];

int main () { int i;

loto();

printf("Sirasız sayisal loto sayilari: \n");;

arrayYaz(k,6);

bubleSort( k , 6);

printf("\nSirali sayisal loto sayilari: \n");

arrayYaz(k,6);

return 0;

}

int kuraCek () {

return 1+(rand()%49);

}

int tekrarla (int a) { int b;

(7)

7 if (a!=b) return b;

else tekrarla(a);

}

void loto() { int i;

srand(time(NULL));

k[1]=kuraCek();

k[2]=kuraCek();

if (k[2]==k[1]) k[2]=tekrarla(k[2]);

k[3]=kuraCek();

if (k[3]==k[1]||k[3]==k[2]) k[3]=tekrarla(k[3]);

k[4]=kuraCek();

if (k[4]==k[1]||k[4]==k[2]||k[4]==k[3]) k[4]=tekrarla(k[4]);

k[5]=kuraCek();

if (k[5]==k[1]||k[5]==k[2]||k[5]==k[3]||k[5]==k[4]) k[5]=tekrarla(k[5]);

k[6]=kuraCek();

if (k[6]==k[1]||k[6]==k[2]||k[6]==k[3]||k[6]==k[4]||k[6]==k[5]) k[6]=tekrarla(k[6]);

return;

}

void bubleSort( int dizi[ ], int n ) { int i,j, g;

for(i=0; i< 6-1; i++) {

for(j=i+1; j < 6; j++) { if(k[j] < k[i]) {

g = k[i];

k[i] = k[j];

k[j] = g;

} }

} return ; }

void arrayYaz(int arr[], int n) { int i;

for (i=1 ; i <= n ; i++)

printf("%d\t" ,arr[i]);

return;

} /**

Sirasız sayisal loto sayilari:

1 32 12 20 29 27 Sirali sayisal loto sayilari:

1 12 20 29 32 27

*/

(8)

8 SORU 5: Aşağıdaki programın çıktısı nedir?

#include <stdio.h>

int main(){

register int i,x;

scanf("%d",&i);

x=++i + ++i + ++i;

printf("%d",x);

return 0;

} /**

Derleme harası: Çünkü register'in adresi yoktur.

*/

Referanslar

Benzer Belgeler

[r]

[r]

Basit kesir olabilmesi için mutlak değerce payın paydadan daha küçük olması gerekmektedir. 16 x 1

[r]

y eksenine paralel doğrular çizdiğimizde grafiği birden fazla noktada kesiyorsak, o grafik fonksiyon olamaz.. (Bir fonksiyon, aynı x değeri için farklı y

Mutlak değerli ifadeleri dışarıya çıkarmaya çalışarak

[r]

Necati ve Hasan'ın arkadaşı olan Recep'in katılımıyla üçü beraber bu işi 4 günde biti- rebiliyorlar.. İkisi beraber işe başladık tan 2 saat sonra Kerim işten