Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

С++ ЕНФ / мои отчёты / Отчёт по Лабе №6

.doc
Скачиваний:
15
Добавлен:
25.05.2014
Размер:
76.29 Кб
Скачать

Министерство науки и образования Российской Федерации

Уфимский государственный авиационный технический университет

Кафедра ВВТиС

ОТЧЕТ

по лабораторной работе №6

Строки в С++

Выполнил: студент гр. ПМ-125

Марьин Д.Ф.

Проверил: ст. преподаватель каф. ВВТиС

Насибуллаева Э.Ш.

Уфа 2005

Цель работы

  • Изучить методы представления строк в С++

  • Разобраться в наборе стандартных функций работы со строками из библиотеки string.h

  • Научиться осуществлять сортировку строк по заданному параметру

Задание к лабораторной работе № 6

1. Написать программу, считывающую несколько строк текста и печатающую таблицу, показывающую сколько раз в тексте встречается каждая буква алфавита.

2. Написать программу, упорядочивающую массив строк в порядке убывания их длины

методом сортировки Шелла. Использовать указатели на строки.

Во всех программах должна быть предусмотрена защита ввода данных.

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

1.1.Строки

Строковая константа - это последовательность символов, заключенная в двойные кавычки:

Каждая строковая константа содержит на один символ больше, чем кажется; все они заканчиваются пустым символом '\0' со значением 0.

Строка имеет тип "вектор из соответствующего числа символов". Для каждой строки s strlen(s)==sizeof(s)-1, поскольку strlen() не учитывает завершающий 0. Соглашение о представлении неграфических символов с обратной косой можно использовать также и внутри строки. Это дает возможность представлять в строке двойные кавычки и escape-символ \. Самым обычным символом этого рода является, безусловно, символ новой строки '\n'.

Однако в строке может стоять обратная косая, сразу после которой идет новая строка; и то, и другое будет проигнорировано.

Новая строка, перед которой идет escape (обратная косая), не приводит к появлению в строке новой строки, это просто договоренность о записи. В строке можно иметь пустой символ, но большинство программ не будет предполагать, что есть символы после него. Например, строка "asdf\000hjkl" будет рассматриваться стандартными функциями, вроде strcpy() и strlen(), как "asdf". Вставляя численную константу в строку с помощью восьмеричной или шестнадцатиричной записи, благоразумно всегда использовать число из трех цифр. Читать запись достаточно трудно и без необходимости беспокоиться о том, является ли символ после константы цифрой или нет.

1.2.Стандартные функции работы со строками

Стандартные функции обработки строк. В языке С для обработки символьных строк существует специальный набор стандартных функций, описанных в заголовочных файлах string.h и stdlib.h. К ним относятся такие функции как:

1. Функция определения длины строки.

strlen

unsigned strlen(const char *str);

вычисляет длину строки str.

strcspn

int strcspn(const char *str1, const char *str2);

определяет длину первого сегмента строки str1, содержащего символы, не входящие во множество символов строки str2.

strspn

int strspn(const char *str1, const char *str2);

определяет длину первого сегмента строки str1, содержащего только символы из множества символов строки str2.

2. Функции получения чисел по их символьному представлению

atof

double atof(const char *str);

преобразует строку str в вещественное число типа double.

atoi

int atoi(const char *str);

преобразует строку str в целое число типа int.

atol

long atol(const char *str);

преобразует строку str в целое число типа long.

3. Функции получения символьного представления чисел

itoa

char *itoa(int value, char *str, int radix);

преобразует целое value в строку str. При изображении числа используется система счисления с основанием radix. Если основание 10 и число отрицательное - первым символов строки будет "минус".

ltoa

char *ltoa(long value, char *str, int radix);

преобразует длинное целое value в строку str. При изображении числа используется система счисления с основанием radix.

ultoa

char *ultoa(unsigned long value, char *str, int radix);

преобразует беззнаковое длинное целое value в строку str. При изображении числа используется система счисления с основанием radix.

4. Функции копирования строк

strcpy

char * strcpy (char *sDest, const char *sSource);

копирует байты строки sSource в строку sDest.

strncpy

char * strncpy (char *sDest, const char *sSource, int count);

