Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Исходный массив из 95 элементов



Н е г о в о р и т е м н е, о н у м е р - о н ж и в е т! П

У с т ь ж е р т в е н н и к р а з б и т - о г о н ь е щ е п

Ы л а е т, п у с т ь р о з а с о р в а н а - о н а е щ е ц

В е т е т

Символ " е" встретился 14 раз


Варианты заданий

Таблица 17. Варианты заданий лабораторной работы №4

№ вар. Задание Печатать элементы массива по Тип обрабатыв. данных
штук: формату:
Формирование массива длиной не более ста элементов, заполнения его с клавиатуры (вводя по одному произвольному символу пока не встретится символ '! '), исключение из массива всех символов – цифр и пробелов со сдвигом остающихся элементов массива на освободившиеся места. : 1 Символьн.
Нахождение номера наименьшего элемента в массиве заданной длины среди всех положительных элементов. Длина массива вводится с клавиатуры. : 11 Веществ.
Вычисление суммы " K" слагаемых – элементов массива, начиная с третьего по порядку, и суммируя только элементы с нечетными номерами. Длина массива и количество суммируемых элементов вводится с клавиатуры. : 9: 2 Веществ.
Перестановка максимального и минимального по значению элементов массива. Значение длины массива вводится с клавиатуры. : 7 Целые
Вычисление суммы всех четных (по значению) элементов массива, расположенных на нечетных по порядку местах. Длина массива вводится с клавиатуры. : 6 Целые
Нахождение максимального значения в массиве среди всех четных чисел. Длина массива вводится с клавиатуры. : 6 Целые
Вычисление суммы элементов массива, начиная с " К" -го по порядку и до элемента, равного нулю (если такой элемент встретится; иначе – до конца массива). " K", длину массива и значения элементов вводить с клавиатуры. : 12 Веществ.
Перестановка " i" -го и " j" -го по порядку элементов массива, при условии, что они с разными знаками. Если они с одинаковыми знаками, все элементы между ними обнулить. Длина массива и номера переставляемых элементов вводятся с клавиатуры. : 6 Целые
Вычисление суммы элементов массива, расположенных в конце массива, причем складывать нужно, начиная от конца массива, столько элементов, пока сумма не превысит значения 20.5 (или не будут сложены все элементы). Длина массива вводится с клавиатуры. Печатать сумму и количество сложенных элементов : 10: 3 Веществ.
Нахождение максимального значения в массиве среди всех элементов после первого отрицательного. Длина и значения элементов массива вводятся с клавиатуры. : 5 Целые
Вычисление суммы элементов массива начиная с первого элемента со значением больше 0.9, и пока сумма по модулю не превысит заданного значения. Длина массива, значения элементов и предельное значение (признак для окончания суммирования) вводятся с клавиатуры. : 9: 3 Веществ.
Перестановка максимального и минимального по коду символов массива длиной N элементов. Значение длины массива и сами элементы массива вводятся с клавиатуры. Массив печатать до и после перестановки. : 2 Символьн.
Формирование массива длиной N элементов, заполняя его с клавиатуры (вводя сначала количество символов, и затем по одному произвольному символу пока не введется указанное количество), подсчет и вывод на экран количества символов из диапазона от 'А' до 'я' (кириллицы). : 2 Символьн.
Вычисление среднего значения в одномерном массиве для всех элементов между первым и вторым нулем в массиве (или от первого нулевого значения до конца массива). Длина и значения элементов массива вводятся с клавиатуры. : 12 Веществ.
Перестановка одномерного массива в обратном порядке. Значение длины массива вводится с клавиатуры. Массив печатать до и после перестановки. : 8 Целые
Вычисление в одномерном массиве целой части среднего значения всех положительных четных по величине чисел. Длина массива вводится с клавиатуры. : 8 Целые
Исключение из массива всех пробелов и запятых со сдвигом остающихся элементов массива на освободившиеся места. Исходный массив длиной N символов (где N не больше 100) вводится из текстового файла. : 1 Символьн.
Вычисление целого среднеарифметического значения среди всех отрицательных элементов массива (содержащего и положительные значения), расположенных начиная с " К" -го по порядку элемента. Длина массива и значение " К" вводятся с клавиатуры. : 6 Целые
Определение длины самой длинной последовательности из расположенных подряд в одномерном логическом массиве значений TRUE и вывод найденной длины на экран. Длина массива и значения TRUE и FALSE вводятся с клавиатуры в форме F (для FALSE) и T (TRUE). : 7 Логич.
Вычисление среднеарифметического всех положительных элементов массива (содержащего и отрицательные значения), длина которого вводится с клавиатуры. : 10: 2 Веществ.
Поиск места (номера элемента) в массиве, где первый раз подряд встречаются два четных числа. Длина массива вводится с клавиатуры. : 6 Целые
Формирование логического массива длиной N элементов, заполнения его с клавиатуры (вводя 1 – вместо TRUE и 0 – вместо FALSE'), подсчет и вывод на экран количества значений TRUE и FALSE и сообщение, чего было больше. : 6 Логич.
Поиск номеров двух последних расположенных подряд отрицательных элементов в массиве. Длина массива вводится с клавиатуры. : 10 Веществ.
Формирование логического массива, заполняя его с клавиатуры (вводя вместо TRUE четные числа, а вместо FALSE – нечетные и заканчивая, когда встретится число 0); подсчет и вывод на экран количества значений TRUE и FALSE и сообщение, каких значений было больше. : 5 Логич.
Нахождение номера максимального значения в массиве после первого отрицательного и не далее второго отрицательного. Длина массива вводится с клавиатуры. : 10: 3 Веществ.
Формирование символьного массива длиной N элементов, содержащего только цифры. (При заполнении его с клавиатуры пропускать не цифровые символы.) Подсчет и вывод на экран цифры, встретившейся чаще других (и сколько раз она встретилась.) : 3 Символьн.
Исключение из массива всех отрицательных по значению элементов со сдвигом элементов массива на освободившиеся места. Длина массива вводится с клавиатуры. : 9: 2 Веществ.
Переписывание из исходного в выходной массив всех нечетных значений в начало, а всех четных – в конец. Длина исходного массива вводится с клавиатуры. : 6 Целые
Определение номера элемента, с которого начинается самая длинная последовательность четных чисел, расположенных в массиве подряд. Длина массива вводится с клавиатуры : 6 Целые
Определение номера элемента, с которого начинается самая длинная последовательность из отрицательных чисел, расположенных в массиве подряд. Длина массива вводится с клавиатуры. : 10: 2 Веществ.
Формирование символьного массива длиной не более ста элементов, заполнение его с клавиатуры (вводя по одному произвольному символу пока не встретится символ "." ), подсчет и вывод на экран символа, который встретился чаще других и число его повторений : 2 Символьн.
           

 

Лабораторная работа № 5

Работа с двумерными массивами

(сортировки и перестановки в массиве)

Задачи лабораторной работы

Вопросы, изучаемые в работе

  • Изучение двумерных массивов (матриц).
  • Использование операторов описаний типов пользователя.
  • Освоение форматного вывода двумерных массивов в виде таблиц.
  • Работа с нечисловыми типами данных.
  • Изучение основных методов (алгоритмов) сортировки массивов данных.

Задание (общее ко всем вариантам)

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

Оформить отчет по лабораторной работе аналогично оформлению работы № 4.

Требования к программе

· Все значения, на которые по смыслу накладываются ограничения, должны при вводе проверяться.

· При выводе использовать длину выводимой строки не более 80 символов.

· Если требуется вводить вещественные данные, их следует читать из файла D: \LAB1\DATF.TXT, если целые – то из D: \LAB1\DATI.TXT, если символьные данные, то из файла D: \LAB1\SIMBOL.TXT, если логические – из D: \LAB1\LOGICAL.TXT.


Содержание программы.

  • Заголовок программы с комментарием;
  • Описание типов для массивов;
  • Описание переменных, меток, констант (если надо);
  • Ввод с клавиатуры размеров массива и других данных, необходимых программе;
  • Ввод требуемого количества данных из указанного текстового файла с числами. Файл находится на диске D: в каталоге \LAB1;
  • Вывод в выходной текстовый файл исходного массива под заголовком " Исходный массив";
  • Проведение обработки числового материала в соответствии с заданием, указанным в выбранном варианте;
  • Вывод результатов обработки в выходной текстовый файл под заголовком " Результаты расчета";
  • Закрытие всех открытых файлов.

Общие пояснения

1. Описание и использование двумерных массивов. Как и одномерные, двумерные массивы представляют совокупность однотипных переменных, имеющих одинаковое имя и размещенных в памяти ЭВМ подряд. Однако, для обращения к отдельному элементу (компоненту) массива, требуется указывать уже два индекса. Для наглядности, двумерные массивы изображают на бумаге в форме прямоугольной таблицы, поэтому часто такие массивы с числовыми значениями элементов называют матрицами.

B Turbo Pascal компоненты массива могут быть любого (в том числе – составного) типа, индексы могут быть любого порядкового типа (т.е. не вещественного), но не Longint. В данной лабораторной работе будут рассматриваться компоненты только простого типа.

Описание массива можно производить двумя способами: через задание типа массива и непосредственно.

Например:

TYPE {Создание массивов с использованием описателей типов}

mas1 = array[1..100] of integer; { описатель для целочисленных одномерных массивов длиной не более 100 элементов }

vector = array [1..30] of real; { описатель для вещественных одномерных массивов длиной не более 20 элементов }

mas2 = array[1..8, 1..10] of Char; { описатель для символьных двумерных массивов размерами не более 8 строк и 10 столбцов }

matrix = array[1..12] of vector; { описатель для вещественных двумерных массивов размерами не более 10 строк и 20 столбцов}

Последний описатель можно было бы задать без использования описателя типа vector:

matrix = array[1..12, 1..30] of real; }

VAR {здесь выделяется место под все массивы }

Names: mas2;

Numbers, Ages: mas1;

Day_Tempr, Day_Wind: vector;

Tempr1996: matrix;

Создание массивов без использования специальных описателей типов:

VAR Ball_Groop_1, B_M170: array[1..30] of real;

{ выделение места под два одномерных вещественных массива}

Prizn: array [1..10, 1..10] of boolean;

{ квадратный массив логических переменных}

B_M175: array[1..30] of real;

Ball_Kurs: array[1: 12, 1..30] of real;

{ выделение места под двумерный вещественный массив}

Массивы, созданные одним оператором описания или разными операторами, но использующими общий описатель, являются совместимыми; для них возможны операции присваивания, операции отношения (только равно и не равно). Для массивов описанных выше можно написать операторы:

...

Ball_Groop1: = B_M170;

Numbers: = Ages;

If Day_Tempr=Day_Wind then...

Но недопустим ни один из операторов:

Ball_Kurs: = Tempr1996;

Ball_Groop1: = B_M175;

B_M175: = B_M170;

While B_M175< > B_M170 do...

 

2. Алгоритмы основных методов сортировок (для всех случаев как пример рассмотрена сортировка чисел по возрастанию)

Алгоритм сортировки пересчетом. Этот метод относится к сортировкам в двух массивах. Берется первый элемент исходной последовательности и подсчитывается, сколько элементов имеют величину, меньшую чем взятый. Проверяемый элемент помещается в выходной массив на место, равное подсчитанному числу плюс один (но если в этом месте уже записано число – то на следующее место). Это проделывается для следующего элемента исходной последовательности, и так до конца. В выходном массиве элементы упорядочены. Чтобы определить, занято ли место в выходном массиве, его предварительно следует заполнить " признаком свободного места" – таким числом, которого нет в сортируемом массиве. В качестве такого числа можно взять значение, например, на единицу больше максимального числа в сортируемом массиве.

