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

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

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

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

При этом можно было бы выделитьтри случая (рис. 4.25).Окончательно алгоритм будет включать сортировку отрезков по левойгранице и цикл накопления тени, включающий анализ вариантов добавле­ния. Программа в этом случае имеет видProgram ten;Var х: array[1. .100J..2] of real;iJ,n,k: integer;xk,SyW:real;BeginWrite('Beedume количество отрезков: *);Readln(n);WriteLnCВводите начала и концы отрезков. *);for i:==I to n do ReadLn(x[iyl],x[i,2]);{сортировка отрезков по возрастанию левой границы}yV=7; к:=1;while к<>0 dobeginк:=0;for i:=J to n-j doifx[ij]>x[i-^lj]thenbegin k:=k-^I;{меняем отрезки местами }w:=x[ij]; x[ij]:^x[i-^lj];x[i+l,l]:==w;w: =xfi, 2J; x[l 2]: =xfi+J, 2J; xfi+ 7,2J: =w;end;111Часть L Основы алгоритмизации и процедурное программированиеend;{определение тени}S:'=x[l,2]'X[lJ];(длина первого отрезка}xk:=x[]JJ;{правая граница первого отрезка}for i:=2 to п doifxfi, 1]> =xk then{случай б}begin S: =S-^xfi,2]'X[i, 1];xk:=x[i,2J;endelse ifx[i,2J>xk then {случай a}begin S: =S+xfi, 2J'Xk;xk:=xfi,2J;end;Write In ('Длина тени равна \ S:6:2);End.Задания для самопроверкиЗадание 1.

Дана матрица вещественного типа D(n,m), п, m < 20. Разработайтепрограмму, которая в заданной матрице вычеркивает все строки, содержащие болеетрех отрицательных элементов. Вывести на печать исходную матрицу и матрицу-ре­зультат или соответствующие сообщения, если таких строк не окажется или всестроки будут удовлетворять условию.Задание 2. Дана матрица A(n,m), п, m < 15. Разработайте программу, формиру­ющую одномерный массив В(п), элементами которого должно являться количествоэлементов каждой строки, превышающих среднее арифметическое значение матри­цы в целом.

Если в строке таких элементов нет, в соответствующий элемент одно­мерного массива заносится 0. Вывести исходную матрицу, значение среднего ариф­метического элементов матрицы и сформированный массив В.Задание 3. Разработайте программу, формирующую квадратную матрицуD(n,n), п < 15, элементы которой определяются по формулеD[iJ]=I sin(i+j)1I (i+j)/(2i+3j)npHi<j;npHi=j;npHi>j,где i - номер строки, a j - номер столбца элемента матрицы. В сформированной ма­трице поменять местами максимальный элемент среди элементов, лежащих нижеглавной диагонали, с минимальным элементом среди элементов матрицы, лежащихниже побочной его диагонали.

Вывести исходную матрицу, соответствующие эле­менты и их координаты, а также преобразованную матрицу.1124. Структурные типы данных4.5. СтрокиУже на простом примере обработки символьной информации, рассмот­ренном в параграфе 4.1, видно, что обработка строк с использованием одно­мерных массивов представляет собой достаточно специфическую задачу. Вто же время большинство операций, которые выполняют со строками текста,повторяются в разных программах: поиск, копирование, удаление и вставкафрагментов строки.

Поэтому для упрощения работы со строками в BorlandPascal существует специальный тип данных - строковый, который приспо­соблен для обработки символьной информации.Синтаксическая диаграмма объявления строкового типа данных пред­ставлена на рис.

4.26.Целое без знака - это максимальная длина строки, которая не должнапревышать 255 байт. Если длина не указана, то по умолчанию принимаетсямаксимальное значение - 255 символов.Объявление переменных строкового типа, так же как и массивов, можновыполнить двумя способами:• в операторе объявления переменных, например:Var Sly S2:string[40]; {символьные строки длиной 40 байт}S3:strmg:{символьная строка длиной 255 байт}• с предварительным объявлением типов, например:Туре S40 = strmg[40]; {тип - строка длиной 40 байт}ST = string; {тип - символьная строка длиной 255 байт}Var SJ,S2: S40; {символьные строки типа S40}S3:ST;{символьная строка типа ST}Внутреннее представление строки показано на рис 4.27, откуда видно,что строка представляет собой одномерный символьный массив, индексы ко­торого изменяются от О до максимального значения, указанного при объяв­лении строкового типа. Следовательно, физическая длина строки на единицупревышает максимальную.Инициализация строк.

Для инициализации строковых переменных,так же как и переменных других типов, можно использовать типизированные— « / string V j -^\J^fI без знака | v L /Рис. 4.26. Синтаксическая диаграмма<Объявление строкового типа>113Часть 1. Основы алгоритмизации и процедурное программированиеМаксимальная длина строки ^ 255А0 1 2 3 4 5 6 7 8 9 10 11 12 13 ...[silAJщ с|__^н^II1М 1 1 )VТекущаядлина строкиНезанятаячасть строкиРис.

4.27. Внутреннее представление строкиконстанты, причем строка-литерал может быть короче инициализируемойстроки, например:Const S:strmgf40]= Типизированная константа VSJ:string= '*;... {пустая строка нулевой длины}Операции над переменными строкового типа. Над переменнымистрокового типа помимо операции доступа к символам определены операцииприсваивания, конкатенации (сцепления) и отношений.Доступ к сглмволам строки. Обращение к символам строки выполняет­ся как к элементам массива символов, т.

е. с указанием имени строки и номе­ра элемента, например st[l] или s[i]. Нулевой байт содержит текущее значе­ние длины строки, но так как строка - это массив символов, длина автомати­чески интерпретируется как символ. Для получения текущей длины строки ввиде числа необходимо явное преобразование символьного типа в целый.Например, если i - переменная целого типа, а S3 - переменная строковоготипа, то получить текущую длину строки S3 можно:1) /. = byte(S3[0]); {явное преобразование с помощью автоопределения}2) i:-ord(S3[0]): {явное преобразование с помощью специальной функции}Однако лучше это сделать, используя специальную функцию Length,описанную ниже.Присваивание строк. Можно присвоить строке значение строки и значе­ние символа. При выполнении операции символы заполненной части строкии ее длина переписываются в CTpoity-результат, например:S1:- 'ABCD V {присваиваем строке значение строковой константы}52.= 'А V{присваиваем строке значение символа}5.-=57;{переписываем одну CTpoiQ^ в другую}При присваивании строке значения символа последний интерпретирует­ся как строка единичной длины.

