Deitel C - Задачи - Глава 12

Материал из Информационная безопасностя
Перейти к навигации Перейти к поиску

Deitel C - Задачи

Группы и результаты

8 А 8 Б 8 В 8 Г

12.06

Напишите программу, в которой будет функция, присоединяющая (без копирования) один связанный список символов ко второму. Напишите также функцию создающую связанный список символов из строкового литерала и функцию выводящую по полученному указателю символы связанного списка на экран. Программа преобразует 2 литерала в связанные списки, прикрепляет второй список к концу первого и выводит содержимое первого списка.

12.07

Напишите программу, в которой будет функция объединяющая два сортированных списка целых чисел в НОВЫЙ список, функция создающая на основе массива чисел список и функция выводящяя все числа из связанного списка. Программа преобразует 2 инициированных массива в связанные списки и с помощью функции объединяет их и выводит на экран итоговый список.

12.08

Напишите программу, которая создаёт связанный сортированный в порядке возрастания список целых чисел из 25 элементов последовательно выбирая случайное число от 1 до 99 и вставляя его не добавляя дубликатов. В конце программа выводит список, отдельной функцией (берущей в качестве параметра указатель на начало списка) рассчитывает сумму чисел, их количество и среднее значение с точностью 3 знака дробной части. Затем эти данные выводятся на экран.

12.09

Напишите программу, которая будет иметь функцию создающую из строкового литерала связанный список символов, функцию, которая на основании при получении в качестве параметра списка символов создаёт новый в обратном порядке и функцию которая выводит содержимое списка. Программа должна сформировать список из литерала, создать обратный список и вывести оба списка на экран.

12.11

Напишите программу, которая вводит строку до 30 символов и определяет является ли она палиндромом, т.е. фразой, которая не учитывая пробелов и знаков препинания (учитываются только строчные и заглавные буквы латинского алфавита и цифры) читается одинаково с обеих сторон. Для определения создайте список и стек символов фразы и сравните их элементы.

12.12

Напишите программу преобразования инфиксного выражения в постфиксное. Программа должна вводить выражение с клавиатуры и выводить результат на экран. Программа должна использовать стек символов для работы. Алгоритм работы: 1) Вставьте левую скобку в стек. 2) Добавьте правую скобку к концу обрабатываемого инфиксного выражения. 3) Пока стек не пуст читаем символы инфиксного выражения 3-1) Если символ цифра - копируем его в постфиксное выражение 3-2) Если символ левая скобка, добавляем её в стек. 3-3) Если символ оператор - вынимайте операторы из стека если там они есть пока они равного или более высокого приоритета и вставляйте их в постфиксное выражение и затем добавьте текущий символ в стек. 3-4) Если текущий символ правая скобка - вынимайте операторы из стека и вставляйте из в постфиксное выражение пока не встретите в стеке левую скобку. Затем выньте левую скобку из стека. Используйте следующие арифметические операторы: + сложение - вычитание

  • умножение

/ деление ^ возведение в степень % остаток от деления Программа должна иметь функции: для преобразования инфиксного выражения в постфиксное, определения является ли текущий символ оператором, сравнения приоритетов операторов (выдающая в результате -1, 0, 1), для обслуживания стека функции добавления (push), вынимания (pop) элементов и функцию подсматривания (peek) элемента на вершине стека, функцию определяющую не пуст ли стек и функцию для печати стека.

12.13

Напишите программу, которая оценивает постфиксное выражение из одноциферных чисел и операторов

  • + сложение
  • - вычитание
  • * умножение
  • / деление
  • ^ возведение в степень
  • % остаток от деления

Программа считывает постфиксное выражение с клавиатуры и записывает в массив символов. Затем используя стек производит оценку выражения:

1) Добавить нулевой символ '\0' в конец постфиксного выражения

2) Пока не встретился нулевой символ читаем постфиксное выражение слева направо

2-1) Если текущий символ цифра, добавляем её в стек (цифровое значение символа минус цифровое значение символа '0')

2-2) Если текущий симво оператор, вынимаем два верхних элемента из стека x и y, и производим операцию: y оператор x. Добавляем результат обратно в стек.

3) Когда встретился нулевой символ достаём из стека результат оценки постфиксного выражения и выводим на экран.

12.15

Напишите программу, которая симулирует работу очереди в супермаркете. Новые покупатели приходят в очередь со случайным интервалом от 1 до 4 минут. Обслуживание одного покупателя занимает тоже от 1 до 4 минут. Программа должна создавать очередь из покупателей и отображать её на экране. Симуляция должна идти 12 часов, т.е. 720 минут.

1) Выберите случайный интервал прибытия покупателя от 1 до 4 минут. 2) Когда покупатель пришёл выберите случайный интервал его обслуживания от 1 до 4 минут и выберите случайный интервал прибытия нового покупателя от 1 до 4 минут. 3) Для каждой минуты: Если покупатель пришёл - выведите сообщение об этом на экран. Включите покупателя в очередь. Запланируйте приход следующего покупателя. Если покупатель обслужен - выведите сообщение об этом на экран. Уберите следующего покупателя из очереди и выберите случайный интервал его обслуживания от 1 до 4 минут.

Симуляция должна работать 12 часов, т.е. 720 минут.

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

12.41

Напишите программу, которая генерирует 10 случайных целых чисел от 1 до 99 и создаёт из них бинарное сортированное дерево (дубликаты не добавляются) и выводит после каждого добавления добавленное число и все числа дерева в порядке возрастания.

12.42

Напишите программу, которая может манипулировать стеком целых чисел. В меню программы (ввод целого числа) она должна иметь возможность добавлять число в стек (push), вынимать число из стека (pop) и просматривать число на верхушке стека (peek). Сделайте ввод цифры 4 для выхода. После каждой операции перед выводом меню выводите все элементы стека через с символами => между элементами.

12.43

Напишите программу, которая может манипулировать двусвязным списком целых чисел. В меню программы (ввод целого числа) она должна иметь возможность добавлять число в список в позицию по индексу (1), который также вводится пользователем, удалять число из списка по номеру (2) (номер вводится отдельно) или первое встретившееся по значению (3) (значение вводится отдельно). Сделайте ввод цифры 4 для выхода. После каждой операции перед выводом меню выводите все элементы списка через с символами => между элементами.