Главная » Просмотр файлов » Основы программирования

Основы программирования (947332), страница 23

Файл №947332 Основы программирования (Иванова Г.С. Основы программирования) 23 страницаОсновы программирования (947332) страница 232013-09-15СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 23)

Структурные типы данныхПример 4.22. Разработать программу, которая для строки символов, вве­денной с клавиатуры и состоящей из нескольких слов, разделенных пробела­ми, определяет множество гласных, которые:• встречаются в каждом слове строки;• встречаются только в одном слове строки;• встречаются хотя бы в одном слове строки;• встречаются более чем в одном слове строки.Для решения задачи определим тип «множество символов ASCII».

Мно­жество гласных букв русского языка зададим с помощью типизированнойконстанты множественного типа. Определим переменные множественноготипа для хранения результатов и промежуточных значений:resl - множество гласных, входящих в каждое слово,res2 - множество гласных, входящих не более чем в одно слово,res3 - множество гласных предложения,res4 - множество гласных, входящих более чем в одно слово,mnsl - множество гласных, встретившихся в текущем слове.В программе введем строку и. будем последовательно выделять из нееслова. Для каждого слова построим множество встретившихся гласных буквmnsl.Если в строке содержится одно слово, тоresl = res2 = res3 = mnsl,a множество res4 пусто.Если в строке более одного слова, то каждое новое слово изменяет ре­зультирующие множества следующим образом:1) множество гласных, входящих в каждое слово, будет равно пересече­нию уже найденного множества гласных, входящих в каждое слово, и мно­жества гласных слова:resl п mnsl;2) множество гласных, входящих более чем в одно слово, res4 увеличит­ся (объединение) на повторяющиеся буквы нового слова:res4 U (res3 n mnsl);3) множество гласных в предложении res3 увеличится (объединение) намножество гласных слова:res3 U mnsl .Множество гласных, входящих только в одно слово, res2 будем опреде­лять после обработки всех слов как разность множества гласных букв пред­ложения и множества гласных, входящих более чем в одно слово предложе­ния:res3 \ res4.133Часть I.

