Задание к лабораторной работе.
1. Изучить строковый тип, организацию работы со строками в Турбо-Паскале. 2. Разработать алгоритм и составить программу для решения задачи соответствующего варианта. 3. Подобрать наборы тестовых данных. 4. Набрать программы и отладить их работу в среде Турбо Паскаль. 5. Подобрать тестовые данные. Протестировать. 6. Оформить отчет о выполнении (см. Приложение 1) Варианты заданий 1. Дана строка, состоящая из слов, разделённых пробелами. Подсчитать среднюю длину слов этой строки и вывести все слова, длина которых отличается не более чем на два символа от средней. 2. Даны две строки, состоящие из слов. Получить строку, в которой чередуются слова первой и второй строки. Если в одной из строк слов больше, чем в другой, то оставшиеся слова этой строки дописать подряд в строку-результат. 3. Даны две строки. Пусть п1 - число слов в первой строке, а «п2 - во второй (п1< п2 ). Добавить в конец первой строки, последние п2- п1 слов второй строки. 4. Дана строка, состоящая из слов, разделённых пробелами. Определить количество слов-палиндромов. Замечание: Словом-палиндромом называется слово, состоящее из п букв, каждый символ i от 1 до n/2, которого является соответственно символом п-i+1. Например, слово «ДЕД» или «КАЗАК». 5. Дана строка, состоящая из слов, разделённых пробелами. Вывести слова этой строки, которые отличны от последнего слова. 6. Преобразовать строку таким образом, чтобы цифры каждого слова были перенесены в начало слова, изменив порядок следования цифр в слове на обратный. 7. Определить, есть ли в данной строке одинаковые слова. 8. Даны две строки, состоящие из слов. Получить третью строку, состоящую из слов, которые содержатся в обеих строках.
9. Дана строка, состоящая из слов. Вывести слова, которые повторяются хотя бы один раз. 10. Преобразовать строку, изменив порядок следования слов в строке на обратный. 11. Преобразовать строку таким образом, чтобы цифры каждого слова были перенесены в конец слова, изменив порядок следования их в слове на обратный. Замечание: наличие цифр можно проверить с помощью проверки вхождения элемента во множество. Например, Symbol in ['0'.. '9']. Результат принимает истинное значение, если Symbol - цифра. 12. Дана строка, состоящая из слов. Преобразовать строку, перенося слова с повторяющимися символами в конец этой строки, оставляя только один символ в каждой последовательности подряд идущих одинаковых символов. 13. Дана строка, состоящая из слов. Преобразовать строку таким образом, чтобы слова были упорядочены по возрастанию своей длины. 14. Дана строка, состоящая из слов. Удалить из строки слова, содержащие повторяющиеся символы. 15. Преобразовать строку таким образом, чтобы цифры каждого слова были перенесены в конец слова без изменения порядка следования их в слове. 16. Преобразовать строку, записав символы каждого слова этой строки в обратном порядке. 17. Дана строка, состоящая из символов. Удалить из этой строки все цифры, записав в другую строку символы, соответствующие коды которых являются этими цифрами в таблице АSCII. 18. Дана строка, состоящая из букв и цифр. Преобразовать строку из слов таким образом, чтобы каждое i -слово состояло из количества букв, которое соответствует значению i - цифры. При этом, все числовые значения, использованные для формирования строки должны быть удалены. Если символов в строке меньше, чем сумма цифр, содержащихся в ней, и не все цифры использованы для её формирования, то неиспользованные цифры перенести в конец строки. Например: исходная строка - «Мамамыл4а4рам4у3.», полученная строка - «Мама мыла раму3».
19. Дана строка, состоящая из слов. Если слово начинается с нечётной позиции, то записать символы этого слова в обратном порядке. 20. Дана строка, состоящая из слов и содержащая одну точку в конце одного из слов. Если в конце строки точка отсутствует, то найти слово, заканчивающееся точкой и перенести его в конец строки. 21. Дана строка - предложение. Проверить, начинается ли первое слово с прописной буквы, если нет, то найти в строке такое слово и перенести его в начало. Если слова, начинающиеся с прописной буквы отсутствуют, исправить первый строчный символ на прописной. 22. Найти в данной строке среднее значение длины слов. Удалить последние символы в словах, длина которых превышает среднее значение более чем на два символа. Добавить случайным образом символы к словам, длина которых меньше среднего значения хотя бы на два символа. 23. Дана строка, состоящая из слов. Преобразовать строку таким образом, чтобы слова были упорядочены по убыванию своей длины. 24. Дана строка, состоящая из слов. Преобразовать строку таким образом, чтобы слова были упорядочены по возрастанию своей длины. 25. Преобразовать данную строку, удалив из неё три слова, наименьшей длины. 26. Дана строка, состоящая из слов. Преобразовать строку так, чтобы каждое слово было отражено зеркально. 27. Даны две строки, состоящие из слов. Получить третью строку, состоящую из слов, которые содержатся в одной строке и не содержатся в другой. 28. Дана строка. Определить, есть ли в данной строке одинаковые слова, и заменить каждое повторяющееся слово, словом «повтор», начиная со второго. 29. Дана строка, состоящая из слов, разделённая в некоторых местах запятыми. Поменять местами фрагменты строки, разделённые запятыми. 30. Составить программу, которая преобразует строку к строке указанного размера, путём добавления пробелов между словами. 31. Дана строка, состоящая из символов и цифр. Повторить символ, предшествующий цифре n - раз, где n -значение цифры. Контрольные вопросы 1. Что представляет собой переменная типа string? Как описать ее в Паскале? 2. Перечислить типовые операции над строками. 3. Какие операции применимы к символьным данным? 4. Какой объем памяти требуется для хранения переменной символьного типа? Как хранится в памяти переменная типа string?
5. Какие стандартные функции можно применить к данным символьного типа? 6. Какие стандартные функции и процедуры для работы с типом string существуют в языке Паскаль? ЛАБОРАТОРНАЯ РАБОТА №8 Цель работы: получение навыков работы с записями и множествами. Задания к лабораторной работе 1. Изучить комбинированный и множественный типы данных. 2. Разработать алгоритмы и описать в виде блок-схем и текста программы для решения каждой из двух задач соответствующего варианта. Если не указанно иначе, словом считать последовательность символов, не содержащую пустых символов (символом с кодами меньшими 33), буквами считать буквы латинского алфавита. 3. Набрать программы и отладить их работу в среде Турбо Паскаль. 4. Подобрать тестовые данные. Протестировать. 5. Оформить отчет о выполнении (см. Приложение). Варианты заданий Часть 1 1. Сведения о сотрудниках предприятия записаны в массиве, который содержит следующую информацию: фамилию, имя, отчество, пол (М или Ж), возраст (от 20 до 45), отдел (от 1 до5). Вывести всю информацию и установить в каком отделе наибольший процент мужчин. 2. Дан массив записи, представляющий собой записную книжку, в которой указанны фамилии, индекс страницы, номер телефона. Если в записной книжке содержится знакомый с фамилией Иванов, то вывести информацию о нем, если нет, то вывести сообщение о том, что записи о таком человеке нет. 3. Установить предшествует ли в пределах одного года дата d1 дате d2 и, если предшествует, то на сколько дней. 4. Дан массив записей. Каждая запись содержит сведения о студенте группы: фамилию, оценки по 5 предметам. Упорядочить массив в алфавитном порядке. 5. Дан массив записи, в котором содержится информация об итогах летней сессии на первом курсе. Сведения о каждом студенте – первокурснике (всего их 50) заданы в следующем виде: <фамилия>, <номер группы>, <оценка1>,<оценка2>,<оценка3>,
6. Окружность задается радиусом и координатами центра. Определить, найдется ли среди данных десяти окружностей окружность, лежащая внутри данной окружности. 7. Дан массив записи, содержащий сведения о жителях, обслуживаемых данной поликлиникой. Сведения содержат следующую информацию: фамилию, имя, отчество жителя, адрес, место работы, прохождение последней флюорографии. Сформируйте массив с данными о жильцах, у которых на данный момент просрочена дата флюорографии (дата просрочена, если с ее момента прошло больше года). 8. Дан массив записи, представляющий собой календарь (число, месяц, год). Описать функцию, вычисляющую количество дней в том месяце, которому соответствует дата d. 9. Пусть дан массив, содержащий даты. Каждая дата – число, месяц, год. Найти все весенние даты. 10. Анкета содержит сведения о вступительных экзаменах абитуриентов: фамилия, имя, отчество, факультет, экзаменационные оценки. Вывести название факультета и фамилии тех, кто зачислен в университет. Критерий зачисления: сдача всех вступительных экзаменов на 4 или 5. 11. Дан массив записей, представляющий библиотечный каталог (книги, журналы, газеты, год издания). Вывести всю литературу, которая была выпущена в 2000 году 12. Дан массив записи, представляющий собой календарь (число, месяц, год). Описать функцию, подсчитывающую сколько дней прошло от первого января 2005 года до даты d этого года. 13. В массиве записей хранится следующая информация о спортсменах: фамилия, вид спорта, лучший результат. Вид спорта может быть любой. Определить лучшего спортсмена в каждом виде спорта. 14. Дан массив записей. Каждая запись содержит сведения о студенте группы: фамилию, оценки по 5 предметам. Упорядочить массив по невозрастанию сумм оценок. 15. Дан массив записей. Каждая запись содержит название геометрической фигуры и ее основные характеристики (длины сторон, радиус, угол наклона и т. д.). Вычислить площадь фигур, заданных пользователем. 16. Дан массив правильных дробей, представленных записями. Найти суммы дробей, знаменатели которых равны. Использовать подпрограммы для ввода, вывода дроби и сравнения дробей. 17. Дан массив записей. Каждая запись содержит информацию о n людях: фамилию, имя, отчество, город, адрес. Вывести фамилии людей, живущих в разных городах по одинаковому адресу или сообщить, что таких людей нет. 18. Дан массив записей, представляющий собой меню ресторана. Вывести самое популярное блюдо, стоимость которого не превышает 300 рублей.
19. Дан массив записей, представляющий собой прайс-лист косметического салона. Установить какая из процедур пользуется наибольшей популярностью. 20. Дан массив дробей, представленных записями. Определить наибольшую дробь. Использовать подпрограммы для ввода, вывода дроби и сравнения двух дробей. 21. Определить время, прошедшее с момента t1 до момента t2. время представлено записью из трех полей: секунды, минуту, часы. 22. Известна дата и день недели некоторого события. Определить на какой день недели приходится начало года. 23. Багаж пассажира характеризуется количеством вещей и общим весом вещей. Пусть дан массив, содержащий информацию о багаже нескольких пассажиров. Найдите багаж, средний вес каждой вещи которого отличается не более чем на 0,3 кг от среднего веса вещей всех пассажиров и выясните имеется ли пассажир, багаж которого состоит из одной вещи. 24. Пусть дан массив, содержащий сведения об экспортируемых товарах: указывается наименование товара, страна, импортируемые товар и объем поставляемой партии в штуках. Составьте массив стран, в которые экспортируется товар (наименование водится пользователем) и общий объем его экспорта. 25. Дан массив записи, в котором содержится информация об итогах летней сессии на первом курсе. Сведения о каждом студенте – первокурснике (всего их 50) заданы в следующем виде: <фамилия>,<номер группы>, <оценка1>,<оценка2>,<оценка3>, причем первая оценка – за экзамен по мат.анализу, вторая – по программированию, третья – по истории. Написать программу, которая выводит эту информацию и название предмета, который был сдан лучше всего. 26. Пусть дан массив, содержащий сведения об игрушках: указывается название игрушки, ее стоимость в рублях и возрастные границы детей, для которых игрушка предназначена. Получите информацию о названиях игрушек, цена которых не превышает 50 рублей и которые подходят детям до 5 лет. 27. Пусть дан массив, содержащий сведения о продаваемых квартирах. Сведения могут содержать следующую информацию: общая площадь, жилая площадь, площадь кухни, панельный или кирпичный дом, общее количество этажей в доме, этаж, на котором квартира. Сформулируйте несколько критериев, по которым можно отобрать ту или иную квартиру, и выведите сведения о ней. 28. Пусть даны два массива m1 и m2. Массив m1 – это инвентарный массив, содержащий сведения о том, сколько изделий каких видов хранится на складе. Массив m2 – это вспомогательный массив, содержащий сведения о том, на сколько уменьшилось или увеличилось количество изделий по некоторым видам продукции. Обновите инвентарный массив на основе вспомогательного. 29. Пусть дан массив, содержащий сведения о книгах. Сведения о каждой книге – это фамилия автора, название и год издания. Найдите названия книг данного автора, изданных с 1998 года. 30. Багаж пассажира характеризуется количеством вещей и общим весом вещей. Пусть дан массив, содержащий информацию о багаже нескольких пассажиров. Определить, имеются ли два пассажира, багажи которых совпадают по числу вещей и отличаются по весу не более чем на 0,5 кг. Часть 2 1. Дан текст, заканчивающийся точкой. Вывести первые вхождения каждой латинской буквы. 2. Дана не пустая последовательность слов из строчных латинских букв; между соседними словами – запятая, за последним словом – точка. Напечатать в алфавитном порядке все гласные буквы, которые входят в каждое слово. 3. Дан текст, состоящий из цифр и сточных латинских букв, за которыми следует точка. Определить, каких букв – гласных (a,e,i,o,u) или согласных больше в этом тексте. 4. Дано слово w1 и строка s. Вывести все гласные буквы, которые одновременно встречаются и в строке и в заданном слове. 5. Даны две строки s1 и s2. Для слова w строки s1 вывести слово строки s2, которая содержит хотя бы одну гласную букву слово w. 6. Дано предложение. Вывести все согласные, которых нет ни в одном слове. 7. С клавиатуры вводятся натуральные числа. Признак конца ввода – 0. Сформировать множество четных цифр, входящих в запись введенных чисел только один раз. 8. Дана строка символов, признак конца строки – точка. Сформировать множество гласных букв, входящих в строку не менее двух раз. 9. Дан текст из строчных латинских букв, за которыми следует точка. Включить в множество первые вхождения букв в текст, сохраняя их исходный взаимный порядок. 10. С клавиатуры вводятся три натуральных числа, не превышающие 255. Получить множество общих делителей введенных чисел. 11. Дан текст, заканчивающийся точкой. Сформировать множество всех согласных букв, входящих в текст более трех раз. 12. Дана матрица a. Описать функцию sum(A,s1,s2), вычисляющую сумму тех элементов матрицы a, номера строк и столбцов которых принадлежат соответственно непустым множествам s1 и s2 (множества задаются пользователем). 13. С клавиатуры вводятся натуральные числа <= 255. Признак конца ввода – 0. Сформировать множество из чисел, в записи которых встречаются все цифры, имеющиеся в записи числа n, но отсутствующие в записи числа m. 14. Дан массив из n натуральных чисел. Сформировать множество цифр, которых нет в записи хотя бы одного из чисел массива. 15. Назовем два слова, у которых совпадают множества символов, эквивалентными. Вывести каждую группу эквивалентных слов данной строки. 16. Сформировать множество целых чисел из диапазона 1..255, представимых в виде n2+m2. Выведите на печать полученное множество. 17. Дана строка s. Сформировать множество символов: цифры, '+',’-’, ’*’, ’_’, входящих в строку s, а также множество вхождений этих символов. 18. Дана последовательность целых неотрицательных чисел, не превышающих 255. Сформировать множество чисел Фибоначчи содержащихся в данной последовательности, если таковых нет, то вывести соответствующее сообщение. 19. Дана квадратичная матрица. Определить множество номеров строк и столбцов, элементы которых упорядочены. 20. Сформировать множества гласных и согласных букв, отсутствующих в тексте, вводимом с клавиатуры. Признак конца ввода – точка. 21. Даны два множества x1 и x2, содержащие элементы типа Byte. Сформировать новое множество y, равное разности заданных множеств и выделить из него подмножество y1, которое содержит элементы множества y, являющиеся делителями числа 50. 22. Пусть дан текст из латинских строчных букв. Сформировать множество букв, входящие в текст по одному разу. 23. Имеется 5 кондитерских магазинов. Известно, что в каждом из этих магазинов не более 3 видов сластей в ассортименте. Какие виды сластей есть во всех имеющихся городах? Существует ли магазин, торгующий уникальными товарами? 24. Дана символьная матрица. Сформировать множество символов, находящиеся в столбцах, элементы которых симметричны относительно главной диагонали. 25. Дана строка символов, признак конца строки – точка. Сформировать множество не повторяющихся гласных символов. 26. Напечатать множество всех натуральных чисел в диапазоне от 1 до 255, которые представимы в виде x2+y2, но не представимы в виде xy=с, где с вводится клавиатуры. 27. Дан текст, состоящий из слов, пробелов и знаков препинания (запятая, точка с запятой, двоеточие), завершающийся точкой. Сформировать множество однобуквенных слов. 28. Напечатать множество всех натуральных чисел в диапазоне от 5 до 255, которые представимы в виде 5n +7m, где n и m – числа, вводимые пользователем. 29. С клавиатуры вводятся натуральные числа, не превышающие 255. Признак конца ввода – 0. Сформировать множество чисел, являющихся числами Армстронга. 30. Дан массив из n натуральных чисел. Сформировать множество цифр, которых нет в записи элементов массива. Контрольные вопросы 1. Что такое запись? В чем заключаются различия между массивами и записями? 2. Как описать в Паскале переменную типа запись? Что называется полем записи? Как обратиться к полю записи? 3. Что такое множество? Как описать в Паскале переменную множественного типа? 4. Какое множество называется пустым, какое эквивалентным? Что называется мощностью множества? 5. Перечислите основные операции над множествами. 6. Какие ограничения для множеств существуют в языке Паскаль. ЛАБОРАТОРНАЯ РАБОТА № 9 Цель работы: получение навыков роботы с текстовыми и типизированными файлами.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|