Если строка-источник длиннее, то при при­сваивании она усекается в соответствии с длиной строки-результата.1144. Структурные типы данныхКонкатенация, Операция конкатенации позволяет сцепить строки с дру­гими строками или символами. При сцеплении длины строк суммируются, асимволы объединяются в одну последовательность. Например:*fdc'+ 'ghj V {получаем ' fdcghj'}S4+ Vvv V{к строке S4 дописывается 'vvv'}Результат этой операции можно присвоить какой-либо строке или выве­сти на экран.Отношения.

Над строками допускается выполнять операции отноше­ния: = , о , >, <, >=, <=. Сравнение строк при этом выполняется последова­тельно слева направо с учетом внутренней кодировки символов до первогонесовпадающего символа. Большей считается та строка, код несовпадающе­го символа которой по таблице ASCII больше. Если длина одной строкименьше другой, то недостающие значения до длины большей строки запол­няются символами #0. Результатом операций отношения для строк, как и длячисел, является значение false и true.Допускается сравнение символов со строками, при этом символы преоб­разуются в строки единичной длины.Так, еслиS4:='ABCD';S3:='ADFH';C:='L';то при выполнении операций отношения:S4S4S3S3= S3> S3> S4=С{получим{получим{получим{получимfalse}false}true}false}Ввод-вывод строк. Ввод-вывод переменных строкового типа осуществ­ляется одной операцией Read (ReadLn) или Write (WriteLn), например:ReadLn(S]);WriteLn(Sl):При вводе за строку принимается последовательность символов до кодаклавиши ENTER.

Если длина введенной строки больше указанной макси­мальной длины, то лишние символы отбрасываются, а в нулевой байт запи­сывается значение максимальной длины. В противном случае в нулевой байтзаписывается количество введенных символов. Поскольку строкой считают­ся все символы до кода клавиши ENTER, ввести в одной строке строковоезначение, а затем, например, число нельзя.Если при вводе строки просто нажать клавишу Enter, не вводя никакихсимволов, то считается, что введена пустая строка.115Часть L Основы алгоритмизации и процедурное программированиеПроцедуры и функции для работы со строками.

Все основные дейст­вия над строками и символами реализуют с помощью стандартных процедури функций.1. Функция Length(st):word- возвращает длину строки st, например:n:=Length(stl);{целочисленной переменной п присваивается значе­ние длины строки}2. Процедура Delete(sU index, count) - удаляет count символов строки st,начиная с символа с номером index, например:S1: = ^dddddsssssfffff;Delete(Sl,6,5); {получим результат 'dddddfflfff'}3. UpoixQjjypa. Insert(St2,Stl,index) - вставляет подстроку символов St2 встроку Stl, начиная с символа с номером index. Процедура обычно использу­ется при формировании строк, включающих числовую информацию, напри­мер:SJ = 'dddddddddd';S2 = 'аааааа';Insert(Sl, S2,6);{получим 'dddddaaaaaaddddd'}Insert(Tas\ S2,6);{получим 'dddddPasaaaaaaddddd'}4.

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

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

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

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