копирует первые count байт строки sSource в строку sDest. Если count меньше или равно длине sSource заключительный символ '\0' автоматически не добавляется в sDest . В противном случае заключительный символ вставляется после count байт, среди которых строка sSource дополненная пробелами.

strdup

char * strdup (const char *str);

выделяет память и переносит в нее копию строки str.

5. Функции конкатенации строк

strcat

char * strcat (char *sDest, const char *sSource);

приписывает строку sSource к строке sDest.

6. Функции сравнения строк

strcmp

char * strcmp (const char *str1, const char *str2);

сравнивает строки str1 и str2. Результат отрицателен, если str1 < str2; равен 0, если str1 == str2, и положителен, если str1 > str2.

strncmp

char * strncmp (const char *str1, const char *str2, int count);

сравнивает первые count байт строк str1 и str2. Результат отрицателен, если str1 < str2; равен 0, если str1 == str2, и положителен, если str1> str2.

strnicmp

char * strnicmp (const char *str1, const char *str2, int count);

сравнивает первые count байт строк str1 и str2, не учитывая регистра(прописные и строчные буквы считаются одинаковыми). Результат отрицателен, если str1 < str2; равен 0, если str1 == str2, и положителен, если str1> str2.

7. Функции поиска строк

strchr

char * strchr (const char *str, int c);

ищет в строке str первое вхождение символа c. Возвращает NULL, если символ в строке отсутствует.

strrchr

char * strrchr (const char *str, int c);

ищет в строке str последнее вхождение символа c. Возвращает NULL, если символ в строке отсутствует.

strstr

char * strstr (const char *str1, const char *str2);

ищет в строке str1 подстроку str2. Возвращает указатель на тот элемент в строке str1, с которого начинается подстрока str2, или NULL, если подстрока str2 в строке str1 отсутствует.

strpbrk

char * strpbrk (const char *str1, const char *str2);

ищет в строке str1 первое вхождение любого символа из строки str2. Возвращает NULL, если такой символ в строке отсутствует.

strtok

char * strtok (char *str1, const char *str2);

ищет в строке str1 лексемы, выделенные символами из второй строки str2.

8. Функции преобразования строк

strlwr

char * strlwr (const char *str);

преобразует буквы верхнего регистра в строке в соответствующие буквы нижнего регистра.

strupr

char * strupr (const char *str);

преобразует буквы нижнего регистра в строке в соответствующие буквы верхнего регистра.

9. Функции заполнения строк

strset

char * strset (const char *str, int c);

Заполняет строку str заданным символом c.

strnset

char * strnset (const char *str, int c, int count);

Заполняет первые count байт строки str заданным символом c.

2.ПРАКТИЧЕСКАЯ ЧАСТЬ

2.1.Описание программы 6LB1.cpp

В данной программе создаётся заданный массив символов, с которым потом сравнивается введенный пользователем массив; считается количество совпадений соответствующих символов и выводится таблица, состоящая из букв алфавита и соответствующих количеств совпадений.

2.2.Описание программы 6B2.cpp

В данной программе требуется произвести сортировку строк по их длине в порядке убывания.

Для непосредственной сортировки используется метод Шелла. Суть этого метода заключается в том, что массив делится на группы с шахматным чередованием элементов. В пределах каждой группы на каждом шаге выполняется сортировка методом простых вставок, но на последнем этапе сортируется весь массив.

ЗАКЛЮЧЕНИЕ

  • В языке С++ имеется два вида строк: строки завершающиеся нулевым байтом-NBTL строки и класс string

  • При работе со строками необходимо всегда учитывать, что они завершаются нулевым элементом

  • Все функции работы со строками ,объявленные в стандартном заголовочном файле string.h,являются единственно возможными операциями со строками, т.к. операторов для работы с ними в языке С++ нет

  • Сортировку строк по длине удобнее всего проводить при использовании указателей на эти строки

Список литературы

  1. Подбельский В.В. Язык Си++. – М.: Финансы и статистика,1996.­­­­­–560 с.

  2. Дейтел Х., Дейтел П. Язык пограммирования С++: перевод с англ.

М.:ЗАО «Издательство БИНОМ»,1998,1024с.

Соседние файлы в папке мои отчёты