118
static char *m[4]={”регистр”,”жады”,”курсор”,”элемент”};
бҧл жиым символдық тіркестерге сілтейтін 4 нҧсқауыш болып табылады.
Сонымен, символдық тіркестер жиымдар болып табылатын болса, онда осы
жиымдарға сілтейтін 4 нҧсқауыш қарастырылады. 1-жолға сілтейтін 1-
нҧсқауыш болып m[0] есептеледі, m[1] 2-жолға сілтейтін 2-нҧсқауыш болып
табылады. Сонымен, әрбір нҧсқауыш соған сәйкес жолдың немесе қатардың ең
бірінші символына сілтейді.
*m[0]==‟р‟; *m[1]==‟ж‟; *m[2]==‟к‟; *m[3]==‟э‟;
Тіркестерден қҧрылған жиымдарды сипаттағанда, символдық тіркестер кӛлемін
кӛрсетуге де болады және бҧл сипаттауда тіркестердің ҧзындығын келесідей
тҥрде кӛрсетуге болады:
static char m[10];
Символдар тіркестерін енгізу/шығару ҥшін printf() және scanf()
функцияларының %s форматы қолданылады.
Тағы мысалдар келтірейік.
/* символдық тіркесті шығару */
#include
#include
void main()
{char b[]=”Сезам, ашыл!”;
clrscr();
printf("%s",b);
getch();
}
Мҧндағы b жиымының ҧзындығы – 13 символ, яғни сӛздер ҧзындығынан 1-
ге артық.
Енді бір сӛйлем енгізіп, соның соңғы сӛзін экранға шығарайық.
#include
#include
void main()
{
char s,ss; // s – енгізілетін символ
// ss – алдыңғы символ
char a[80]; // сөз жиымы
int i,k; // k – сөз ені
clrscr();
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++;
119
}
//нүктеден кейін шығу немесе тіркес біткен соң шығу
if (i==80 || k==0)
printf("сөйлем дұрыс емес \n”);
else
{
a[k]=„\0‟; // жол соңы
printf("ең соңғы сөз: %s", a);
}
getch();
}
Мҧнда символдар біртіндеп getchar() функциясы арқылы енгізіледі. Егер
бос орын енгізілсе continue операторы келесі қадамға кӛшіреді. Нҥкте енгізілсе
цикл тоқталады, бірақ алыңғы k символда соңғы сӛз сақталады. Егер символ
нҥкте де, бос орын да емес болса, онда алдыңғы символ қарастырылады. Егер
ол бос орын болса, онда келесі сӛз енгізіліп, k нӛлге тең болады. Циклден шығу
нҥкте арқылы немесе 80 символ енгізілген соң орындалады.
Келесі мысалда сӛз тіркесінің ҧзындығы екі тәсілмен анықталады.
#include
#include
#include
void main()
{
char st[80];
int i;
clrscr();
puts("Сөз тіркесін енгізіп, Enter басыңыз:");
gets(st);
i=0;
while (st[i++])
;
printf("Енгізілген тіркес ұзындығы: %i\n",i-1);
puts("Сөз тіркесін енгізіп, Enter басыңыз:");
gets(st);
printf("Енгізілген тіркес ұзындығы: %i\n", strlen(st));
getch();
}
Енді бір сӛз тіркесін енгізіп, оның ішінде ―т‖ символының неше рет
кездесетінін табайық.
#include
#include
#include
void main()
120
{
char str[80];
int s=0;
clrscr();
puts("Сөз тіркесін (сөйлем) енгізіңіз:");
gets(str);
for(int i=0; i
if (str[i] == 'т') s+=1;
printf("'т' символы %i рет кездеседі\n",s);
getch();
}
Ендігі мысалда енгізілген сӛздің палиндром (алды-артынан оқығанда, мәні
бірдей – керек, қазақ сияқты сӛздер) екенін анықтайық.
#include
#include
#include
void main()
{
char str[80];
int k,s=0;
clrscr();
puts("Бір сөз (палиндром) енгізіңіз:");
gets(str);
k=strlen(str);
for(int i=0; i
if (str[i] == str[k-i-1]) s+=1;
if (s==k/2)
puts("Сөз - палиндром.");
else puts("Сөз - палиндром емес.");
getch();
}
7. 4 Сӛз тіркестерін енгізу функциялары
scanf(), gets(str)
Scanf() функциясы тіркестік айнымалылар мәнін %s форматымен енгізеді,
бірақ ол тіркесті тек бірінші бос орын таңбасына дейін ғана енгізе алады.
Ал gets(str) функциясы арасында бос орыны бар тіркестерді енгізеді,
енгізу ENTER пернесімен аяқталады.
Екі функция да тіркес соңына нӛлдік байт қосып жазады. Оның ҥстіне тіркес
– символдық жиым болып, ал жиым аты оның компьютер жадындағы алғашқы
адресіне сілтеме болғандықтан, тіркестік айнымалы атының алдына «&»
символы жазылмайды.
7.5 Сӛз тіркестерін шығару функциялары
сprintf(), puts(), cputs()
printf() – экранға формат арқылы сӛз тіркесін шығарады;
Достарыңызбен бөлісу: |