Низове

     Определение: Низовете представляват поредица от различни знаци и цифри,
низа може да включва всички символи обозначени на клавиатурата, като:
(' aпостроф, ~ тилда, & - амперсанд, @ -"at" (при), долни черти _, # - диез, числа, и др.).
Всеки символ от клавиатурата има точно определен код, на който съответства в паметта
на компютъра ( ASCII -American Standart Code for Information Interchange
- американски стандартен код за обмен на информация).
В езика С няма точно определен тип за деклариране на низове, но низове
се декларират като масиви от символи. Чрез оператора char можем да декларираме
един символ:
char a='C';
Низа се декларира като масив от символи, на който последния елемент завършва
с '\0' ; null
- нулев знак (обратно наклонена черта и нула - знак за край на низ).
    Декларация :
char Име [дължина];
Име - името на вашия низ;
дължина - число от 0 до 255, колко символа може да съдържа вашия низ ;
   Пример : Деклариране на низ от 10 знака
     char B[10];
B[0]='H';
B[1]='e';
B[2]='l';
B[3]='l';
B[4]='o';
B[5]='\0';
Когато въвеждаме символите един по един, трябва ръчно да въведем '\0'.

nizove

Можем да зададем стойности и по този начин: char ar[]={'A','B','C','D','E','\0'};
По-лесният начин е когато при самата декларацията се извършва инициализация :
char А[20]="Hello world"; и компилатора автоматично въвежда '\0' .
nizove

Когато се присвоява един знак се пише между апострофи, а когато се присвояват
няколко знака се пишат между кавички.
     Важно !   низове се присвояват само символ по символ:
Не може да се осъществи:
char a[20];
а="Hello";
Това става така :
char a[20]="Hello";
или
char a[20]={'H','e','l','l','o','\0'};
може и по този начин :
char a[]="Hello"; - компилаторът сам преброява колко знака се съдържат в низа.
Само при декларацията могат да се задават множествени константи( да се инициализират
с повече от един знак т.е. когато се пишат между кавички).
Друг начин :
char letter [20];
letter[0]='a';
letter[1]='n';
letter[2]='d';
letter[3]='\0';
Най-често използваните начини за въвеждане на низ от клавиатурата са:
чрез вградените функции:
gets()-чете низ от клавиатурата докато не натиснем клавиша Enter съдържа се
в библиотеката stdio.h
създаване на цикъл за въвеждане;
strcpy() --> в библиотеката string.h;

Низът може да не достига максималната зададена дължина, но винаги след последния знак
трябва да има -'\0' .
     Важно !   ако Ви трябва низ който да съдържа 5 символа трябва да го
декларирате от 6 символа т.е. с един повече.

Това няма да работи:
char a[5]="12345";
cout<< a<< endl;
Тази програма ще работи:
#include <iostream> //for Code Blocks
using namespace std;
int main()
{
char a[5]="1234";
cout<< a<< endl;
return 0;
}
      Губим един символ за край на низ '\0'.

Ето още няколко примера:
  Пример 1 : Възможно най-лесния начин за въвеждане и извеждане на низ.
#include <iostream> //for Code Blocks
using namespace std;
int main()
{
char a[20];
cin>>a;
cout<< a<< endl;
return 0;
}
  Пример 2 : Въвеждане Hello и извеждаме втория символ,след това целия низ.
#include <iostream> //for Code Blocks
using namespace std;
int main()
{
char B[10];
B[0]='H';
B[1]='e';
B[2]='l';
B[3]='l';
B[4]='o';
B[5]='\0';
cout<< B[1]<< endl;
cout<< B<< endl;
return 0;
}

  Пример 3 : Въвеждане на низ чрез функцията gets(), след това го извеждаме.
#include <iostream> //for Code Blocks
#include <stdio.h>
using namespace std;
int main()
{
char a[20];
gets(a);
cout<< a<< endl;
return 0;
}
  Пример 4 : Въвеждане и извеждане на низ. Извеждаме и третия подред знак,
след това извеждаме дължината на самия низ и накрая извеждаме от
колко знака е деклариран в програмата.
#include <iostream> //for Code Blocks
#include <string.h>
using namespace std;
int main()
{
char a[75];
cin>>a;
cout<< a<< endl;
cout<< a[2]<< endl;
cout<< strlen(a)<< endl;
cout<< sizeof(a)<< endl;
return 0;
}
Библиотеката string.h съдържа функциите за работа с низове.
функцията strlen(x)-връща дължината на низ с име x.
В библиотеката string.h се съдържа и оператора string, чрез който можем
също да декларираме низове.
     Пример 5 :
За въвеждане и извеждане на низ. Извеждаме и третия подред знак
#include <iostream> //for Code Blocks
#include <string.h>
using namespace std;
int main()
{
string a;
cin>>a;
cout<< a<< endl;
cout<< a[2]<< endl;
return 0;
}

     Пример 6 :
   Първоначално низ с съдържа "Hello World", извеждаме този низ, колко символа съдържа, какъв е неговия размер.
След това въвеждаме символ (а), който търсим и ако той се съдържа, програмата извежда неговата позиция и колко пъти се повтаря.

#include <iostream> //for Code Blocks
#include <string.h>
using namespace std;
int main()
{
int i,br=0;
char c[]="Hello World",a;
cout<< c<< endl;
cout<< "length c="<< strlen(c)<< endl;
cout<< "size c ="<< sizeof(c)<< endl;
cout<< "a="; cin>> a;
for(i=0;i< c[i];i++)
{
if(a==c[i])
{
br++;
cout<< "position a="<< i+1<< endl;
}
}
if (br==0)
cout<< "Symbol "<< a<<" contained in a string"<< endl;
else
cout<< "\nrepeated "<< br<<" times";
return 0;
}

     Пример 7 :
Сравняваме низове декларирани чрез string а и чрез char b.
След като стартираме програмата трябва да въведем някакъв низ.

#include <iostream> //for Code Blocks
#include <string.h>
using namespace std;
int main()
{
string a;
cin>> a;
char b[80]="Hello World";
cout<< a<< endl;
cout<< "length a="<< a.length()<< endl;
cout<< "size a ="<< sizeof(a)<< endl;
cout<< b<< endl;
cout<< "length b="<< strlen(b)<< endl;
cout<< "size b="<< sizeof(b)<< endl;
return 0;
}

Функциите за работа с низове ще бъдат разгледани в друг урок.

Благодаря за вниманието Ви !