Основы алгоритмизации и процедурное программированиеProgram ex;Type setchar=set of char;Const G: setchar - ['а\'я\у\'ю\'э\'е'у'о\'ё\^и\'ы^];{типизирован­ная константа «множество гласных букв»}Var resl, {множество гласных, входящих в каждое слово}res2, {множество гласных, входящих только в одно слово}res3, {множество гласных в предложении}res4, {множество гласных, входящих более чем в одно слово}mnsUsetchar; {множество гласных текущего слова}st,slovo: string;ch: char;ik:integer;first: boolean;BeginWriteLn('Введите исходную строку:');ReadLn(st); {читаем исходную строку}st:=st'^ * V {добавляем в конец пробел для простоты обработки}first:"^true; {признак «первое слово»}while st<> " do {цикл выделения и обработки слов}begink:=pos(* \st);slovo:=Copy(stJ,k'l);{выделяем слово}Delete(stJ,k);{удаляем слово из строки}{определяем множество гласных, входящих в данное слово}mnsl:=fj;{исходное состояние «пустое множество»}for i:=l to к'1 doifslovofij in G then{если гласная буква, то}mnsl:=mnsl+fslavefiJJ; {добавляем к множеству}{формируем множества результатов}if first then {если первое слово, то}beginresl:=mnsl; {входят в каждое слово}res2:=mnsl; {входят не более чем в одно слово}res3:-mnsl; {встретившиеся гласные}res4:-[];{входят более чем в одно слово}first:=false;{выключаем признак «первое слово»}endelse{если не первое слово предложения, то}beginresl:=resl*mnsl;{входят в каждое слово}res4:='res4+res3*mnsl; {входят более чем в одно слово}res3:=res3-^mnsl;{встретившиеся гласные}endend;res2:=res3'res4; {входящие в одно слово}1344.

Структурные типы данных{выводим результаты анализа предложения}WnteLn(*DiacHbie, которые входят в каэюдое слово: *);for ch:=#0 to #255 do ifch in resl then Write(ch:2);WriteLn;WriteLn('Гласные, входящие только в одно слово:');for ch:=#0 to #255 do ifch in resl then Write(ch:2):WriteLn;WriteLn(Tлacныe, входящие хотя бы в одно слово:');for ch:=#0 to #255 do ifch in res3 then Write(ch:2):WriteLn;WriteLn('Гласные, входящие более чем в одно слово: ');for ch:=#0 to #255 do ifch in res4 then Write(ch:2);WriteLn;EndЗадания для самопроверкиЗадание 1. Дан текст, содержащий несколько слов, разделенных пробелом, вконце точка. Разработайте программу, которая, используя множественный тип, опре­деляет количество слов текста, содержащих специальные символы «@, #, $, ^, &, _,*, %, ~».

Вывести исходную последовательность, количество искомых слов, а такжеих номера в тексте.Задание 2. Дан текст, содержащий несколько слов, разделенных пробелом, вконце точка. Разработайте профамму, которая, используя множественный тип, уда­ляет из последовательности все слова, включающие хотя бы одну цифру. Вывестиисходный и преобразованный текст. Если слов с цифрами не окажется, вывести со­ответствующее сообщение.Задание 3. Дана строка, состоящая из последовательности целых чисел в сим­вольном изображении. Числа разделены пробелами (например: «345 6785 1235 54657»).

Разработайте программу, которая формирует множество цифр, присутству­ющих в записи всех чисел последовательности. Вывести исходную последователь­ность и сформированное множество. (Для приведенной последовательности множе­ство.состоит из одного элемента 5.)Задание 4. Дана строка, содержащая последовательность слов, разделенныхпробелами. В словах содержатся буквы латинского и русского алфавита. Разработай­те программу, которая формирует и выводит в алфавитном порядке два множества:множество латинских и множество русских строчных букв (кроме ё), встретивших­ся в исходной строке.Задание 5.

Дана строка, содержащая последовательность слов из латинскихстрочных букв, разделенных пробелами. Разработайте программу, которая, исполь­зуя множество, вычеркивает из каждого слова строки буквы i, j , к, I, m, п. Вывестиисходную и преобразованную строки.135Часть 1. Основы алгоритмизации и процедурное программирование4.8. ЗаписиЗапись - это структура данных, состоящая из фиксированного числаршнотипных компонент, называемых полями записи.

Записи используются дляпредставления разнородной, но логически связанной информации. Каждоеполе записи имеет имя, которое дается ему при объявлении записи.В Borland Pascal определены записи двух типов: записи с фиксирован­ными полями и вариантные записи (рис. 4.33).Записи с фиксированными полями. Синтаксическая диаграмма запи­си с фиксированными полями представлена на рис.

4.34.Как любой тип данных языка, записи можно определить двумяспособами:• при объявлении переменных, например:Var ZapLZapl: record {две записи, состоящие из 5 полей}F,S:real; {два поля вещественного типа}А, В .'integer; {два поля целого типа}C:char;{поле символьного типа}end;Zap3: record {запись, состоящая из 3 полей}S: string /80/; {символьная строка длиной 80 байт}А: array [1..20] of real; {одномерный массив на 20вещественных чисел}Flag:: boolean; {поле логического типа}end;...• предварительно объявив тип записи, например:А record j I А Фиксированнаячастьto,endВариантнаячастьРис.

4.33. Синтаксическая диаграмма <Объявление типа записи>J Идентификаторполяо-Тип-о- "0--Рис. 4.34. Синтаксическая диаграмма<Фиксированная часть записи>1364. Структурные типы данныхТуре Ztl = record{тип «запись, состоящая из 5 полей»}F,S:real;{два поля вещественного типа}AyB:integer;{два поля целого типа}C'char;{поле символьного типа}end;Zt2 = record{тип «запись, состоящая из 3 полей»}S: string [80]; {символьная строка длиной 80 байт }А: array [1..20] о/ге^^/;{одномерный массив на20 вещественных чисел}Flag: boolean; {поле логического типа}end;Var ZapU Zap2:Ztl;{две переменные типа Ztl}Zap3:Zt2; ...{переменная типа Zt2 }В качестве полей записи можно использовать другие записи, определен­ные как ранее, так и внутри записи, например:Туре Human=record{запись о сотруднике}Fio: record{поле типа «запись из 3 полей»}Fam,{фамилия}Name,{имя}Otch: string;{и отчество сотрудника»}end; {Fio}BirthDay: record{поле типа «запись из 3 полей»}Day:!.,31;{день}Month: 1..12;{месяц}Year: word;{год рождения}end; {Birthday}end; ...{Humein}илиType Data = recordDay:L.31;Month: L.12;Year: word;end;Famio = recordFam, Name, Otch: string;end;Human = record {тип «запись о сотруднике»}Fio: Famio;{поле типа Famio }BirthDay: Data {поле типа Data }end;...137Часть 1.

Основы алгоритмизации и процедурное программированиеИдентификаторполяИдентификаторзаписиРис. 4.35. Синтаксическая диаграмма<Доступ к полям записи >Можно объявить как отдельные переменные программы, так и массивызаписей, например:Var Sotr: Human;Otdel: array [1..20J of Human;Инициализация записей. Присвоить начальное значение конкретнойзаписи можно, используя типизированные константы. Начальное значениеполей записи при этом указывается в скобках через точку с запятой, причемдля каждого поля указывается имя и значение через двоеточие, например:ConstBirthDay: Data = (Year: 1973; Month:6; Day:30); ...Операции над записями.

Характеристики

Тип файла
PDF-файл
Размер
13,06 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6353
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее