Пәні бойынша ОҚУ-Әдістемелік кешен



бет42/111
Дата11.09.2020
өлшемі1,21 Mb.
#77805
1   ...   38   39   40   41   42   43   44   45   ...   111
Байланысты:
UMK Ci tilinde programmalau (1)

0

1

2

3







0

1

2

3

0

1

2

3

4

0

1

2

3




1

5

6

7

8

1

4

5

6

7

2

9










2

8

9






Бос торларда жиым элементтері анықталмаған.



4-тәсіл. Жиым элементтерінің мәнін кездейсоқ сандармен беруге бола ды. Мысалы, жиым элементтер мәні n ге дейінгі кездейсоқ бүтін сандар:

randomize(); for( i=0 ; i<5; i++) { for j=0;j<4;j++) arr[i][j]=random(n);}

Мұндай жағдайда , компилятор жиым элементтер санын 0-байтты қоса өзі анықтайды. Осылай, кезкелген типті бір және көпөлшемді жиымдарды хабарлауға болады:



int arr[ ] ={ 1,2,3,4,5,6,7,8,9};

int arr[ ][ ]={ 1,2,3,4,5,6,7,8,9};

Егер жиым өлшем саны белгісіз болса сол жақтағы квадрат жақшадағы өлшем санын көрсетпеуге де болады:



int arr[ ][ 3]={ 1,2,3,

4,5,6,

7,8,9,0};

/* _C _ 65_ Екі өлшемді arr[3][4] жиымының элементтерін жоғарыдағы 4 тәсілмен енгізіп , кестелеп, баспалаңдар______________*/



#include

#include

#include

#include

main() { clrscr(); int arr[3][4] ;

puts("_______________ 1-mәсіл _______________________");

arr[0][0]=1; arr[0][1]=2; arr[0][2]=3 ; arr[0][3]=4;

arr[1][0]=5; arr[1][1]=6; arr[1][2]=7; arr[1][3]=8;

arr[2][0]=9; arr[2][1]=10;arr[2][2]=11;arr[2][3]=12;

\* жиым элементтерін баспаға шығару*\

for(i=0; i<4; i++) { for( j=0;j<3;j++) printf("%2d", arr[i][j]);} printf(“\n”) ;

puts("____________ 2-mәсіл________________________");

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

printf(“ жиым элементтерін енгізіңіз arr[ %d,%d]=?”,i,j);

scanf("%d",&arr[i][j]);}

\* жиым элементтерін баспаға шығару*\

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

{printf("%d",arr[i][j]);} printf("\n");}

puts("_____________ 3-тәсіл _______________________");

int arr[3][4]={ 1,2,3,4,5,6,7,8,9,10,11,12};

\* жиым элементтерін баспаға шығару*\

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

{printf("%d",arr[i][j]);} printf("\n");}

puts(___________________ 4-mәсіл ______________________");

int arr[3][4],cl; randomize(); for(i=0; i<3; i++){ for j=0;j<4;j++)

{ cl=random(10);\*10 ға дейінгі бүтін сандар *\

cl=pow(-1,cl); \* -1 дің cl дәрежесі *\

arr[i][j]=cl*random(100); \* 100-дейінгі бүтін сандар *\}

\* жиым элементтерін баспаға шығару*\

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

{printf("%d",arr[i][j]);} printf("\n");}

/*____________________________eo program_____________*/
Массивтерді өңдеу алгоритмдері
1. Массив элементтерінің қосындысын табу.

  • Бір өлшемді массив:

S=0;

For (i=1; i<=n; i++)

s=s+a[i];


S=0;

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

For (j=1;j<=n; j++)

s=s+a[i][j]);

2. Массив элементтерінің көбейтіндісін табу.


  • Бір өлшемді массив:

P=1;

For (i=1; i<=n; i++)

P*=a[i]);


  • екі өлшемді массив

p:=1;

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

For (j=1;j<=n; j++)

p*=a[i][j];


3. Массивтің ең кіші элементі мен оның индексін анықтау.

  • Бір өлшемді массив:

min=a[1]; l=1;

For (i=1; i<=n; i++)

if (min>a[i]) {min=a[i]; l=i;}


  • екі өлшемді массив

min:=a[1,1]; l:=1; c:=1;

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

For (j=1;j<=n; j++)

if (min>a[i][j]) {min=a[i][j]; l=i; c=j;}


4. Екі өлшемді массивтің әрбір жолының ең үлкен элементі мен оның индексін анықтау.

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

{max=a[i,1];

For (j=1;j<=n; j++)

if (a[i[[j]>max) max=a[i][j];

printf(%d,’-ші жолдың ең үлкені:’, i);

}

5 Квадрат матрицалар (жол және баған саны бірдей матрицалар).



  • Бас диагональ элементтерінің қосындысын табу. Мұнда i=j болғандықтан, бір цикл ашу жеткілікті.

s=0;

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

s+=a[i][j];


  • Қосалқы диагональ элементтерінің қосындысын табу. Мұнда i+j=n+1 болғандықтан, бір цикл ашу жеткілікті.

s=0;

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

s+=a[i][n+1-i];


  • Бас диагональдан жоғары жатқан элементтердің қосындысын табу. S:=0;

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

For (j=1;j<=n; j++)

if (i


  • Бас диагональдан төмен жатқан элементтердің қосындысын табу.

s=0;

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

for (j=1;j<=n; j++)

if (i>j) s+=a[i][j];

6. Матрицаны тасымалдау.

Матрица жолдарын – бағандармен, ал бағандарын – жолдармен алмастыру.

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

For (j=1;j<=n; j++)

{ t=a[i][j];

a[i][j]=a[j][i];

a[j][i]=t;

}

Дәріс №11. Жолдарды өңдеу. Strcat, strcpy, strlenstrtod, strstr, strspn, т.б. жолды өңдеу функциялары мен процедуралары.


Символдық және жолдық типтің айырмашылықтары.
Жол және символ – әр түрлі нәрселер. Си тіліндегі базалық текстілік элемент - әрқайсысының мәні - жеке символ болатын сhar типті обьектілер. Осындай элементтерді бір өлшемді массивке біріктіру символдар тізбегі – жолмен жұмыс жасауға мүмкіндік береді.

сhar символдық (character) типінің мүмкін мәндері - ASCII коды бар символ. Символдық тұрақты – апострофқа алынып жазылады, мысалы ‘a’, ‘2’, ‘\n’.
Символдар мен жолдарды енгізу тәсілдері:



  1. scanf () функциясы арқылы форматты түрде енгізу. Мұнда екі спецификатор қолданылады:

“%s” – char типті массивке жолдық мәндерді енгізу кезінде

“%c” – char типті айнымалыға жеке символды енгізген кезде

Мысалы,
char c1, s1[80];

………………

scanf (“%c”, &c1); // міндетті түрде айнымалы адресі көрсетіледі



scanf (“%s”, s1); // массив аты - айнымалы адресі болып есептеледі

Екі жағдайда да, енгізу түймесін басқаннан кейін аяқталады. Алайда, c1 айнымалысына - бір символ, ал s1 массивіне – бірінші ашық орынға дейінгі бастапқы символдар тізбегі енгізіледі. Мұнда бір немесе бірнеше ашық орын - ақпарат соңы деп түсініледі. Осыған байланысты, бұл оператор көп жағдайда тиімсіз деп есептеледі.




  1. Символдық берілгендерді енгізу процедуралары арқылы:

int c1;

c1=getch(); // басылған түйменің символын экранға шығармай-ақ, оның //кодын енгізу

c1=getche(); // басылған түйменің символына сәйкес оның кодын енгізу

c1=getchar(); //басылған түйменің кодын түймесін басқан бойда енгізу

Консольдық енгізу-шығару функцияларының қарапайымы getchar() функциясы пернетақтадан енгізген символды оқиды да, пернетақтадан терілген символдарды экранға шығарады. Мысалы, getchar() функциясына бір қатынағанда текстік ағыннан келесі символ оқиды да, ол функция нәтижесі болады. Айталық, ch=getchar( ) функциясы орындалғанда, ch-айнымалысының мәні кезекті пернетақтадан енгізілген символдарды қабылдайды. Мәтіндік ағын экранға беріледі.

getch() функциясы пернетақтадан бірлік символдарды енгізуге қолданылады, мұнда символ экранға бейнеленбейді және функция параметрінің болуы талап етілмейді. getch() функциясын көбіне программа операторларының аяқталғанын білдіретін, программа соңының белғісі ретінде пайдаланады.

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


  1. Жолды енгізу функциясы – gets()


gets(s) функциясы арқылы бірнеше ашық орын белгісін қамтитын кез келген сөйлемді, текстіні енгізуге болады. Алайда, жол ұзындығы буфер сыйымдылығымен (128 байт) шектелген. Enter пернесі басылғаннан кейін символдық жол соңы ‘\O’ (нөлдік байт) символымен толықтырылады.

Символдар мен жолдарды шығару тәсілдері:
1. printf () функциясы арқылы форматты түрде шығару. Мұнда да екі спецификатор қолданылады, алайда олардың арасына текстілер мен жолдарды шығаруға болады.

Мысалы,
char c1, s1[80];

………………

printf (“%c Текст %s”, с1, s1);



2. Жеке символ мен жолды енгізу үшін

putchar(c1) және puts (s1) функциялары қолданылады.


- putchar() функциясы бір символды баспаға береді, курсорды келесі жолға көшіреді. Мысалы, putchar(ch) орындалғанда бүтін ch айнымалысының бір символы баспаға беріледі.
Мысал. Символды енгізу және шығару мысалы.
# include

#include

main() { clrscr(); char ch;

ch= getchar(); putchar(ch);}
- puts() функциясы символдық жолды экранға шығарады да, курсорды экранның жаңа (келесі) жолына өтуін орындайды. Мысалы,

puts (”Borland C”).

Мұнда “\n” ( эскейп тізбек) пайдаланбайды, себебі бұл функция курсорды келесі жолға өтуді автоматты түрде орындайды.


Мысал 1. Жолды енгізу және шығару мысалы.
#include

main() {clrscr();

char str[15]; printf(" Borland \t");

gets(str);

puts(str);}


Жолдармен жұмыс функциялары
Си тілінде жолдармен жұмыс функциялары <string.h> тақырыптық файлында орналасқан. Мұнда жиі қолданылатын функциялар мәтіндері жинақталған. Мұнда ескеретін жай: жолдық символдар дегеніміз - жиымның элементтері, сондықтан жол - жиым .

  1. strcpy(s1,s2). Бұл функция s2 жолын s1 жолына көшірмелейді. Мұнда s1 жиымының өлшемі s2 жиымынан үлкен болуы керек, әйтпесе программаның әрі қарай орындалуы немесе берілген деректердің бұзылуы мүмкін. Бұл жағдайда компилятор қате туралы нұсқау немесе ескертпе бермейді.

  2. strncpy(s1,s2, n) функциясы s2 жолының алғашқы n символын s1 жолына көшіреді.

  3. strcat(s1,s2) функциясы s2 жолын s1 жолына тіркеп, оны s1 жиымына орналастырады. Бұл жағдайда s2 жол-жиымы өзгермейді. s1 жолының соңындағы ‘\0’ символы s2 жолының 1-ші символымен алмастырылады. Бұл strcpy() және strcat() функцияларындағы жаңа жолдар нөлдік байттармен (‘\o’ символымен) аяқталады.

  4. strncat(s1, s2, n) функциясы s2 жолының алғашқы n символын s1 жолына тіркейді.

  5. strcmp(s1,s2) функциясы s1 және s2 жолдарын салыстырады, егер олардың сандары тең болса және бірдей символдардан тұрса 0 (нөл) мәнін қайтарады. Егер s1 жолының символдар саны s2 жолының символдар санынан артық болса, strcmp(s1,s2) функциясы оң мән, әйтпесе теріс мән қайтарады. Мұнда strcmp(s1,s2) функцияларындағы s1 және s2 символдар тіркесінің сәйкес әрбір символының кодтары салыстырылады: s1 жолындағы 1-ші символ коды s2 жолының 1-символ кодымен салыстырылады. Егер олар тең болса, сәйкес 2-ші символдарының кодтары салыстырылады және т.б.

  6. strncmp(s1,s2) функциясы s1 және s2 жолдарының бастапқы n символдарын салыстырады;

  7. strlen(s) функциясы s жолының ұзындығын (символдар санын) анықтайды, мұнда соңғы ‘/o’ символы есептелмейді. sizeof( ‘’Borland C”)=10 өзінің операндасының саны, ал strlen(‘’Borland C”)=9 жолдағы символдар саны;

  8. strstr(s1, s2) – s2 жолының s1 жолында кездесуін анықтайды.

  9. strchr( s,c) функциясы ‘c’ символының s жолының басынан бастап кездесуін анықтайды

  10. strrchr(s,c) функциясы ‘c’ символының s жолының соңынан бастап кездесуін анықтайды;

  11. strpbrk (s1,s2) функциясы s2 жолының кез келген символының s1 жолында кездесуін анықтайды;

  12. strspn( s1,s2) функциясы s2 жолының кез келген символдар бөлігінің s1 жолында кездесуін анықтайды;

  13. atoi (stroka) функциясы stroka бүтін санының символдық көрсетілімін сәйкес бүтін chislo санына түрлендіреді, мысалы , ''123'' 123;

  14. itoa (chislo, stroka , p) функциясы көрсетілген p санау жүйесіндегі бүтін chislo санын stroka символдық көрсетіліміне түрлендіреді, мысалы , 123(10)  ''123'';

  15. atof (stroka ) функциясы stroka бөлшек санының символдық көрсетілімін сәйкес chislo бөлшек санына түрлендіреді, мысалы ''12345.6e-2'' 123.456;


Достарыңызбен бөлісу:
1   ...   38   39   40   41   42   43   44   45   ...   111




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет