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

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

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

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

После\B[i]:=0завершения цикла суммирования эту строку и еесумму можно сразу выводить. На рис. 4.7 пред­r*^j:=I,5,l\-,ставлена схема алгоритма программы (пунктиромвыделено суммирование элементов i-й строки).1 B[i]:=B[i]+ 1 jНиже приведен ее текст.11-^t'ji1 hProgram ex;11;Var А: array[L .4J„5J of real;Вывод/B:array[1..4] of real;/ij:byte;Begin{ Конец jWriteLn(*Введите Mampuify построчно: *);for i:=J to 4 do{вводим матрицу}beginРис. 4.7.

Схемаforj:^l to 5 do Read(A[iJ]);алгоритма программынахождения суммReadLn;элементов строкend;_m_J83Часть L Основы алгоритмизации и процедурное программированиеWriteLn(*Результаты:');for i:=^l to 4 do{для каждой строки}beginB[i]:=0;{обнуляем накапливаемую сумму}forj:-l to 5 do BfiJs^BfiJ-^AfiJJ; {суммируем элементы строки}forj:=I to 5 do Write(A[ij]:7:2);(выводим строку}WriteLnC Сумма равна \B[i]:7:2); {выводим сумму}end;EndСимвольные массивы.

Символьными называют массивы, элементамикоторых являются символы. Такие массивы традиционно использовалисьдля представления символьной информации, например различных текстов.Обработка символьных массивов в Borland Pascal имеет некоторые особен­ности.1. Объявляя символьный массив как типизированную константу, значе­ния символов можно указывать поэлементно:Const d:array[l,JO] of char ^С0\Ч\ '2\ '3\ *4\ '5\ '6'/7\'8\ V*);или целиком, используя строковую константу, длина которой должна строгосоответствовать размеру массива:Const d:array[L.10] of char =VI23456789';...2.

Присвоить значение символьному массиву также можно целиком, ис­пользуя строковую константу, длина которой должна совпадать с длиноймассива:Var S: array[LJl] of char;...S:- 'Примеродин*;3. При вводе элементы символьного массива нельзя разделять пробела­ми, так как пробел будет восприниматься как символ:Var S: array[1„ 10] of char;...for i:=l to 10 do Read(S[i]); {вводим строку «ABODE FILN J » }4. Символьный массив можно выводить поэлементно в цикле, как обыч­ный одномерный массив, а можно - целиком, одним рператором Write илиWriteLn:WriteLn(S); {вывод символьного массива одним оператором}5. В операторе вывода допускается использование операции конкатена­ции (слияния) символьных массивов, обозначаемой символом «+». Результа­том этой операции будет новый символьный массив, число элементов кото844. Структурные типы данныхрого равно сумме размеров исходных массивов, а значениями элементов элементы исходных массивов, последовательно записанные друг за другом:WriteLn(stl + ' * + st2): {конкатенация символьных массивов}Работа с одномерными символьными массивами осуществляется поэле­ментно, как с обычными массивами.

Рассмотрим пример использования сим­вольных массивов.Пример 4.3. Дана строка не более 40 символов, состоящая из слов; раз­деленных пробелами, и завершающаяся точкой. Разработать программу уда­ления «лишних» пробелов. Лишними считать пробелы в начале строки, вто­рой и более пробелы между словами и пробелы в конце строки.Например:Исходная строка:ABC DEРезультат: ABC_DE__FGH.""FGHУдалить пробелы в начале строки не трудно: просто не нужно переписы­вать пробелы до первого значащего символа из исходной строки в результи­рующую. Несколько сложнее дело обстоит с пробелами между словами, таккак удалить нужно не все пробелы, а только повторяющиеся. Для решениязадачи используем специальный признак «первый пробел». Этот признак бу­дем устанавливать, встретив первый пробел, и гасить, встретив символ, от­личный от пробела (на рис.

4.8). Используя этот признак, мы сможем отли­чить первый пробел, который необходимо перенести в массив результата отпоследующих, которые переносить не надо. Диаграмма показывает, что еслив конце строки есть пробелы, то с использованием признака «первый про­бел» мы получим в строке результата один лишний пробел.

Поэтому послезавершения обработки необходимо проверить признак, и если он установлен,удалить пробел, уменьшив длину строки на единицу. В программе, приведен­ной ниже, вместо этого на место пробела пишется точка. В том случае, еслипробела в конце нет, для точки «добавляется» элемент.Исходный массивА В СПризнак"первыйпробел"truefalseD Е^F G НXZZZLА В СD ЕF G НРезультатРис. 4.8.

