Лабораторная работаПрограммированиеГод: 2025ПГУТИ: Поволжский государственный университет телекоммуникаций и информатики
👁 12💼 0

Готовая лабораторная работа: указатели и строки в C++

Загружена: 28.04.2026 06:22

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

Содержание

📘 ЗАДАНИЯ
🔹 Часть 1. Строки
Напишите функцию myStrlen – аналог библиотечной функции strlen.
Заготовка:
int myStrlen(char* a);
Напишите функцию myStrcpy – аналог библиотечной функции strcpy.
Заготовка:
void myStrcpy(char* a, char* b);
Напишите функцию myStrcat – аналог библиотечной функции strcat.
Заготовка:
void myStrcat(char* a, char* b);
Напишите функцию myStrcmp – аналог библиотечной функции strcmp.
Заготовка:
int myStrcmp(char* a, char* b);
Напишите функцию для удаления всех пустых пробелов после окончания строки.
Заготовка:
void trimRight(char* a);
Напишите функцию для удаления всех пустых пробелов перед началом строки.
Заготовка:
void trimLeft(char* a);
Напишите функцию для добавления дополнительных пробелов после окончания строки, чтобы длина строки стала равна n.
Если строка уже длины n или больше, изменять её не нужно.
Заготовка:
void padRight(char* a, int n);
Напишите функцию для добавления дополнительных пробелов перед началом строки, чтобы длина строки стала равна n.
Если строка уже длины n или больше, изменять её не нужно.
Заготовка:
void padLeft(char* a, int n);
Напишите функцию выравнивания строки по центру, добавляя слева и справа необходимое количество пробелов.
Если строка уже длины n или больше, изменять её не нужно.
Если количество пробелов нечётно — дополнительный пробел добавить справа.
Заготовка:
void center(char* a, int n);
Напишите функцию count, которая подсчитывает, сколько раз символ c встретился в строке a.
Заготовка:
int count(char* a, char c);
Напишите функцию count, которая подсчитывает, сколько раз символы из строки b встретились в строке a.
Заготовка:
int count(char* a, char* b);
Напишите функцию deleteChar, которая удаляет все вхождения символа c в строке a.
Заготовка:
void deleteChar(char* a, char c);
🔹 Часть 2. Матрицы
Реализовать генерацию случайной матрицы.
Реализовать транспонирование матрицы.
Сформировать квадратную матрицу, где:
на главной диагонали — 0
выше диагонали — 1
ниже диагонали — 2
Проверить, является ли матрица симметричной.
🔹 Часть 3. Задачи «Соревнования»
Определить спортсмена с максимальной суммой баллов.
Найти лучший результат (максимальный элемент матрицы) и его позицию.
Определить победителя по правилу:
сначала по лучшему результату
при равенстве — по сумме баллов
Определить количество победителей.
Вывести номера всех победителей.
🔹 Часть 4. Дополнительные задачи
Построить спиральную матрицу.
Выполнить сортировку элементов матрицы.
Отсортировать столбцы матрицы по среднему арифметическому.
Сформировать матрицу, содержащую 25% нулей, и подсчитать их количество.
Реализовать эмуляцию двумерной матрицы с помощью одномерного массива:
вывод матрицы
суммы по строкам
суммы по столбцам

Подробное описание

📘 О чем эта работа

В работе собраны практические задания по C++ на тему указателей, массивов, строк и двумерных структур. Основной акцент сделан на передаче адресов в функции, обходе массивов через указатели и обработке данных без лишних копирований.

Отдельно показаны приёмы работы с символьными строками на массиве char, а также операции с матрицами: транспонирование, сортировка, заполнение по спирали и поиск экстремумов.

📚 Что внутри

В комплекте представлены готовые функции и демонстрационный main(), где проверяется их работа на конкретных примерах:

  • обмен значений через swap(int *x, int *y) и проверка указателя correct(int **x);
  • вывод массива через границы start/end, сумма диапазона sumRange и среднее арифметическое getAverage;
  • изменение элемента массива по индексу через указатель, поиск максимума и вывод массива в обратном порядке с адресами;
  • работа с массивом указателей, перемешивание элементов shuffleArr и ограничение значений clampArr;
  • генерация случайного массива внутри функции и выделение локальных максимумов в отдельный статический массив;
  • аналогии строковых функций strlen, strcpy, strcat, strcmp, а также trimLeft/trimRight, padLeft/padRight, center и deleteChar;
  • матричные задачи: случайная матрица, транспонирование, симметрия, соревнования по строкам и столбцам, спиральное заполнение, сортировка и подсчёт нулей.

📊 Для кого подходит

Материал подойдёт студентам 1–2 курса направлений ИТ, информатики, прикладного программирования и всем, кто изучает указатели, массивы и базовую обработку строк на C++.

✨ Особенности

В работе не только сформулированы задания, но и показана их реализация на практике: от простой функции swap до более сложных решений с массивами указателей, статическими буферами и матричными преобразованиями. Это удобно для подготовки к лабораторной, зачёту или самостоятельной доработке под свой вариант.

❓ Частые вопросы

Подойдет ли для моего ВУЗа?
Да, структура и код легко адаптируются под требования большинства кафедр программирования.

Можно ли изменить набор задач?
Да, можно убрать лишние блоки или оставить только нужные функции по указателям, строкам или матрицам.