Меню
Разработки
Разработки  /  Информатика  /  Презентации  /  Прочее  /  Массивы и символьные строки С++

Массивы и символьные строки С++

Презентация используется на дополнительных курсах получения удостоверения по профессии Программист в ОПК СТИ НИТУ МИСиС

21.12.2017

Содержимое разработки

Использование массивов

Использование массивов

Определение массива Массив – это линейный тип данных или последовательность ячеек памяти одинакового типа. Массивы используются практически в любой программе. Массивы могут быть одномерными, двумерными и многомерными. Одномерные массивы соответствуют строке, двумерные – матрице.

Определение массива

Массив – это линейный тип данных или последовательность ячеек памяти одинакового типа. Массивы используются практически в любой программе. Массивы могут быть одномерными, двумерными и многомерными. Одномерные массивы соответствуют строке, двумерные – матрице.

Объявление массивов При объявлении массива указывают тип его элементов и в квадратных скобках размер массива. Для одномерного массива объявление запишется в виде: int a[10];

Объявление массивов

При объявлении массива указывают тип его элементов и в квадратных скобках размер массива.

Для одномерного массива объявление запишется в виде:

int a[10];

Одномерные массивы Удобно использовать при объявлении массива директиву препроцессора #define : #define SIZE 10 // определили поименованную константу, задающую размер массива void main() { int a[SIZE]; … }

Одномерные массивы

Удобно использовать при объявлении массива директиву препроцессора #define :

#define SIZE 10 // определили поименованную константу, задающую

размер массива

void main()

{

int a[SIZE];

}

Одномерные массивы Для доступа к элементу массива указывают в квадратных скобках его номер. При этом следует отметить, что в языке С индексация элементов массива начинается с нуля. То есть для инициализации первого элемента массива единицей необходимо записать оператор:  a[0]=1;

Одномерные массивы

Для доступа к элементу массива указывают в квадратных скобках его номер. При этом следует отметить, что в языке С индексация элементов массива начинается с нуля.

То есть для инициализации первого элемента массива единицей необходимо записать оператор:

a[0]=1;

Одномерные массивы Для работы с массивами обычно используют цикл for .   Инициализировать массив можно разными способами. Если требуется можно инициализировать элементы массива сразу после объявления: int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};  

Одномерные массивы

Для работы с массивами обычно используют цикл for .

 

Инициализировать массив можно разными способами.

Если требуется можно инициализировать элементы массива сразу после объявления:

int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

 

Одномерные массивы Можно заполнить элементы массива непосредственно в программе: int a[10]; a[5] = 5; for (int i=0; i  a[i]=0; В этом примере сначала шестому элементу массива присваивается значения пять, затем все элементы массива обнуляются.

Одномерные массивы

Можно заполнить элементы массива непосредственно в программе:

int a[10];

a[5] = 5;

for (int i=0; i

a[i]=0;

В этом примере сначала шестому элементу массива присваивается значения пять, затем все элементы массива обнуляются.

Одномерные массивы Инициализация одномерного массива пользователем запишется в виде: int a[10]; for (int i=0; i printf(″Введите значение a[%d]\n″, i);  scanf(″%d″, &a[i]); } В этом примере сначала элементам массива присваиваются значения введенные пользователем.

Одномерные массивы

Инициализация одномерного массива пользователем запишется в виде:

int a[10];

for (int i=0; i

printf(″Введите значение a[%d]\n″, i);

scanf(″%d″, &a[i]);

}

В этом примере сначала элементам массива присваиваются значения введенные пользователем.

Примеры Рассмотрим пример нахождения количества отрицательных элементов массива. int a[10], count; … for (int i=0; i if (a[i]…

Примеры

Рассмотрим пример нахождения количества отрицательных элементов массива.

int a[10], count;

for (int i=0; i

if (a[i]

Примеры Пример нахождения суммы отрицательных элементов массива. int a[10], sum=0; … for (int i=0; i if (a[i]…

Примеры

Пример нахождения суммы отрицательных элементов массива.

int a[10], sum=0;

for (int i=0; i

if (a[i]

Примеры Пример нахождения минимального элемента массива и его индекса. int a[10], min, mini; … min=a[0]; for (int i=0; i if (a[i]min=a[i]; mini=I; } …

Примеры

Пример нахождения минимального элемента массива и его индекса.

int a[10], min, mini;

min=a[0];

for (int i=0; i

if (a[i]

min=a[i];

mini=I;

}

Использование многомерных массивов При создании двухмерного массива после его имени ставится два значения – количество строк и столбцов:  int a[10][12];

Использование многомерных массивов

При создании двухмерного массива после его имени ставится два значения – количество строк и столбцов:

int a[10][12];

Многомерные массивы инициализируются так же, как и одномерные. В следующем примере массив sqrs инициализируется числами от 1 до 10 и их квадратами: int sqrs[10][2] = {   1, 1,    2, 4,   3, 9,    4, 16,    5, 25,    6, 36,    7, 49,    8, 64,    9, 81,    10, 100   };

Многомерные массивы инициализируются так же, как и одномерные. В следующем примере массив sqrs инициализируется числами от 1 до 10 и их квадратами:

int sqrs[10][2] = {

1, 1,

2, 4,

3, 9,

4, 16,

5, 25,

6, 36,

7, 49,

8, 64,

9, 81,

10, 100

};

Далее на примере показаны инициализация и вывод элементов двухмерного массива. int a[10][20]; for (int i=0; i  for (int j=0; j  a[i][j] = 0;

Далее на примере показаны инициализация и вывод элементов двухмерного массива.

int a[10][20];

for (int i=0; i

for (int j=0; j

a[i][j] = 0;

for (int i=0; i  for (int j=0; j  if(i==j)  a[i][j] = 1;

for (int i=0; i

for (int j=0; j

if(i==j)

a[i][j] = 1;

for (i=0; i{   for (int j=0; j  printf(“%i”, a[i][j])    printf(“\n”);      }

for (i=0; i

{

for (int j=0; j

printf(“%i”, a[i][j])

printf(“\n”);  

}

Алгоритм сортировки пузырьком 6 2 7 3 1 5 flag=1 flag=0, i=0: 2 6 7 3 1 5, flag=1 flag=1, i=1: 2 6  7 3 1 5 flag=1, i=2: 2  6 3 7 1 5, flag=1 flag=1, i=3: 2  6 3 1 7 5, flag=1 flag=1, i=4: 2  6 3  1 5 7, flag=1 flag=1 flag=0, i=0: 2 6 3  1 5 7 flag=0, i=1: 2 3 6 1 5 7, flag=1 flag=1, i=2: 2 3 1 6 5 7, flag=1 flag=1, i=3: 2 3  1 5  6 7, flag=1 flag=1, i=4: 2 3  1 5 6 7 , flag=1 flag=1 flag=0, i=0: 2 3 1 5 6 7, flag=0 flag=0, i=1: 2 1  3 5 6 7, flag=1

Алгоритм сортировки пузырьком

6 2 7 3 1 5

flag=1

flag=0, i=0: 2 6 7 3 1 5, flag=1

flag=1, i=1: 2 6 7 3 1 5

flag=1, i=2: 2 6 3 7 1 5, flag=1

flag=1, i=3: 2 6 3 1 7 5, flag=1

flag=1, i=4: 2 6 3 1 5 7, flag=1

flag=1

flag=0, i=0: 2 6 3 1 5 7

flag=0, i=1: 2 3 6 1 5 7, flag=1

flag=1, i=2: 2 3 1 6 5 7, flag=1

flag=1, i=3: 2 3 1 5 6 7, flag=1

flag=1, i=4: 2 3 1 5 6 7 , flag=1

flag=1

flag=0, i=0: 2 3 1 5 6 7, flag=0

flag=0, i=1: 2 1 3 5 6 7, flag=1

Сортировка методом пузырька #include a[i+1]) {   randomize(); int temp = a[i]; int a[10]; a[i] = a[i+1]; char flag; a[i+1] = temp; srand(4); for (int i=0; i flag =1; a[i] = rand()*10; } for (int i=0; i} printf("%d ", a[i]); for (int i=0; iprintf("\n"); printf("%d ", a[i]); getch(); } " width="640"

Сортировка методом пузырька

#include "stdafx.h"

flag = 1;

#include "conio.h"

while(flag)

#include "stdlib.h"

{

#include "time.h"

#define randomize() srand((unsigned)time(NULL));

flag = 0;

#define random(p) ((int)(rand()*p/RAND_MAX))

for (int i=0; i

  void main() {

if(a[i]a[i+1])

{

  randomize();

int temp = a[i];

int a[10];

a[i] = a[i+1];

char flag;

a[i+1] = temp;

srand(4);

for (int i=0; i

flag =1;

a[i] = rand()*10;

}

for (int i=0; i

}

printf("%d ", a[i]);

for (int i=0; i

printf("\n");

printf("%d ", a[i]);

getch();

}

Результат работы srand(4); for (int i=0; isrand(4); for (int i=0; i

Результат работы

  • srand(4); for (int i=0; i
  • srand(4); for (int i=0; i
Функция srand() устанавливает исходное число для последовательности, генерируемой функцией rand(). (Функция rand() возвращает псевдослучайные числа.) Часто функция srand() используется, чтобы при различных запусках программа могла использовать различные последовательности псевдослучайных чисел, — для этого она должна задавать различные исходные числа. Кроме того, с помощью функции srand() можно многократно генерировать одну и ту же последовательность псевдослучайных чисел, — для этого нужно задавать в качестве исходного числа одно и то же значение. Иными словами, чтобы многократно генерировать одну и ту же последовательность псевдослучайных чисел, нужно вызывать данную функцию с одним и тем же значением параметра seed до начала генерации этой последовательности.
  • Функция srand() устанавливает исходное число для последовательности, генерируемой функцией rand(). (Функция rand() возвращает псевдослучайные числа.)
  • Часто функция srand() используется, чтобы при различных запусках программа могла использовать различные последовательности псевдослучайных чисел, — для этого она должна задавать различные исходные числа. Кроме того, с помощью функции srand() можно многократно генерировать одну и ту же последовательность псевдослучайных чисел, — для этого нужно задавать в качестве исходного числа одно и то же значение. Иными словами, чтобы многократно генерировать одну и ту же последовательность псевдослучайных чисел, нужно вызывать данную функцию с одним и тем же значением параметра seed до начала генерации этой последовательности.
Функция rand() генерирует последовательность псевдослучайных чисел. При каждом обращении к функции возвращается целое в интервале между нулем и значением RAND_MAX, которое в любой реализации должно быть не меньше числа 32 767.
  • Функция rand() генерирует последовательность псевдослучайных чисел.
  • При каждом обращении к функции возвращается целое в интервале между нулем и значением RAND_MAX, которое в любой реализации должно быть не меньше числа 32 767.
Символьные строки

Символьные строки

Строковые константы Строковая константа – это последовательность символов кода ASCII, заключённая в кавычки

Строковые константы

Строковая константа – это последовательность символов кода ASCII, заключённая в кавычки "..." и имеющая тип char.

Примеры:

char str="This is character string"

char str1="Это строковая константа"

char str2="A"

char str3="1234567890"

char str4="0"

char str5="$"

В конце каждой строки компилятор помещает нулевой байт '\0', отмечающий конец данной строки

Каждая строковая константа, даже если она идентична другой строковой константе, сохраняется в отдельном месте памяти Если необходимо ввести в строку символ кавычек (
  • Каждая строковая константа, даже если она идентична другой строковой константе, сохраняется в отдельном месте памяти
  • Если необходимо ввести в строку символ кавычек ("), то перед ним надо поставить символ (\)
  • В строку могут быть введены любые специальные символьные константы, перед которыми стоит символ \. При этом символ \ и следующий за ним символ новой строки игнорируется
  • Строковые константы размещаются в статической памяти. Вся фраза в кавычках является указателем на место в памяти, где записана строка. Это аналогично использованию имени массива, служащего указателем на расположение массива.
/* Строки в качестве указателей */ main( ) {  printf(

/* Строки в качестве указателей */

main( )

{

printf("%s, %u, %c\n", "We", "love“,*"Pascal");

}

В примере, формат %s выводит строку We.

Формат %u выводит целое без знака. Если слово "love" является указателем, то выдается его значение, являющееся адресом первого символа строки.

Наконец, *"Pascal" должно выдать значение, на которое ссылается адрес, т.е. первый символ строки "Pascal".

Вот что выдаст программа:

We, 34, P

Массивы символьных строк и их инициализация При определении массива символьных строк необходимо сообщить компилятору требуемый размер памяти Первый способ - инициализация массива при помощи строковой константы Например: char m1[]=

Массивы символьных строк и их инициализация

При определении массива символьных строк необходимо сообщить компилятору требуемый размер памяти

Первый способ - инициализация массива при помощи строковой константы

Например:

char m1[]="Только ограничьтесь одной строкой.";

Здесь оператор инициализировал внешний по умолчанию массив m1 для указанной строки

char m1[ ]={ 'T','o','л','ь','k','o',' ','o','г'','p','a','н','и','ч','ь','т','e','c','ь',' ',o','д','н','o','й',' ','c','т','p','o','k','o','й','.','\0' }

char m1[ ]={

'T','o','л','ь','k','o','

','o','г'','p','a','н','и','ч','ь','т','e','c','ь','

',o','д','н','o','й','

','c','т','p','o','k','o','й','.','\0'

}

Без символа ‘\0’ мы имеем массив символов, а не строку. Для той и другой формы компилятор подсчитывает символы и таким образом получает размер памяти. Как и для других массивов, имя m1 является указателем на первый элемент массива: m1==&m1[0] *m1=='T', и *(m1+1)==m1[1]=='o’ * - оператор разыменования & - оператор взятия адреса

Без символа ‘\0’ мы имеем массив символов, а не строку. Для той и другой формы компилятор подсчитывает символы и таким образом получает размер памяти.

Как и для других массивов, имя m1 является указателем на первый элемент массива:

m1==&m1[0]

*m1=='T', и

*(m1+1)==m1[1]=='o’

* - оператор разыменования

& - оператор взятия адреса

Функции ввода-вывода строк

Функции ввода-вывода строк

Чтение и запись строк Функция gets() читает строку символов, введенную с клавиатуры, и записывает ее в память по адресу, на который указывает ее аргумент char *gets(char * cmp ); Здесь cmp - это указатель на массив символов, в который записываются символы, вводимые пользователем, gets() также возвращает cmp . Функция puts () отображает на экране свой строковый аргумент, после чего курсор переходит на новую строку. Вот прототип этой функции: int puts(const char * cmp );

Чтение и запись строк

  • Функция gets() читает строку символов, введенную с клавиатуры, и записывает ее в память по адресу, на который указывает ее аргумент

char *gets(char * cmp );

Здесь cmp - это указатель на массив символов, в который записываются символы, вводимые пользователем, gets() также возвращает cmp .

  • Функция puts () отображает на экране свой строковый аргумент, после чего курсор переходит на новую строку. Вот прототип этой функции:

int puts(const char * cmp );

Пример использования Следующая программа читает строку в массив str и выводит ее длину: #include   #include   int main(void) { char str[80]; gets(str); printf(

Пример использования

  • Следующая программа читает строку в массив str и выводит ее длину:
  • #include
  • #include
  • int main(void) {
  • char str[80];
  • gets(str);
  • printf("Длина в символах равна %d", strlen(str));
  • return 0;
  • }
Функции для обработки строк Для выполнения описанных в этом подразделе функций необходимо подключить файл string.h командой #include

Функции для обработки строк

  • Для выполнения описанных в этом подразделе функций необходимо подключить файл string.h командой
  • #include
Функция strcat Прототип функции strncat char *strcat(s1,s2) Операция char *strncat(s1,s2,n) strcmp char *s1, *s2; сцепить две строки char *s1, *s2; int strcmp(s1,s2) сцепить две строки, причем из второй строки копировать не более n символов strncmp char *s1, *s2; int n; сравнить две строки в лексикографическом порядке int strncmp(s1,s2, n) strcpy strncpy char *s1, *s2; char *strcpy(s1,s2) сравнить первые n символов двух строк char *strncpy(s1,s2,n) strlen char *s1, *s2; копировать строку s2 в строку s1 int n; char *s1, *s2; int strlen(s) strchr копировать не более n символов строки s2 char *strchr(s,n) char *s; strrchr определить длину строки (число символов без завершающего нулевого символа) int n; char *s; найти в строке первое вхождение символа с char *strrchr(s,c) strpbrk char *strpbrk(s1,s2) int n; char *s; strspn найти в строке последнее вхождение символа с int strspn(s1,s2) char *s1, *s2; strcspn int c; найти в строке s1 любой из множества символов, входящих в строку s2 char *s1, *s2; int strcspn(s1,s2) strtok определить длину отрезка строки s1, содержащего символы из множества, входящих в строку s2 char *s1, *s2; char *strtok(s1,s2) определить длину отрезка строки s1, не содержащего символы cтроки s2 char *s1, *s2; выделить из строки s1 лексемы, разделенные любым из множества символов, входящих в строку s2

Функция

strcat

Прототип функции

strncat

char *strcat(s1,s2)

Операция

char *strncat(s1,s2,n)

strcmp

char *s1, *s2;

сцепить две строки

char *s1, *s2;

int strcmp(s1,s2)

сцепить две строки, причем из второй строки копировать не более n символов

strncmp

char *s1, *s2;

int n;

сравнить две строки в лексикографическом порядке

int strncmp(s1,s2, n)

strcpy

strncpy

char *s1, *s2;

char *strcpy(s1,s2)

сравнить первые n символов двух строк

char *strncpy(s1,s2,n)

strlen

char *s1, *s2;

копировать строку s2 в строку s1

int n;

char *s1, *s2;

int strlen(s)

strchr

копировать не более n символов строки s2

char *strchr(s,n)

char *s;

strrchr

определить длину строки (число символов без завершающего нулевого символа)

int n;

char *s;

найти в строке первое вхождение символа с

char *strrchr(s,c)

strpbrk

char *strpbrk(s1,s2)

int n;

char *s;

strspn

найти в строке последнее вхождение символа с

int strspn(s1,s2)

char *s1, *s2;

strcspn

int c;

найти в строке s1 любой из множества символов, входящих в строку s2

char *s1, *s2;

int strcspn(s1,s2)

strtok

определить длину отрезка строки s1, содержащего символы из множества, входящих в строку s2

char *s1, *s2;

char *strtok(s1,s2)

определить длину отрезка строки s1, не содержащего символы cтроки s2

char *s1, *s2;

выделить из строки s1 лексемы, разделенные любым из множества символов, входящих в строку s2

Пример 1: /* сцепить две строки */ #include  #include  #include  int main(void) {  char destination[25];  char *blank =

Пример 1:

  • /* сцепить две строки */
  • #include
  • #include
  • #include
  • int main(void)
  • {
  • char destination[25];
  • char *blank = " ", *c = "C++", *turbo = "Turbo";
  • strcpy(destination, turbo);
  • strcat(destination, blank);
  • strcat(destination, c);
  • printf("%s\n", destination);
  • getch();
  • return 0;
  • }
Пример 2: /* cцепить две строки, причем из второй строки копировать не более n символов*/ #include  #include  #include  int main(void) { char destination[25];  char *source =

Пример 2:

  • /* cцепить две строки, причем из второй строки копировать не более n символов*/
  • #include
  • #include
  • #include
  • int main(void)
  • {
  • char destination[25];
  • char *source = "structured ";
  • strcpy(destination, "programming");
  • strncat(destination, source, 11);
  • printf("%s\n", destination);
  • getch();
  • return 0;
  • }
-80%
Курсы дополнительного образования

Создание динамических веб-страниц с помощью PHP и MySQL

Продолжительность 72 часа
Документ: Cвидетельство о прохождении курса
4000 руб.
800 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Массивы и символьные строки С++ (328.64 KB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт