14.1 Gösterici Uygulamarı
14.1 Gösterici Uygulamarı
Program 14.1: Rastgele dizi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
/* 14prg01.c: Rastgele Dizi */ #include <stdio.h> #include <stdlib.h> /* dizinin ilk n elemanına [0,1] arasında rastgele sayı atar */ void rastgele(double *dizi, int n){ int i; for(i=0; i<n; i++) *(dizi + i) = (double) rand()/RAND_MAX; } int main() { int i; double x[5]; /* rastgele sayı üretecini değiştir */ srand(1234567); rastgele(x, 5); puts("Rastgele dizi elemanları:"); for(i=0; i<4; i++) printf("%lf\n",x[i]); return 0; } |
ÇIKTI
1 2 3 4 |
0.742788 0.631704 0.118309 0.922271 |
Program 14.2: Bir dizinin elemanlarını küçükten büyüğe doğru sıralama
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
/* 14prg02.c: Bir dizinin elemanlarını küçükten büyüğe doğru sıralama */ #include <stdio.h> #include <stdlib.h> /* Bir dizinin elemanlarını küçükten büyüğe doğru sıralama */ void sirala(int *a, int n){ int k, j, gecici; for(k=0; k<n-1; k++) for(j=0; j<n-1; j++) if( a[j]>a[j+1] ){ gecici = a[j]; a[j] = a[j+1]; a[j+1] = gecici; } } int main() { int i, x[5] = {22, 44, 11, 55, 33}; printf("Once : "); for(i=0; i<5; i++) printf("%5d",x[i]); printf("\n"); sirala(x, 5); printf("Sonra: "); for(i=0; i<5; i++) printf("%5d",x[i]); printf("\n"); return 0; } |
ÇIKTI
1 2 |
Once : 22 44 11 55 33 Sonra: 11 22 33 44 55 |
Program 14.3: Bir dizinin kare kökünü hesaplayan fonksiyon
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
/* 14prg03.c: Bir dizinin kare kökünü hesaplayan fonksiyon */ #include <stdio.h> #include <stdlib.h> #include <math.h> double *kare_kok(double *, int); int main() { double A[5] = {1.0, 2.0, 4.0, 8.0, 16.0}; double *B; int i; printf("A dizisi: "); for(i=0; i<5; i++) printf("%lf ",A[i]); printf("\n"); B = kare_kok(A, 5); printf("B dizisi: "); for(i=0; i<5; i++) printf("%lf ",B[i]); printf("\n"); return 0; } /* Bir dizinin bütün elemanlarının karekökünü gönderir */ double *kare_kok(double *dizi, int boyut) { int i; static double *c; /* bellekten yer iste */ c = (double *) calloc( boyut, sizeof(double)); if( c==NULL ) return NULL; for(i=0; i<boyut; i++) c[i] = sqrt(dizi[i]); return c; } |
ÇIKTI
1 2 |
A dizisi: 1.000000 2.000000 4.000000 8.000000 16.000000 B dizisi: 1.000000 1.414214 2.000000 2.828427 4.000000 |
Program 14.4: Dinamik Matris Çarpımı
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
/* 14prg04.c: Dinamik Matris Çarpımı Bu program A(mxn) matrisi ile B(pxq) matrisini çarpımını hesaplar. Çarpım matrisi C(mxq), C = AB dir. Çarpımın sonucu matris_carp() fonksiyonu ile hesaplanır. Örnek: ~~~~~~ [ 1 0 2 ] [ 3 1 ] [ 1 0 2 ] [ 3 1 ] [ 5 1 ] A = [-1 3 1 ] B =[ 2 1 ] ==> C = AB = [-1 3 1 ] [ 2 1 ] = [ 4 2 ] [ 1 0 ] [ 1 0 ] */ #include <stdio.h> #include <stdlib.h> double **matris_carp(double **, int, int, double **, int, int); int main() { double **A; double **B; double **C; int i, j; /* A matrisi için bellekten yer ayır */ A = (double **) calloc( 2, sizeof(double)); for(i = 0; i < 2; i++) A[i] = (double *) calloc(3, sizeof(double)); /* B matrisi için bellekten yer ayır */ B = (double **) calloc( 3, sizeof(double)); for(i = 0; i < 3; i++) B[i] = (double *) calloc(2, sizeof(double)); /* A matrisinin elemanları */ A[0][0] = 1.0; A[0][1] = 0.0; A[0][2] = 2.0; A[1][0] =-1.0; A[1][1] = 3.0; A[1][2] = 1.0; /* B matrisinin elemanları */ B[0][0] = 3.0; B[0][1] = 1.0; B[1][0] = 2.0; B[1][1] = 1.0; B[2][0] = 1.0; B[2][1] = 0.0; /* C = AB matrisi */ C = matris_carp(A,2,3, B,3,2); for(i=0; i<2; i++){ for(j=0; j<2; j++) printf("%lf ",C[i][j]); printf("\n"); } return 0; } double **matris_carp(double **a, int m, int n, double **b, int p, int q) { int i, j, k; double **c, t; /* matrisler çarpılabilir mi ?*/ if(n != p){ puts("matrisler carpim icin uygun değil!"); return NULL; } /* carpim matrisi icin bellekten yer iste */ c = (double **) calloc( m, sizeof(double)); for(i = 0; i < m; i++) c[i] = (double *) calloc(q, sizeof(double)); for(i=0; i<m; i++){ for(j=0; j<q; j++){ for(t=0.0, k=0; k<n; k++) t += a[i][k] * b[k][j]; c[i][j] = t; } } return c; } |
ÇIKTI
1 2 |
5.000000 1.000000 4.000000 2.000000 |