Диафамма установки и гашения признака «первый пробел»85Часть 1. Основы алгоритмизации и процедурное программированиеProgram Stroka;Var ij\n:byte; key: boolean;s:array [L.41] of char; {дополнительный символ - для точки}BeginWriteLnCВведите исходную строку длиной до 40 символов:*);i:-l;{вводим строку посимвольно до точки, но не более 40 символов}Read(s[i]);while (i<40) and (s[i]o\') dobegini:-i+l;Read(sfiJ);end;ReadLn;ifsfij= \ ' then n:=i'l else n:=i; {определяем количество введенныхсимволов без точки}Writef'BeedeHHaM строка: *); WriteLn(s);j:=0; {номер символа в строке результата}key:=false; {гасим признак "первый пробел"}for i:=J to п doifs[i]^* * then {если обнаружен пробел}beginif key then {этот пробел первый}beginkey:=false; {дальше пойдут лишние пробелы}j:=j+J:{пробел переписываем в результат}s[j]:^s[i];end;endelse {символ}beginkey:=true; {устанавливаем признак "первый пробел"}s/jj:=sfi];end;if key thenj:=j+l;{символ переписываем в результат}{если пробела в конце нет, то увеличиваемдлину для записи точки}S[/]:'= \ V {записываем точку}WriteLn('npeo6pa3oeaHHaM строка ');for i:=J toj do Write(s[i]); WriteLn;End.864.

Структурные типы данных4.2. Практикум. Обработка одномерных массивовВсе операции, которые приходится выполнять над элементами одномер­ных массивов, можно разбить на следующие классы:• последовательная обработка элементов массивов;• переформирование массивов;• одновременная обработка нескольких массивов или подмассивов;• поиск элементов массива по заданным критериям.Как правило, в реальной жизни задачи, включающие только эти опера­ции, встречаются редко.

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

Это позволяет для вы­полнения операции использовать счетный цикл, через переменную которогообеспечивается косвенный доступ к элементам. Если просматриваются всеэлементы массива, то обращение выполняют, используя переменную цикла вкачестве индекса, а если с заданным шагом, то для адресации элементовстроится выражение, в которое входит переменная цикла, например 2*i+l.Однако возможно применение и других типов циклов.Примерами задач, требующих выполнения последовательной обработ­ки, являются: ввод и вывод массивов, нахождение сумм элементов как цели­ком массива, так и его определенной части, произведения элементов, средне­го арифметического, среднего геометрического, подсчет количества элемен­тов, отвечающих определенному условию или обладающих некоторыми при­знаками, а также их суммы, произведения и т.д. Кроме того, к этой группемогут быть отнесены задачи формирования значений и замены значенийвсех элементов значениями, подчиняющимися определенному закону.Пример 4,4.

Разработать программу определения среднего арифметиче­ского значений положительных элементов целочисленного массива А(п), гдеп < 40, кратных трем.Количество элементов массива в условии не определено, но ограничено.Для реального массива, который будет обрабатываться программой, это ко­личество естественно должно быть известно. Следовательно, прежде чемвводить элементы массива, можно запросить у пользователя ввод количестваэлементов п. Массив при этом будем описывать на максимально возможноеколичество элементов, так как в Borland Pascal выделение памяти под масси­вы реализовано статически^ т.

е. память под массивы, строки и другие струк­турные типы данных резервируется на этапе компиляции программы. Если87Часть 1, Основы алгоритмюации и процедурное программированиеs:=s+A[i]kol:=kol+lIКонецРис. 4.9. Алгоритм определениясреднего арифметическогоэлементов массива, кратных 3необходимо реализовать выделение па­мяти во время выполнения программы,то используют указатели (см.

главу 7).Для решения самой задачи необхо­димо двум вспомогательным перемен­ным S и ко1, которые будут использова­ны для накопления суммы требуемыхэлементов и их количества, присвоитьнулевые значения. После этого осуще­ствляют перебор всех элементов, и еслиочередной удовлетворяет условию, егозначение добавляют к содержимому пе­ременной S, а значение переменной ко1увеличивают на единицу. После про­смотра всего массива среднее арифме­тическое может быть определено деле­нием накопленной суммы на количест­во найденных элементов.

(Обратитевнимание, что среднее арифметическоеопределяется после просмотра всегомассива, так как до этого момента у насне полные сумма и количество элемен­тов.) Положительных элементов в мас­сиве может не быть, что необходимопредусмотреть в программе. Алгоритмрешения задачи представлен на рис. 4.9.Ниже представлен текст программы.Program ex;Var a:array[L JO] of integer; s, kol /, n:integer;BeginWriteLn(*Введите количество элементов массива <=40*);Readlnfn); {вводим количество элементов массива}WriteLn(*Введите \ п, * элементов массива:*);for i:=l to п do Read(a[i]);ReadLn; {вводим массив}WriteLnf* Исходный массив *);for i:'=J to n do {выводим массив по 10 элементов в строке}if О mod 10) =0 then WriteLn(a[i]:5)else Write(a[i]:5);WriteLn;kol:-0;{обнуляем количество элементов, кратных 3}s:-0\{обнуляем начальное значение суммы элементов}884, Структурные типы данныхfor i:=l to п doif(a[i] mod 3)=0 then {если элемент кратен 3}beginkol:=kol+l\ {увеличиваем количество на 1}s:-s-¥a[i]; {добавляем элемент к сумме}end;ifkol='0 then {если количество элементов равно нулю, то}}¥гиеЬпСЭлементов, удовлетворяющих условию, нет*)else WriteLnC Среднее арифметическое^ ко1:3,^ элементов, кратных 3-*,(s/kol):7:2);EndПример 4.5.

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

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

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

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