упражнение
№5
СИМВОЛНИ
НИЗОВЕ
Теоретична
база
Символните
константи в
С++
представляват
един символ,
заграден в
апострофи.
Пример
‘a’
‘c’
Някои
специални
символи:
‘\t’ - табулация
‘\n’ - нов
ред
‘\\’ - \
‘\’’ - ‘
‘\”’ - “
Низовите
константи в в
С++ се
представят
като
последователност
от символи,
заградени в
кавички. При
запис на
символен низ
в паметта на
компютъра,
всеки символ
се записва в 1
байт, като
след
последния символ
се поставя
специалния
символ за
край на низ – ‘\0’
(нулев
символ).
Пример
“Ботевград”
“10BASE-T”
“Здравейте,
колеги!”
При
запис на
символен низ
в паметта на
компютъра,
всеки символ
се записва в 1
байт, като
след
последния
символ се
поставя
специалния
символ за
край на низ – ‘\0’
(нулев
символ). Поради
това записи
от вида “s” и ‘s’ са различни,
т.к. първия
запис заема 1
байт, а вториа-
2 байта.
Символите
в С++ се
дефинират с
ключовата
дума char. На
променлива
от тип char може да се
присвои един
символ или ASCII кода
на символа.
Затова
записи от
вида ch='A' и ch=65 са
едни и същи.
Пример
char ch, N;
ch= ‘a’;
N=‘3’
За
символен низ
в С++ няма
създаден
стандартен
тип.
Символните
низове се
дефинират
като масиви от
тип char.
При
дефинирането
не трябва да
се забравя да
се задели
памет и за
нулевия
символ. Символен
низ
може да се
инициализира
само при
неговото
дефиниране.
Директно
присвояване
на стойност
на символен
низ в С++ не е допустимо.
Пример
char Name[20];
char EGN[11]={“8809081988”};
Някои
функции за
работа със
символни
низове
(библиотека string.h):
int strlen(char* str); -
връща
дължината на
низа
char * strcpy(char* str1,char* str2); -
копира
съдържанието
на str2 в str1
int strcmp(char* str1,char* str2); -
сравнява
двата низа и
връща 0 ако са
равни
char * strcat(char* str1,char* str2); -
допълва низа str1 с str2
Задача: Да се
напише
програма,
която
въвежда N
думи от
клавиатурата
(N£100) и
извежда
думата
(думите) с
най-голяма
дължина и тяхната
дължина.
Решение:
#include <string.h>
#include <iostream.h>
void main ()
{ int i, len=0 ,n;
char a[100][30];
do
{cout <<"br dumi n= ";
cin>>n;
}while (n<1||n>=100);
for (i=0; i<n; i++)
{cout<<"vavedete"<<i+1<<"ta duma:";
cin>>a[i];
if (strlen(a[i])>len)len=strlen(a[i]);
}
cout <<"max.d-na na duma e;"<<len<<'\n';
for (i=0;i<n;i++)
if (strlen (a[i])==len)cout<<"a["<<i<<"]="<<a[i]<<'\n';
}
Задачи
за
самостоятелна
работа
Зад.1. Да се
напише
програма, в
която се
въвежда символен
низ и
преброява
колко пъти в
низа се среща
всяка една от
цифрите от 0
до 9 . Да
се работи с
функции.
Зад.2. Да се напише програма, в която се въвежда символен низ и се претърсва низа за наличие на въведен от клавиатурата символ или символен низ. Да се работи с функции.
Зад.3. Да се напише програма, в която се въвежда символен низ и позволява преобразуване на всичките му букви в главни или преобразуване на всичките му букви в малки в зависимост от избора на клиента. Да се дефинират работи с функции.
Зад.4. Да се
напише
програма, в
която се
въвежда от
клавиатурата
два символни
низа, двата
низа се
обединяват в
трети, като
първо се записват
символите на
първият, а
след това – на
вторият. Да се
работи с
функции.
Зад.5. Да се
напише
програма, в
която се
въвежда символен
низ и
всичките му
главни букви
от английската
азбука се
преобразуват
в съответните
малки.
Зад.6. Да се напише програма, в която се въвежда символен низ и го преобразува така, че първата буква да е главна, а всички останали – малки.
Зад.7 . Даден е масив от N низа, всеки от които съдържа имена на български градове. Да се напише програма, която преобразува масива така, че добавя пред името на всеки един елемент думата "град". Преобразуваният масив да се изведе на екрана.