Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






ЧТО НЕОБХОДИМО ЗНАТЬ

Строки

Строка — последовательность (массив) символов. Если в выражении встречается одиночный символ, он должен быть заключен в одинарные кавычки. При использовании в выражениях строка заключается в двойные кавычки. Признаком конца строки является нулевой символ \0. В C++ строки можно описать с помощью массива символов (массив элементов типа char), в котором следует предусмотреть место для хранения признака конца строки.

Примеры описания строк:

char s[7] = "Привет"; // строка

char s[3][25] = {"Пример", "использования", "строк"}; //массив строк

 

Некоторые функции работы со строками (библиотека cstring или string.h):

Функция cin вводит строки до встретившегося пробела. Более универсальной функцией является getline.

cin.getline(char *s, int n); -предназначена для ввода с клавиатуры строки s с пробелами, в строке не должно быть более n символов. Следовательно, для корректного ввода строк, содержащих пробел, необходимо в программе заменить cin>>s на cin.getline(s, 80).

 

Прототип функции Описание функции
size_t strlen(const char *s) вычисляет длину строки s в байтах.
char *strcat(char *dest, const char *scr) присоединяет строку src в конец строки dest, полученная срока возвращается в качестве результата
char *strcpy(char *dest, const char *scr) копирует строку scr в место памяти, на которое указывает dest
char strncat(char *dest, const char *dest, size_t maxlen) присоединяет строку maxlen символов строки src в конец строки dest
char *strncpy(char *dest, const char *scr, size_t maxlen) копирует maxlen символов строки src в место памяти, на которое указывает dest
int ctrcmp(const char *s1, const char *s2) сравнивает две строки в лексикографическом порядке с учетом различия прописных и строчных букв, функция возвращает 0, если строки совпадают, возвращает — 1, если s1 располагается в упорядоченном по алфавиту порядке раньше, чем s2, и 1 — в противоположном случае.
int strncmp(const char *s1, const char *s2, size_t maxlen) сравнивает maxlen символов двух строк в лексикографическом порядке, функция возвращает 0, если строки совпадают, возвращает — 1, если s1 располагается в упорядоченном по алфавиту порядке раньше, чем s2, и 1 — в противоположном случае.
double atof(const char *s) преобразует строку в вещественное число, в случае неудачного преобразования возвращается число 0
long atol(const char *s) преобразует строку в длинное целое число, в случае неудачного преобразования возвращается 0
char *strchr(const char *s, int c); возвращает указатель на первое вхождение символа c в строку, на которую указывает s. Если символ c не найден, возвращается NULL
char *strupr(char *s) преобразует символы строки, на которую указывает s, в символы верхнего регистра, после чего возвращает ее

 




ЧТО НЕОБХОДИМО ЗНАТЬ

1. Символьная строка представляет собой массив символов, завершающийся 0 (символом NULL).

2. Вы создаете символьную строку, объявляя массив типа char.

3. Ваша программа ответственна за размещение символа NULL за последним символом строки.

4. Если программа использует строковые константы, заключенные в двойные кавычки, компилятор C++ автоматически добавляет символ NULL.

5. C++ позволяет вам инициализировать строки при объявлении, указывая требуемые символы внутри двойных кавычек.

6. Большинство компиляторов C++ в своих библиотеках этапа выполнения обеспечивают широкий набор функций для манипулирования строками.

 


Задачи

1. Дано слово. Верно ли, что оно начинается и заканчивается на одну и ту же букву?

2. Дано слово из четного числа букв. Поменять местами его половины. Задачу решить двумя способами: без использования цикла и с использованием цикла

3. Дано слово. Переставить первые три и последние три буквы, сохранив порядок их следования. Задачу решить двумя способами: без использования цикла и с использованием цикла

4. Дано предложение. В нем слова разделены одним пробелом (начальные и конечные пробелы отсутствуют). Определить количество слов в предложении



5. Дано слово. Если его длина нечетная, то удалить среднюю букву, в противном случае – две средних.

6. Дано слово, заканчивающееся символом « ». Вставить заданную букву после первой буквы и

7. Дано слово, заканчивающееся символом « ». Вставить заданную букву после перед последней буквой и

8. Дано слово. Перенести первые k его букв в конец. Задачу решить двумя способами: без использования цикла и с использованием цикла

9. Дано предложение вывести все буквы м и н в нем

10. Дано предложение. Определить долю (в %) букв а в нем.

11. Дано предложение. В нем слова разделены одним или несколькими пробелами (начальные и конечные пробелы отсутствуют). Определить количество слов в предложении

12.

13. Дано предложение. Удалить из него все символы с n1-го по n2-й (n1<= n2)


Вставка элемента массива

Пусть k - это номер элемента, после которого мы должны вставить элемент х. Тогда вставка осуществляется следующим образом:

первые k элементов массива остаются без изменений;
все элементы, начиная с (k+1)-го, необходимо сдвинуть на один назад;
на место (k+1)-го элемента записываем значение х, то есть после k-го элемента массива.

Рассмотрим на конкретном примере. Пусть дан следующий одномерный массив из N (N = 10) элементов: 3, -12, 5, 14, 27, -6, 1, -34, 10, -15.

Надо вставить 100 после пятого элемента массива. Тогда получим следующий массив:

3, -12, 5, 14, 27, 100, -6, 1, -34, 10, -15.

Сдвиг элементов
i m[1] m[2] m[3] m[4] m[5] m[6] m[7] m[8] m[9] m[10] m[11]
- -12 -6 -15=> -
-12 -6 10=> -15 -15
-12 -6 34=> -15
-12 -6 1=> -15
-12 -6=> -15
-12 -6 -6 -15
на (k1+1)-ое место записываем значение x1 - m[k1+1] := 100
- -12 -6 -15

 


Удаление элемента массива

- сдвинуть все элементы, начиная с k-го, на один элемент влево;

- последнему элементу присвоить значение 0

6, 3, 4, 7, 11, 2, 8, 8, 1, 5
6, 3, 4, 7, 11, 2, 8, 1, 1, 5
6, 3, 4, 7, 11, 2, 8, 1, 5, 5
6, 3, 4, 7, 11, 2, 8, 1, 5, 0

 

<== предыдущая лекция | следующая лекция ==>
Восемь месяцев назад | Часть А. (I) Окиньте на карте взглядом середину Сибири — про­странство, лежащее у реки Енисей

mylektsii.ru - Мои Лекции - 2015-2019 год. (0.008 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал