
- •Задание 1
- •Задание 2
- •4. Варианты индивидуальных заданий Задание 1
- •5. Примеры решения задач (вариант 00)
- •5.1. Задание 1
- •5.1.1. Разработка алгоритма решения.
- •5.1.2. Определение переменных программы
- •5.1.3. Разработка текста программы
- •5.1.4. Отладка программы
- •5.1.5. Результаты работы программы
- •5.2. Задание 2
- •5.2.1. Разработка спецификаций функции.
- •5.2.2. Разработка алгоритма решения.
- •5.2.3. Функция substr(). Текст программы.
- •5.2.4. Функция main()
- •5.2.4.1. Переменные функции main()
- •5.2.4.2. Текст функции main()
- •5.4.3. Общие объявления
- •5.2.5. Отладка программы
- •5.2.6. Результаты работы программы
Лабораторная работа №5
Указатели, массивы, символьные строки и функции
1. Цель работы
Целью лабораторной работы является получение практических навыков в работе с указателями и с адресной арифметикой в языке C.
2. Теми для предварительной проработки
Указатели. Типизированные указатели.
Указатели и массивы.
Адресная арифметика.
Динамическое выделение памяти.
Функции пользователя
3. Задания для выполнения
Задание 1
Объявить массив целых чисел и заполнить его случайными значениями. Диапазон значений его элементов заданы в Вашем варианте индивидуального задания. В индивидуальных заданиях указано также, какую обработку массива следует произвести.
Дополнительные условия:
размер массива определяется в начале выполнения программы как случайное число в диапазоне 50 - 200;
в тексте программы запрещается применять операцию индексации.
Задание 2
Разработать функцию, которая выполняет ту обработку символьной строки, которая определена в Вашем индивидуальном задании. При реализации функции запрещается пользоваться функциями библиотек языка C.
Примечания:
В большинстве заданий необходимо предусмотреть работу функции при некорректном задании ее параметров.
В тех заданиях, где применен термин "слово", под ним понимается любая последовательность символов, ограниченная любым числом пробелов и/или началом/концом строки.
4. Варианты индивидуальных заданий Задание 1
№ варианта |
Диапазон значений |
Что нужно сделать |
1 |
-100 - 100 |
Заменить все элементы с отрицательным значением на значение минимального не равного 0 положительного элемента |
2 |
-50 - 50 |
Подсчитать количество пар соседних элементов с одинаковыми значениями |
3 |
0 - 100 |
Подсчитать количество участков, которые образуют непрерывные последовательности чисел с неуменьшающимися значениями |
4 |
-50 - 50 |
Подсчитать количество пар соседних элементов, которые имеют противоположные знаки |
5 |
-100 - 100 |
Вывести начальные индексы всех непрерывных последовательностей неотрицательных чисел, длина которых больше 5 |
6 |
-100 - 100 |
Найти ту непрерывную последовательность положительных чисел, сумма элементов в которой максимальная |
7 |
-100 - 100 |
Разместить все элементы с положительными значениями в левой части массива, элементы с отрицательными значениями - в правой, а нули - между ними |
8 |
-100 - 100 |
Заменить все элементы с отрицательными значениями средним арифметическим значением всех положительных элементов |
9 |
0 - 100 |
Найти непрерывный участок из 10 элементов, сумма которых максимальна |
10 |
0 - 100 |
Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение |
00 |
-50 - 50 |
Во всех последовательностях отрицательных чисел ограничить значения тех элементов, абсолютное значение которых превышает абсолютное среднее для этой последовательности |
Задание 2
№ |
Вариант |
0 |
Функция - Reverse(s). Назначение - изменение порядка символов в строке s на противоположный. |
1 |
Функция – Copies(s,s1,n). Назначение - копирование строки s в строку s1 n раз |
2 |
Функция - Words(s). Назначение - подсчет слов в строке s |
3 |
Функция – Concat(s1,s2). Назначение - конкатенация строк s1 и s2 (аналогичная библиотечная функция C - strcat) |
4 |
Функция - Parse(s,t). Назначение - разделение строки s на две части: до первого вхождения символа t и после него |
5 |
Функция - Center(s1,s2,l). Назначение - центрирование - размещение строки s1 в середине строки s2 длиной l |
6 |
Функция - Delete(s,n,l). Назначение - удаление из строки s подстроки, начиная с позиции n, длиной l (аналогичная библиотечная Функция есть в Pascal). |
7 |
Функция - Left(s,l). Назначение - выравнивание строки s по левому краю до длины l. |
8 |
Функция - Right(s,l) Назначение - выравнивание строки s по правому краю до длины l. |
9 |
Функция - Insert(s,s1,n). Назначение - вставка в строку s подстроки s1, начиная с позиции n (аналогичная библиотечная функция есть в Pascal). |
00 |
Функция вырезает из заданной строки подстроку заданной длины, начиная с заданной позиции |