Вариант 17
Сформировать прямоугольную матрицу, вводя ее размеры (число строк и число столбцов) с клавиатуры. Определить количество особых элементов матрицы, считая элемент особым, если он больше суммы остальных элементов его столбца.
Вариант 18
Сформировать произвольную действительную квадратную матри-цу, вводя с клавиатуры ее размер N. Найти наибольший по модулю элемент. Получить квадратную матрицу размера N – 1, отбрасывая в исходной матрице строку и столбец, на пересечении которых расположен элемент с найденным значением. Создать перегруженные функции удаления строки и столбца в матрице с произвольным типом элементов.
Вариант 19
Сформировать и заполнить случайными числами прямоугольную матрицу размером n×m (n и m ввести с клавиатуры). Вычислить суммы элементов в столбцах до k-й строки. Полученные суммы вставить как строку перед k-й строкой. Создать перегруженную функцию вставки строки в матрицу с произвольным типом эле-ментов.
Вариант 20
Добавить в двумерный динамический массив строку из одних нулей после каждой строки, сумма элементов которой больше заданного числа S.
1. Перечислите основные элементы STL.
2. В чем преимущества контейнераvectorперед обычными дина-мическими массивами?
3. Что такое итератор?
4. Как объявить и инициализировать вектор?
5.Что возвращает функция
size
()
и функция
capacity
()
?
6. В чем разница в операциях v[index] и v.at(index)?
7. Как правильно передать одномерный вектор в функцию? Напи-шите прототип такой функции.
8. Как правильно передать двумерный вектор в функцию? Напи-шите прототип такой функции.
9. Как определить, сколько раз произошло перераспределение па-мяти при заполнении массива?
10. Как найти сумму и произведение элементов вектора, не исполь-зуя операторы цикла?
|
Знакомство с функциями класса string для создания строк, их модификации и поиска. Получение на их основе навыков обработки символьной информации текстов.
При работе со строками часто возникают недорозумения. Как пра-вило, это происходит из-за того, что термин «строка» может означать совершенно разные вещи – обычный символьный массив типа char* и экземпляр класса string. Обычно термином «строка»обозначают объект строкового типа стандартной библиотеки С++ (string).«Тра-диционные» же строки типа char*называют С-строками.
Строки типа stringзначительно удобнее для работы, чем С-строки. Это выражается в следующем.
1. Так как строка string – это последовательный контейнер с символами(vector<char>), то при изменении ее размеров происходит автоматическое выделение памяти, что исключает ошибки c распределением памяти, характерные для строк типа char*.
2. Класс stringсодержит почти все методы, изложенные в работе № 2, по отношению к векторам. Кроме того, в этом классе можно использовать множество других полезных методов, например substr, findи др.
3. Класс string позволяет работать со строками как с обычными типами, не создающими проблем для пользователей. Это означает, что строки можно копировать, присваивать и сравнивать как базовые типы (int, floatи т. д.), не беспокоясь о возможной нехватке памяти или раз-мере внутреннего блока, предназначенного для хранения символов.
Строки типа string, в отличие от строк char*, не требуют завер-шающего нулевого символа. К отдельным сиволом строки можно по-лучит доступ операцией [ind] (см. табл. 4 в работе 2 и замечание к ней).
Приведенный ниже пример (пример 1) демонстрирует способы инициализации строк.
Пример 1
stringstr1;// Пустая строка
stringstr2(«Люблю грозу в начале мая…»);// Инициализация через
// конструктор
stringstr3 = «Разделяй и властвуй» ;
stringstr4(str3);// Строка str4инициализируется строкой str3
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.