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() сияқты формат арқылы сөз тіркесін шығарады, тек олардың түстерін textcolor() және textbackground() функциялары арқылы өзгертуге мүмкіндік береді;
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) – экранға сөз тіркестерін шығарып, олардың түстерін textcolor() және 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> stroka2 болса, нәтиже 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("Жауап дұрыс!");
}
Нәтижесі:
Си тілінің авторы кім:
басқа кім болуы мүмкін: