Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_Sys_05_00.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
162.3 Кб
Скачать

Лабораторная работа №5

Указатели, массивы, символьные строки и функции

1. Цель работы

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

2. Теми для предварительной проработки

  • Указатели. Типизированные указатели.

  • Указатели и массивы.

  • Адресная арифметика.

  • Динамическое выделение памяти.

  • Функции пользователя

3. Задания для выполнения

Задание 1

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

Дополнительные условия:

  • размер массива определяется в начале выполнения программы как случайное число в диапазоне 50 - 200;

  • в тексте программы запрещается применять операцию индексации.

Задание 2

Разработать функцию, которая выполняет ту обработку символьной строки, которая определена в Вашем индивидуальном задании. При реализации функции запрещается пользоваться функциями библиотек языка C.

Примечания:

  1. В большинстве заданий необходимо предусмотреть работу функции при некорректном задании ее параметров.

В тех заданиях, где применен термин "слово", под ним понимается любая последовательность символов, ограниченная любым числом пробелов и/или началом/концом строки.

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

Функция вырезает из заданной строки подстроку заданной длины, начиная с заданной позиции

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]