русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Керниган


Дата додавання: 2013-12-23; переглядів: 1732.


Getch();

Gets(f);

Gets(f);

Main ()

Getch();

Main ()

Getch();

Puts(name);

Strcat(name,stud);

Gets(name);

Clrscr();

Main ()

Getch();

Clrscr();

Main ()

Getch();

Clrscr();

Main ()

Jkl

Ghi

Def

Abc

Puts(str3);

Puts(str2);

Puts(str1);

Main()

Getch();

K=strlen(str);

Gets(str);

Clrscr();

Void main()

Getch();

Gets(str);

Clrscr();

Void main()

Getch();

Strlen(st));

Gets(st);

I=0;

Gets(st);

Clrscr();

Int i;

Void main()

Getch();

Else

Clrscr();

Void main()

Getch();

Clrscr();

Void main()

{char b[]=”Сезам, ашыл!”;

printf("%s",b);

}

Мұндағы b жиымының ұзындығы 13 символ, яғни сөздер ұзындығынан 1-ге артық.

Енді бір сөйлем енгізіп, соның соңғы сөзін экранға шығарайық.

#include <conio.h>

#include <stdio.h>

{

char s,ss; // s – енгізілетін символ

// ss – алдыңғы символ

char a[80]; // сөз массиві

int i,k; // k – сөз ені

printf("Соңында нүкте бар сөйлем енгізіңдер:\n”);

for(i='0',s=' ',k=0;i<=79;i++)

{

ss=s; s=getchar();

if (s==' ') continue;

if (s=='.') break;

if (ss==' ') k=0;

a[k]=s; k++;

}

//нүктеден кейін шығу не тіркес біткесін шығу

if (i==80 || k==0)

printf("сөйлем дұрыс емес \n”);

{

a[k]=‘\0’; // жол соңы

printf("ең соңғы сөз: %s",a);

}

}

мұнда символдар біртіндеп getchar() функциясы арқылы енгізіледі. Егер бос орын енгізілсе continue операторы келесі қадамға көшіреді. Нүкте енгізілсе цикл тоқталады, бірақ алыңғы k символда соңғы сөз сақталады. Егер символ нүкте де, бос орын да емес болса, онда алдыңғы символ қарастыры­лады. Егер ол бос орын болса, онда келесі сөз енгізіліп, k нөлге тең болады. Циклден шығу нүкте арқылы немесе 80 символ енгізілген соң орындалады.

Келесі мысалда сөз тіркесінің ұзындығы екі тәсілмен анықталады.

#include <conio.h>

#include <stdio.h>

#include <string.h>

{

char st[80];

puts("Сөз тіркесін енгізіп, Enter басыңыз:");

while (st[i++])

;

printf("Енгізілген тіркес ұзындығы: %i\n",i-1);

puts("Сөз тіркесін енгізіп, Enter басыңыз:");

printf("Енгізілген тіркес ұзындығы: %i\n",

}

Енді бір сөз тіркесін енгізіп, оның ішінде “т” символының неше рет кездесетінін табайық.

#include <conio.h>

#include <stdio.h>

#include <string.h>

{

char str[80];

int s=0;

puts("Сөз тіркесін (сөйлем) енгізіңіз:");

for (int i=0; i<strlen(str); i++)

if (str[i] == 'т') s+=1;

printf("'т' символы %i рет кездеседі\n",s);

}

Ендігі мысалда енгізілген сөздің палиндром (алды-артынан оқығанда, мәні бірдей) екенін анықтайық.

#include <conio.h>

#include <stdio.h>

#include <string.h>

{

char str[80];

int k,s=0;

puts("Бір сөз (палиндром) енгізіңіз:");

for (int i=0; i<k/2; i++)

if (str[i] == str[k-i-1]) s+=1;

if (s==k/2)

puts("Сөз - палиндром.");

else puts("Сөз - палиндром емес.");

}

Дәріс№11

СӨЗ ТІРКЕСТЕРІН ӨҢДЕУ. Жолдар.

Сөз тіркестерін енгізу функциялары scanf(), gets(str).

Scanf() функциясы тіркестік айнымалылар мәнін %s форматы­мен енгізеді, бірақ ол тіркесті тек бірінші босорын таңбасына дейін ғана енгізе алады.

Ал gets(str) функциясы арасында босорыны бар тіркестерді енгізеді, енгізу ENTER пернесімен аяқталады.

Екі функция да тіркес соңына нөлдік байт қосып жазады. Оның үс­тіне тіркес –символдық жиым болып, ал жиым аты – оның компьютер жадындағы алғашқы адресіне сілтеме болғандықтан, тіркестік айнымалы атының алдына «&» символы жазылмайды.

Сөз тіркестерін шығару функциялары сprintf(),puts(),cputs()

printf() – экранға формат арқылы сөз тіркесін шығарады;

сprintf() – экранға printf() сияқты формат арқылы сөз тіркесін шыға­ра­ды, тек олардың түстерін text­color() және textback­ground() функциялары арқылы өзгертуге мүмкіндік береді;

puts(str) – экранға сөз тіркесін шығарып, курсорды бірден келесі жолдың ба­сы­на алып барады, мұндағы str – тіркестік константа немесе тіркестік ай­ны­ма­лы. Бұлар stdio.h тақырып файлы бойынша жұмыс істейді.

Екі функция да символдық жиымды нөлдік байтқа дейін шығарады. printf() функциясы символ тіркесі шығарылған соң, курсорды келесі жолға көшірмейді, ол үшін арнайы формат (\n) жазылуы тиіс. Ал puts( ) функциясы символдар шығарылған соң, автоматты түрде курсорды келесі жол басына көшіреді.

//puts функциясын пайдалану мысалы

 

#include <stdio.h>

 

 

#include <conio.h>

 

 

{ char str1[]= “abc”;

char str2[]= “def\nghi\n”;

 

 

char str3[]= “jkl”;

 

 

}

Нәтижесі:

 

cputs(str) – экранға сөз тіркестерін шығарып, олардың түстерін text­color() және textbackground() функциялары арқылы өзгертуге мүмкіндік береді, conio.h тақырып файлы бойынша жұмыс істейді.

Сөз тіркестерімен орындалатын басқа операциялар да стандартты функ­ция­­лар арқылы атқарылады. Ол функциялар жұмыс істеуі үшін string.h тақырыптық файлы қажет.

Жалпы сөз тіркестеріне қолдану үшін stdlib.h немесе string.h тақырыптық файлдары қолданылады.

Сөз тіркестерімен жұмыс істейтін функциялар

1) strlen(str)функциясы str сөз тіркесіндегі символдар санын (соң­ғы нөлді есепке алмайды), яғни жолдың ұзындығын анықтайды, оның типі int, тақырыптық файлы <string.h>.

Мысалы. Бірнеше сөз тіркестерінің ұзындығын анықтайтын программа құру керек.

// strlen(str) функциясын пайдалану

#include <conio.h>

#include <stdio.h>

#include <string.h>

{

static char t[]=”Студенттер жайлы хабарлама.”;

printf(“%d\n”,strlen(t));

printf(“%d\n”,strlen(”Студенттер жайлы

хабарлама.”));

printf(”%d\n”,strlen(”аль-Фараби ат.КазҰУ”));

printf(“%d\n”,strlen(“”));

}

Мұның нәтижесі:

2) strcat(stroka1,stroka2) функциясы қатарларды біріктіру үшін қолданы­ла­ды. Ол stroka1 және stroka2 тіркестерін бірік­ті­ріп, нәтижені stroka1 айныма­лысына меншіктейді, stroka2 тірке­сінің мәні өзгермейді

Мысалы:

// strcat(str1, str2) функциясын пайдалану

#include <conio.h>

#include <stdio.h>

#include <string.h>

{

char str1[50]="Си тілін оқимыз, ";

char str2[]="жақында емтихан тапсырамыз.";

printf("%s\n",strcat(str1,str2));

puts(str1); // қатарды экранға шығару

puts(strcat("Егер жақсы оқысақ, ",str2));

}

Мұның нәтижесі:

Си тілін оқимыз, жақында емтихан тапсырамыз.

Си тілін оқимыз, жақында емтихан тапсырамыз.

Егер жақсы оқысақ, жақында емтихан тапсырамыз.

 

Келесі мысалда студенттің аты пернелерден енгізіліп, ол екінші тіркеспен біріктіріледі.

// strcat(str1, str2) функцияларын пайдалану

#include <conio.h>

#include <stdio.h>

#include <string.h>

{

char name[80];

char stud[]= " - КазҰУ студенті";

puts("атын енгіз:");

}

3) strcmp(stroka1,stroka2) функциясы екі сөз тіркесін салыс­тыру үшін қол­да­нылады. Егер олар бірдей болса, функцияның мәні 0-ге тең болады, әйт­песе ол екі тіркестің айырмасын береді. Егер stroka1<stroka2 болса, нә­тиже 0-ден кіші, ал stroka1> stro­ka2 болса, нәтиже 0-ден артық болады. Көбінесе бұл тәсіл екі тіркес­тің бірдей еместігін анықтау үшін ғана қолданылады.

Мысалы:

{

printf("%d\n",strcmp("Сәлем","Сәлем"));

printf("%d\n",strcmp("Azat","Izat"));

printf("%d\n",strcmp("Абайда","Абайла"));

}

Мұның нәтижесі:

-8

-7

Алғашқы екі сөз бірдей, нәтижесі – 0, келесі екі сөздің алғашқы әрпі әр түрлі, олардың ASCII-кодтарының айырмасы – -8 (А - 65, I - 73), ал 3-жолы -7 (д – 164, л – 171, олардың кодтарының айырмасы 164-171=-7).

// strcmp(str1, str2) функциясын пайдалану

#include <conio.h>

#include <stdio.h>

#include <string.h>

#define NAME "Ритчи"

{

char f[20];

puts("Си тілінің авторы кім:");

while(strcmp(f,NAME)!=0)

{puts("басқа кім болуы мүмкін:");

}

puts("Жауап дұрыс!");

}

Нәтижесі:

Си тілінің авторы кім:

басқа кім болуы мүмкін:


<== попередня лекція | наступна лекція ==>
Static char | Функция коды


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн