Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Копия Си лекция каз.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
3.05 Mб
Скачать

Int amin;

int m,k;

clrscr();

printf("Берілген матрица:\n");

for (i=0; i<3; i++)

{for (j=0; j<3; j++)

printf(" %2i",a[i][j]);

printf("\n");

}

for (j=0; j<n; j++) //бағананы таңдау

{for (k=0; k<n-1; k++) //мин тауып алмастыру

{ amin=a[k][j];m=k;

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

if (a[i][j] < amin)

{amin=a[i][j]; m = i;}

a[m][j]=a[k][j]; a[k][j]=amin;

}

}

printf("\nСұрыпталған матрица элементтері:\n");

for (i=0; i<3; i++)

{for (j=0; j<3; j++)

printf(" %2i",a[i][j]);

printf("\n");

}

getch();

}

Екі өлшемді жиымдармен жұмыс істеу кезінде ­­­­

нұсқауыштарды қолдану

A3,2 жиым берілген болсын. Олар бүтін сандар, яғни

int a[3][2];

int *pri;

pri = a; // бұл pri=a[0][0] деген сөз

a – жиымның аты немесе a[0][0] элементінің адресі

a=&a[0][0];

рri нұсқауышына 1-ді қоссақ, pri+1 деген нұсқауыш a[0][1] элементіне сілтейді. Бұл жиымды қарастырғанда, келесі теңдеулер дұрыс болып табылады:

pri == &a[0][0];

pri+1== &a[0][1];

p ri+2== &a[1][0];

pri+3== &a[1][1];

pri+4== &a[2][0];

pri+5== &a[2][1];

Екі өлшемді жиым бір өлшемді жиымдардан құрастырылған жиым ретінде қарастырылуы мүмкін. Яғни берілген екі өлшемді жиым үш жолдан тұрады, ал әрбір жол екі элементтен тұратын жиым болып табылады.

Бірінші жол аты – a[0],

екінші жол аты – a[1],

үшінші жол аты – a[2].

Жиымның аты берілген жиымның нұсқауышы болып табылады, яғни ол жиымның 1-элементіне сілтейді.

Екі өлшемді жиымның осы қасиеті бір өлшемді жиымға арналған функцияны екі өлшемді жиыммен жұмыс істеуге мүмкіндік береді.

12-мысал. Төмендегі b[3][4] матрицасы жолдарының арифметика­лық ортасын табатын программада функция қолданылған.

/* b[3][4] матрицасы жолдарының қосындысы */

#include <conio.h>

#include <stdio.h>

float f1(int x[], int n)

{ int k; float s;

for (k=0,s=0;k<n; k++)

s+=x[k];

return(s/n);

}

main ()

{ int i,b[3][4]={ {6,4,3,3},

{7,5,3,3},

{8,4,2,6}

};

clrscr();

for (i=0;i<3;i++)

printf("%d жолының орташа мәні: %f\n", i,f1(b[i],4));

getch();

}

Бақылау сұрақтары

  1. Екі өлшемді жиымды – матрицаны сипаттау, бастапқы мәндерді тағай­ындау тәсілдері.

  2. Екі өлшемді жиымды инициалдауды қабаттасқан циклдер арқылы орындау.

  3. Матрица элементтерін толық өңдейтін алгоритмдер.

  4. Матрицалардың көрсетілген элементтерін өңдеу тәсілдері.

  5. Матрицалардың диагоналына байланысты орналасқан элементтерін өңдеу жолдары.

  6. Матрицалардың жолдарының және бағаналарының ең үлкен (кіші) элем­ент­терін, қосындыларын, көбейтінділерін табу.

  7. Матрицалардың жолдарында және бағаналарында орналасқан элемент­терді өсуі (кемуі) бойынша реттеу алгоритмдері.

Дәріс№10

7. Сөз тіркестерін өңдеу

PASCAL тілінде сөз тіркестерін өңдеу кезінде қолданылатын арнайы тип – string бар. Ал Си тілінде мұндай арнайы тип жоқ. Сөз тіркестері char типті бір өлшемді жиым ретінде қарастырылады, яғни сөз тіркесі – нөлдік байтпен аяқталатын char типті бір өлшемді жиым. Нөлдік байт – барлық биттері де нөлге тең байт, ол ´ \0 ´ символдық константасымен анықталады (тіркес соңы белгісі немесе нөл-терминатор). Сондықтан егер тіркесте k символ болса, онда жиымды сипаттауда k+1 элемент көрсетілуі тиіс.

Мысалы, char a[7] деген сипаттау тіркестің 6 символдан тұра­ты­нын, ал соңғы байт нөлдік екенін білдіреді. Си тіліндегі тіркестік (жол­дық) константа – қос тырнақшаға алынған символдар жиыны. Мысалы, “Берілген тапсырма” тіркесі, оның соңына нөлдік байтты компилятор автоматты түрде өзі жазады.

Айнымалы мәні болатын сөз тіркесін сипаттау кезінде бірден көрсетуге болады, мысалы,

char S1[10]=”123456789”, S2[]=”Болат”;

Соңғы сөз ұзындығы тіркестің символдары санымен анықталады.

Символдар тіркесін пернелерден енгізу үшін екі стандартты функция – scanf()немесе gets()қолданылады, ал олардың прототиптері stdio.h тақырыптық файлында болады.

Символдық таңбаларды енгізу/шығару

Символдарды біртіндеп енгізу/шығару үшін printf() және scanf() функцияларының %c форматы қолданылады.

getch() – параметрсіз функция, басылған перненің кодын (int) бере­ді, экранға ешқандай символ шығармайды.

getchar() – параметрсіз функция. Пернеден символдарды бір-бір­леп енгізеді. Сөз тіркесі <Enter> пернесі басылғанша енгізіле береді, оған дейін оны өз­гер­туге де болады.

putch(c) – бір символды (c – cимволдық айнымалы немесе конс­танта), яғни бір таңбаны ғана экранға шығарады.

putchar(c) – бұл да тек бір таңбаны экранға шығарады.

Бұлар conio.h тақырып файлы бойынша жұмыс істейді.

Мысалы, латын алфавиті әріптерін экранға шығару программасы төмендегідей болады:

#include <conio.h>

#include <stdio.h>