| 
		* Önsöz 
 
        	* Giriş* Veri Tipleri, Değişkenler
 * Operatörler
 * Temel G/Ç Fonksiyonları
 * Temel Kütüphane Fonksiyonları
 * Karşılaştırma Deyimleri
 * Döngüler
 * Fonksiyonlar I
 * Fonksiyonlar II
 * Diziler
 * Gösterici (Pointer) Kavramı
 * Katarlar (Stringler)
 * Dinamik Bellek Yönetimi
 * Gösterici Uygulamaları
 * Yapılar ve Birlikler
 * Dosya Yönetimi
 * Bit Düzeyinde Çalışmak
 * Port Denetimi
 * Grafik Kullanımı
 * C Makroları
 
 
        	* Kısaca C++* Derleme Seçenekleri
 * Tarih-Saat Fonksiyonları
 * Monte-Carlo Yöntemleri
 * Fortran ve C
 
 
        	* Yararlanılan Kaynaklar
 
		* Dev-C++ * Salford (silversoft FTN95)
 * GCC
 * Turbo C
 * Eclipse IDE
 * NetBeans IDE
 
 
		* programlama.com * C Programcıları Derneği
 
 
		* C (wikipedia)* C++ (wikipedia)
 * cplusplus.com
 * koders.com
 * Hot scripts
 
 
		 |  | 
 Ders 14: Gösterici Uygulamaları
 
En son güncelleme: Wed, 30 Nov 2011 13:22:02 +0200| ###############----- (%75) |  
 Giriş
 
 Bu bölümde bazı gösterici uygulamaları gösterilmiştir.
 14.1   Gösterici Uygulamarı 
   Rastgele dizi
   Bir dizinin elemanlarını küçükten büyüğe doğru sıralama
   Bir dizinin kare kökünü hesaplayan fonksiyon
   Dinamik matris çarpımı
 
 Program 14.1: Rastgele dizi
 
| 01: 
02: 
03: 
04: 
05: 
06: 
07: 
08: 
09: 
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
 
| 
0.742788
0.631704
0.118309
0.922271
 |  
 Program 14.2: Bir dizinin elemanlarını küçükten büyüğe doğru sıralama
 
| 01: 
02: 
03: 
04: 
05: 
06: 
07: 
08: 
09: 
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
 
| 
Once :    22   44   11   55   33
Sonra:    11   22   33   44   55
 |  
 Program 14.3: Bir dizinin kare kökünü hesaplayan fonksiyon
 
| 01: 
02: 
03: 
04: 
05: 
06: 
07: 
08: 
09: 
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
 
| 
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ı
 
| 01: 
02: 
03: 
04: 
05: 
06: 
07: 
08: 
09: 
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
 
| 
5.000000  1.000000
4.000000  2.000000
 |  
 |