Алгоритм сортировки выбором. Это метод сортировки на месте (в одном массиве). В массиве ищется минимальный элемент и переставляется на место первого элемента (а первый элемент – на место найденного минимального). Потом этот процесс повторяется, но массив рассматривается со второго элемента (первый уже на месте). Найденный минимальный элемент меняется местами со вторым. Это повторяется до (n–1)-го элемента (n-ый элемент автоматически окажется на месте). Примечание: при поиске минимального элемента нужно находить и запоминать его место – для перестановки элементов.

Алгоритм сортировки обменом. Это также метод сортировки на месте (в одном массиве); некоторые алгоритмы этого метода носят название метода пузырька. Сравниваются два соседних элемента (первый и второй), если они в правильном порядке – ничего не делается, если порядок нарушен – они меняются местами. Потом этот процесс повторяется для второго и третьего элементов, и так до конца (n–1 и n-ый элементы). В результате самый большой элемент оказывается в самом конце (на n-ом месте). Затем весь этот процесс повторяется, но уже до n–1-го элемента (так как n-ый уже на месте); затем – до n–2-го и так всего n–1 раз. Тем самым n–1 элементов снизу окажутся упорядоченными, а следовательно и первый элемент тоже.

Алгоритм сортировки вставками. Этот метод относится к сортировкам в двух массивах. Имеется два массива. Один заполнен неупорядоченными числами, второй – пустой. Из первого берется первое число и переписывается на первое место во второй массив. Берется второе число и сравнивается с переписанным во второй массив. Если уже записанное число больше второго, оно переписывается на одну позицию ниже (на второе место), а последнее взятое число – на место первого. Затем из исходного массива берется третье число и сравнивается со вторым из выходного массива. Если оно должно вставляться выше второго, второе переписывается на позицию ниже. Далее сравнение проводится с первым числом и, если вставляемое число больше или равно первому, оно записывается на место, освободившееся от второго числа, иначе первое переписывается на позицию ниже, а вставляемое – на его место. Процесс повторяется, пока не будут вставлены на нужные места во второй массив все числа из первого.

Сортировка слиянием. Этот метод предполагает, что имеется два или несколько наборов данных, каждый из которых уже упорядочен. Нужно объединить их в один упорядоченный набор данных. Как входные, так и выходной наборы могут размещаться во внешней памяти (в файлах). Алгоритм заключается в том, что заводится столько указателей, сколько входных наборов данных объединяется одновременно; каждый указатель сначала указывает на первый элемент в каждом наборе. Выбирается самый маленький элемент из тех, на которые указывают эти указатели, и он переписывается в выходной массив, после чего указатель набора, из которого был переписан элемент, увеличивается на единицу (и теперь указывает на второй элемент этого набора). Далее снова производится выбор наименьшего элемента из тех, на которые указывают указатели, и так пока не будут выбраны все элементы из всех наборов. Если кончается один из наборов, а их всего два, то оставшиеся элементы второго набора дописываются в конец выводного файла. Если сливаются одновременно более двух наборов, вычерпанный набор перестает рассматриваться при выборе минимального элемента, или в этом наборе искусственно создается дополнительный элемент с очень большим ключом (каких не может быть у реальных элементов) и при выборе он никогда не будет взят. При этом не меняется схема выбора. Если первоначально было N упорядоченных коротких наборов данных, то объединяя их попарно этим методом, после первого прохода станет N/2 упорядоченных наборов, но каждый из них будет уже в два раза длиннее. Повторяя этот процесс и беря каждый раз выходные наборы в качестве входных для слияния, можно в итоге получить один упорядоченный набор. Первоначальные N наборов можно получить из исходного, например, беря по паре элементов, поменяв их местами, если они не в правильном порядке.

Разбор контрольного варианта

Задание

Таблица 18. Данные к заданию 31 варианта


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-30; Просмотров: 1062; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.044 с.)
Главная | Случайная страница | Обратная связь