- •Proqramlaşdırmanın əsasları
- •3. Yaddaş və verilənlərin tipləri
- •3.1. Yaddaş və onun növləri
- •3.2. Standart tip verilənlərin ölçüsü
- •3.3. Dəyişənlərin elan olunması
- •3.4. Konstantlar (Sabitlər)
- •3.5. İfadələr
- •4. Xətti və budaqlanan alqoritmlərin proqramlaşdırılması
- •4.1. Xətti alqoritmlərin proqramlaşdırılması
- •3.7. Tiplərin çevrilməsi
- •Müstəqil işləmək üçün tapşırıqlar
- •4.2. Giriş/çıxış operatorları
- •4.3. Budaqlanan alqoritmlərin proqramlaşdırılması
- •4.3.1. Şərt operatoru
- •4.3.3. Seçmə (variant) operatoru
- •4.3.4. Goto operatoru
- •4.3.5. Proqramın exit operatoru ilə dayandırılması
- •Müstəqil işləmək üçün tapşırıqlar
- •Dövri alqoritmlərin proqramlaşdırılması
- •5.1. Önşərtli dövr operatoru
- •5.2. Sonşərtli dövr operatoru
- •5.3. Parametrli dövr operatoru
- •5.4. Break operatoru
- •5.5. Continue operatoru
- •Müstəqil işləmək üçün çalışmalar
- •Funksiyalar
- •6.1. Funksiyanın sintaksisi
- •6.2. Funksiyanın təyin olunması
- •6.3. Funksiyanın çağırılması
- •6.4. Prototipin yaradılması
- •6.5. Lokal dəyişənlər
- •6.6. Qlobal dəyişənlər
- •6.7. Statik lokal dəyişənlər
- •6.8. Məlumatın funksiyaya göndərilməsi
- •6.9. Funksiyadan qiymətin qaytarılması
- •Müstəqil işləmək üçün tapşırıqlar
- •Massivlər
- •7.1. Birölçülü massivlər
- •7.2. İkiölçülü massivlər
- •İkiölçülü massivin ekrana çıxarılması:
- •Müstəqil işləmək üçün tapşırıqlar
- •Simvollar və sətirlər
- •8.1. Simvol və sətirlərin sintaksisi
- •Sətirlərlə işləyən funksiyalar
- •Müstəqil işləmək üçün tapşırıqlar
- •Fayllar: fayldan daxiletmə
- •Və fayla çıxış
- •Ikilik və mətn faylları
- •Fstream standart kitabxanası
- •Fayla girişin ümumi alqoritmi
- •9.4. Faylın açılması
- •9.4.1. Yazmaq üçün faylın açılması
- •9.4.2. Oxumaq üçün faylın açılması
- •9.4.3. Faylın oxumaq və yazmaq üçün açılması
- •9.5. Faylın bağlanması
- •9.6. Fayla yazmaq və fayldan oxumaq
- •Strukturlar və siniflər
- •Strukturlar və onların elanı
- •Int height;
- •Strukturun dəyişəninin elanı
- •Strukturun inisiallaşdırılması
- •Strukturların funksiya parametri kimi ötürülməsi
- •Siniflər
- •Operatorlar
- •Operatorların üstünlük dərəcəsi
- •Sərhəd qiymətlərinin sabitləri
- •Həqiqi tiplər üçün sabitlər – float.H faylı
- •C dilinin standart funksiyalar kitabxanası
- •Hesabi funksiyalar – math.H faylı
- •Standart fayllar üçün giriş-çıxış funksiyaları- stdio.H faylı
- •Sətirlərlə işləmək üçün funksiyalar- string.H, stdlib.H faylları
- •Mətn rejimində terminalla işləmək üçün funksiyalar- conio.H faylı
- •Xüsusi funksiyalar
- •Mündəricat
7.2. İkiölçülü massivlər
İkiölçülü massivlər ( matrislər) – vektorlar massividir və kvadrat mötərizədə iki ədədlə verilirlər.
Elementin_ tipi massivin_adı [ölçü 1] [ölçü 2];
Burada ölçü 1 – sətirlərin sayı, ölçü 2 – sütunların sayıdır.
Üçölçülü massivlər:
Elementin_tipi massivin_adı [ölçü 1] [ ölçü 2][ölçü 3];
Məsələn:
double matre [100][10];
int i_matrix [10] [20];
char cube [10][20][3];
Kompüterin yaddaşında matrislər aşağıdakı ardıcıllıqla yerləşdirilmiş oyuqları tuturlar: əvvəlcə I sətir, sonra II sətir və s.
Çoxölçülü massivlərin emalında bir-birinə daxil olan dövrlərdən istifadə edilir. Bu vaxt ən yavaş sol kənar indeks, ən tez isə sağ kənar indeks dəyişir.
Çoxölçülü massivlərlə işləyərkən ən daxili dövr sağ kənar, ən xarici dövr isə sol kənar indeksə uyğun gəlir.
Ikiölçülü massivlərin də emalı zamanı bir sıra tipik alqoritmlər istifadə olunur. Onlardan bir neçəsini verək.
Klaviaturadan tamqiymətli matrisin daxil edilməsi:
const int max_row=5;
const int max_col=4;
. . . . . . . . . . .
for (i=0; i<max_row; i++)
{ for ( j=0; j< max_ col; j++)
{ printf (“ \ n x [%d][%d]”, i, j);
scanf (“%d, &x[i][j]); }
}
İkiölçülü massivin ekrana çıxarılması:
const int max_row=5;
const int max_col=4;
. . . . . . . . . . .
for (i=0; i<max_row; i++)
{ for ( j=0; j< max_ col; j++)
printf (“ %4d”, x [i] [j]” );
printf (“ \ n” ); }
}
Massivin maksimal elementinin hesablanması:
. . . . . . . . . .
int arr [n][k], max;
. . . . . . . . . . .
max=arr [0][0];
for (i=0; i<n; i++)
for (j=0; j<k; j++)
{ if (max< arr [i][j]) max=arr [i][j]; }
Matrisin hər sətrinin maksimal elementinin tapılması:
int arr [n][k], int max[n];
. . . . . . . . . . .
for (i=0; i<n; i++)
{ max[i]=arr [i][0];
for (j=0; j<k; j++)
if (max[i]< arr [i][j]) max[i]=arr [i][j]; }
}
Misal 7.3. Matrisdə sıfırdan kiçik qiymətli ilk elementin yerini təyin edən proqram yazın.
#include <stdlib.h>
main()
{
int a[10][10];
int i, j;
randomize();
for (i = 0; i<10; i++)
for (j = 0; j<10; j++)
a[i][j] = (rand() % 100) - 20;
for (i = 0; i<10; i++)
for (j = 0; j<10; j++)
if (a[i][j] < 0)
goto bul;
printf("Sıfırdan kiçik element yoxdur\n");
goto son;
bul:
printf("elementin mövqeyi və qiyməti (%d, %d) = %d \n",i, j, a[i][j]);
son:
return 0;
}
Misal 7.4. “Qabarcıq” üsulu ilə massivlərin nizamlanması
#include<stdio.h>
#define n 1000
int main() {
int n, i, j;
int a[n];
scanf("%d", &n);
for(i = 0 ; i < n; i++) {
scanf("%d", &a[i]);
}
for(i = 0 ; i < n ; i++) {
//iki qonşu elementin müqayisəsi
for(j = 0 ; j < n - i - 1 ; j++) {
if(a[j] > a[j+1]) {
// əgər şərt doğrudursa,onda
// onların yerləri dəyişdirilir.
int tmp = a[j]; a[j] = a[j+1] ; a[j+1] = tmp;
}
}
}
}
n elementli massivlərin nizamlanması üçün n-1 sayda əməliyyat lazımdır.
Misal 7.5. Binomial əmsalların hesablanması (Paskal üçbucağı)
#include <stdio.h>
#define N 1000
long c[N];
int main () {
long n, i, j;
scanf ("%ld",&n);
for(i = 1; i <= n ; i++) c[i] =0;
c[0] = 1;
for(j = 1 ; j <= n; j++)
for(i = j; i >= 1 ; i--)
c[i] = c[i-1] + c[i];
for(i = 0; i <= n ; i++)
printf ("%ld ", c[i]);
return 0;
}
