* Ö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ı
###############----- (%75)
|
En son güncelleme: Wed, 30 Nov 2011 13:22:02 +0200
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
|
|