- •Методические указания
- •090303 «Информационная безопасность автоматизированных систем» очной формы обучения
- •Указания по технике безопасности при выполнении лабораторных работ
- •2 Курс Лабораторная работа № 1 Реализация строкового калькулятора
- •Теоретическая справка
- •Лабораторная работа № 2
- •Теоретическая справка
- •Лабораторная работа № 3 Анализ строки
- •Лабораторная работа № 4 Преобразование форматов представления данных
- •Теоретическая справка
- •Лабораторная работа № 5
- •Теоретическая справка
- •Лабораторная работа № 6 Наследование и полиморфизм
- •Теоретическая справка
- •Лабораторная работа № 7 Статические данные и функции классов
- •Теоретическая справка
- •Лабораторная работа № 8 Перегрузка операций
- •Теоретическая справка
- •3 Курс Лабораторная работа № 1 Реализация программы с использованием контейнерного класса stack stl
- •Теоретическая справка
- •Лабораторная работа № 2 Ассоциативные контейнеры stl
- •Теоретическая справка
- •Лабораторная работа № 3 Наследование и полиморфизм в языке c#
- •Лабораторная работа № 4 Коллекции в языке c#
- •Теоретическая справка
- •Лабораторная работа № 5 Перегрузка операций в языке c#
- •Теоретическая справка
- •Лабораторная работа № 6 Интерфейсы и их реализация в c#
- •Теоретическая справка
- •Лабораторная работа № 7 Делегаты и события в языке c#
- •Теоретическая справка
- •Лабораторная работа № 8 Использование шаблонов в языке c# 2.0
- •Теоретическая справка
- •Библиографический список
- •Содержание
- •2 Курс 2
- •3 Курс 15
- •Методические указания
- •090303 «Информационная безопасность автоматизированных систем» очной формы обучения
- •394026 Воронеж, Московский просп., 14
Лабораторная работа № 3 Анализ строки
Цель работы: развить навыки работы с массивами символов и динамической памятью в C++
Задание: Реализовать программу, которая по введенному пользователем предложению из нескольких слов, разделенных пробелами, выводит слова, входящие в предложение, отсортированные по алфавиту и без повторяющихся слов. Также программа должна отображать количество вхождений в строку каждого повторяющегося слова.
Пример:
Вводимое выражение: один два три один два один
Результат: два, один, три;
два – 2, один – 3.
Инструкции к выполнению:
Для хранения информации о повторяющихся словах использовать динамическую память.
Лабораторная работа № 4 Преобразование форматов представления данных
Цель работы: закрепить знания базовых конструкций языка C++, а также улучшить навыки работы с функциями C++
Задание: написать две функции, одна из которых выполняет преобразование из целого типа данных в строковое представление числа (массив символов), а вторая выполняет обратное преобразование.
Инструкции к выполнению:
При реализации учитывать возможность преобразования отрицательных чисел.
Вывод результатов преобразований производить в функции main.
Предусмотреть преобразование форматов представления как для десятичной, так и для шестнадцатеричной записи.
Теоретическая справка
В С++ существует 2 типа строк.
Первый из них - это массив переменных типа char.
Переменная типа char хранит в себе 1 символ. Размер такой строки равняется размеру массива - 1, т.к. последний элемент содержит NULL (пустая переменная без значения), который обозначает символ конца строки.
Например:
char name[50];
cin>>name;
cout<<"Hello "<<name<<endl;
Второй из вариантов, более удобный - это специальный класс string.
Для его работы необходимо в начале программы подключить заголовочный файл string:
#include <string>
В отличии от типа char, string является классом.
Теперь чтобы создать строку достаточно написать:
string s;
Для записи в строку можно использовать оператор =
s="Hello";
Пример работы с классом string:
string name;
cout<<"Enter your name"<<endl;
cin>>name;
cout<<"Hi "<<s<<"!"<<endl;
Но кроме этого существует множество функций для работы со строками.
s.append(str) - добавляет в конец строки строку str. Можно писать как s.append(переменная), так и s.append("строка");
s.assign(str) - присваивает строке s значение строки str. Аналогично записи s=str;
int i=s.begin() - записывает в i индекс первого элемента строки
int i=s.end() - аналогично, но последнего
s.clear() - как следует из названия, отчищает строку. Т.е. удаляет все элементы в ней
s.compare(str) -сравнивает строку s со строкой str и возвращает 0 в случае совпадение (на самом деле сравнивает коды символов и возвращает из разность)
s.copy(куда, сколько, начиная с какого) - копирует из строки s в куда (там может быть как строка типа стринг, так и строка типа char).
bool b=s.empty() - если строка пуста, возвращает true, иначе false
s.erase(откуда, сколько) удаляет n элементов с заданной позиции
s.find(str,позиция) - ищет строку str начиная с заданной позиции
s.insert(позиция,str, начиная, beg, count) - вставляет в строку s начиная с заданной позиции часть строки str начиная с позиции beg и вставляя count символов
int len=s.length() - записывает в len длинну строки
s.push_back(symbol) - добавляет в конец строки символ
s.replace(index, n,str) - берет n первых символов из str и заменяет символы строки s на них, начиная с позиции index
str=s.substr(n,m) - возвращает m символов начиная с позиции n
s.size() - возвращает число элементов в строке.