Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Изменение значения некоторых элементовСтр 1 из 3Следующая ⇒
Лабораторная работа №2 Циклические программы
1. Цель работы: 1.1.;
ПОРЯДОК ПРОВЕДЕНИЯ РАБОТЫ 2.1. Изучить теоретический материал 2.2. Проделать практическое задание ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Цикл представляет собой последовательность операторов, которая выполняется неоднократно. В языке программирования Pascal имеется стандартный набор из трех разновидностей цикла — цикл с постусловием (инструкция repeat), цикл с предусловием (инструкция while) и цикл со счетчиком (инструкция for). Хорошо, что у программиста есть возможность выбора наиболее подходящего средства реализации алгоритма, но при изучении циклов часто возникают затруднения при выборе оператора цикла.
Цикл с постусловием
Иногда при решении задач возникает необходимость выполнить тело цикла хотя бы один раз, а потом исследовать условие повторять ли его еще раз. Эту задачу выполнит цикл с постусловием Repeat. Оператор повтора repeat состоит из заголовка (repeat), тела и условия окончания (until). Ключевые слова repeat, until обозначают " повторяй" и " пока" соответственно. repeat повторяй операторы операторы until < условие>; до тех пор, пока условие не будет верным
Для выполнения в цикле repeat нескольких операторов не следует помещать эти операторы в операторные скобки begin... end. Зарезервированные слова repeat и until действуют как операторные скобки. Repeat проверяет условие после выполнения действий. это гарантирует хотя бы одно выполнение действий до завершения цикла. Условие выхода из цикла — это выражение логического типа: простое выражение отношения или сложное логическое выражение; Цикл работает так: вначале выполняется тело цикла — инструкции, которые находятся между repeat и until, затем проверяется значение Условия выхода из цикла. В том случае, если оно равно false (ложь), т. е. не выполняется — инструкции цикла повторяются еще раз. Так продолжается до тех пор, пока условие не станет true (истина). На рис.7 приведена блок-схема оператора повтора repeat.
Например,
Цикл с предусловием
Оператор повтора while состоит из заголовка и тела цикла. Ключевые слова while и do обозначают " до тех пор, пока" и " выполняй" соответственно. while Условие выполнения цикла do Begin { Инструкции } end; Условие выполнения цикла — это выражение логического типа. Оператор while аналогичен оператору repeat, но проверка Условия выполнения цикла производится в самом начале оператора — если значение условия равно true (истина), то выполняются инструкции цикла, находящиеся между begin и end и снова вычисляется выражение Условия выполнения цикла. Так продолжается до тех пор, пока значение Условия выполнения цикла не станет равно false (ложь). На рис. 8 приведена блок-схема оператора повтора while.
Взаимосвязь операторов while и repeat: оператор while Условие do Инструкция; эквивалентен оператору if Условие then repeat Инструкция until Not Условие; Например, фрагмент программы суммирования чисел от 1 до 10. В данном примере использование всех видов цикла равноценно: ... s: = 0; i: = 1; while i< =10 do { находим сумму чисел от 1 до 10 } begin s: =s+i; i: =i+1; { изменение переменной управления циклом } end; Цикл с параметром
Этот вид оператора цикла также называют циклом со счетчиком. В нем важную роль играет переменная-параметр, которая на каждом шаге цикла автоматически изменяет свое значение ровно на единицу — поэтому ее и называют счетчиком. Инструкцию for можно реализовать двумя способами: Вариант 1 (с увеличением счетчика): for Счетчик: = НачальноеЗначение to КонечноеЗначение do Begin { Инструкции } end; Ключевые слова for, do обозначают " для", " выполняй" соответственно. Строка, содержащая for...do, называется заголовком цикла, оператор, стоящий после do образует его тело. Очень часто тело цикла — составной оператор. Если тело цикла представлено одиночным оператором, то begin и end не пишутся. На блок-схеме алгоритма цикл с параметром удобно обозначать следующим образом (рис. 9). Такое обозначение, правда, не совсем соответствует ГОСТу. Рис. 9 Условное обозначение на схемах алгоритмов цикла с параметром
Инструкции между begin и end выполняются столько раз, сколько определяет выражение [(КонечноеЗначение — НачальноеЗначение) + 1]. Это соответствует всем значениям счетчика от начального до конечного включительно. Например, выполнение цикла — фрагмента программы: for i: =10 to 14 do write(i: 3); выведет на экран последовательность цифр в виде: 10 11 12 13 14
Вариант 2 (с уменьшением счетчика): for Счетчик: = НачальноеЗначеиие downto КонечноеЗначение do Begin { Инструкции } end; Инструкции между begin и end выполняются столько раз, сколько определяет выражение [(НачальноеЗначение — КонечноеЗначение) + 1]. Например, выполнение цикла — фрагмента программы: for i: =14 downto 10 do write(i: 3); выведет на экран последовательность цифр в виде: 14 13 12 11 10 Оператор (инструкция) for используется для организации циклов с фиксированным, заранее известным или определяемым во время выполнения программы числом повторений. Переменная-счетчик должна быть порядкового типа: чаще — целочисленная, реже — символьного, логического или перечисляемого типов. Параметр цикла for может изменяться (увеличиваться или уменьшаться) каждый раз при выполнении тела цикла только на единицу.Если нужен другой шаг изменения параметра, предпочтительнее циклы repeat и while. Например, рассмотрим фрагмент программы, в котором предпринята попытка " обмануть" оператор for и получить изменение параметра i на 2 на каждом шаге цикла (единица прибавляется автоматически и еще одна единица прибавляется в теле цикла). for i: = 1 to 10 do begin write(i: 4); i: = i + 1; end; В данном случае на экране будут выведены числа 1 3 5 7 9. Однако настоятельно не рекомендуем пользоваться таким приемом. Стоит только немного видоизменить заголовок цикла предыдущего примера и взять в качестве конечного значения 9, а не 10: for i: = 1 to 9 do, как ваша программа не сможет нормально выйти из цикла — " зациклится", так как в момент проверки условия выхода из цикла i никогда не будет равно 9 (сначала 8, а потом сразу 10). Пример
Составить блок-схему алгоритма и программу для вычисления и вывода на экран таблицы значений функции , где аргумент Х изменяется от начального значения (например, 1) до конечного (например, 2) с заданным шагом (например, 0, 05). Параметры А и В задаются оператором ввода. Здесь переменная xmin используется для обозначения начального значения аргумента Х, xmax - для обозначения конечного значения аргумента Х, dx - для обозначения шага, А и В - для обозначения параметров, необходимых для вычислений, X и Y - для обозначения текущего значения аргумента и текущего значения функции. Эта задача может быть решена тремя способами. Вариант 1: Цикла с постусловием (REPEAT-UNTIL) (Рис. 10)
Рис.10. Блок-схема для цикла с постусловием.
Текст программы program prim_1; {программа вычислений и вывода на экран таблицы значений функции с использованием оператора REPEAT-UNTIL} var a, b: real; xmin, xmax, dx: real; x, y: real; begin write('A='); readln(a); write('B='); readln(b); write('начальное значение='); readln(xmin); write('конечное значение='); readln(xmax); write('шаг='); readln(dx); writeln('|___|___|'); writeln('| X | Y |'); writeln('|___|___|'); x: =xmin; repeat y: =A*sin(B*x)/x; writeln('|', x: 6: 2, '|', y: 7: 2, '|'); x: =x+dx; until x > xmax+dx/2; writeln('|___|___|'); end.
Вариант 2: Цикла с предусловием (WHILE-DO) (Рис.11)
Текст программы program prim_2; {программа вычислений и вывода на экран таблицы значений функции с использованием оператора WHILE-DO} var a, b: real; xmin, xmax, dx: real; x, y: real; begin write('A='); readln(a); write('B='); readln(b); write('начальное значение='); readln(xmin); write('конечное значение='); readln(xmax); write('шаг='); readln(dx); writeln('|___|___|'); writeln('| X | Y |'); writeln('|___|___|'); x: =xmin; while x < xmax+dx/2 do begin y: =A*sin(B*x)/x; writeln('|', x: 6: 2, '|', y: 7: 2, '|'); x: =x+dx; end; writeln('|___|___|'); end.
Рис.11 Блок-схема для цикла с предусловием.
Вариант 3: Цикла с параметром (FOR-DO) (Рис.12)
Рис.12. Блок-схема для цикла с параметром.
program prim_4; {программа вычислений и вывода на экран таблицы значений функции с использованием оператора FOR-DO} var a, b: real; xmin, xmax, dx: real; x, y: real; i, n: integer; begin write('A='); readln(a); write('B='); readln(b); write('начальное значение='); readln(xmin); write('конечное значение='); readln(xmax); write('шаг='); readln(dx); writeln('|___|___|'); writeln('| X | Y |'); writeln('|___|___|'); n: =trunc((xmax-xmin)/dx)+1; x: =xmin; for i: =1 to n do begin y: =A*sin(B*x)/x; writeln('|', x: 6: 2, '|', y: 7: 2, '|'); x: =x+dx; end; writeln('|___|___|'); end.
Одномерные массивы
Задача. Дан массив а, состоящий из 10 элементов. Составить программу поиска максимального элемента массива. Используем идею предыдущей задачи. Перед началом поиска выберем условно в качестве максимального первый элемент массива Max: =a[1]. Затем по очереди каждый элемент массива сравним со значением переменной m. Если он окажется больше, то изменим значение Max. После анализа всех элементов массива переменная Max содержит значение максимального элемента массива.
... Max: =a[1]; for i: = 2 to 10 do if Max< a[i] then Max: = a[i]; ...
Задача. Дан массив а, состоящий из 10 элементов. Составить программу поиска элементов массива.
program sorting; const n=20; {} Type Tarray=array[1..n] of integer; var i, buf, j: integer; a: Tarray; begin writeln('сортировка по возрастанию'); writeln('заполнение массива'); for i: =1 to n do begin a [i]: =random(100); write(a[i]: 3, ' ' ); end; for i: =2 to n do for j: =n downto 1 do if a[j-1]> a[j] then begin buf: =a[j-1]; a[j-1]: =a[j]; a[j]: =buf; end; writeln('сортированный массив'); for j: =1 to n do write(a[j]: 3, ' ' );
readln; end.
Для реализации различных методов сортировки необходимо подготовить несколько вспомогательных процедур и функций. 1. Функция, которая ищет минимальный элемент правее некоторого заданного и возвращает его номер в качестве результата. Аргументами функции являются номер элемента массива и обрабатываемый массив: 2. Большинство методов сортировок основаны на обмене двух чисел. Для этой цели предназначена процедура, которая в качестве параметров берет два числа и меняет их значения 3. Также пригодится процедура, которая берет элемент с индексом i, перемещает его на место элемента с номером j. А все элементы, которые имеют индексы от j до i-1 сдвигает на одну позицию вправо.
Доступ к элементам массива.
Рассмотрите предложенные ниже фрагменты программ для решения некоторых типичных задач. Перестановка двух элементов Задача. Поменять местами два элемента массива с номерами k1 и k2. Эту задачу можно решить следующим образом: Var m: MyArray; n, k1, k2, x: integer; Begin x: =m[k1]; m[k1]: = m[k2]; m[k2]: = x; End; Перестановка части массива Задача. Дан одномерный массив А, состоящий из 2n элементов. Поменять местами первую и вторую его половины Заметим лишь, что необходимо поменять местами элементы с номерами 1 и n+1, 2 и n+2 и т.д., последняя пара - n и 2n, а значит, обмен происходит по правилу: элемент с номером i меняется местами с элементом с номером n+i. Двумерные массивы
Двумерный массив можно представить себе в виде таблицы, в которой все строки и столбцы пронумерованы. Каждый элемент такого массива имеет два индекса: Первый индекс – это номер строки; Второй индекс – номер столбца.
Создание двумерного массива
Двумерные массивы создаются путем ввода данных с клавиатуры, с помощью случайных чисел и вычислений по формулам. Для формирования массива используется два вложенных цикла. Первый цикл перебирает строки, а второй – столбцы.
Практическая часть
Задание 1: Составить блок-схему алгоритма и программу с использованием цикла с предусловием или постусловием для вычисления и вывода на экран таблицы значений функции. Вывод выполнить в два столбика: первый столбик - значения аргумента, второй - значения функции. При разработке программы следует учитывать область определения функции и в случае необходимости организовать печать сообщения - “функция не определена”. Таблица 1 Задание 3
а) А[i] < B[i]; б) A[i] = B[i]; в) A[i] > B[i].
Задание 4
Задание 5
Задание 6
Y[1]=A[1]+A[n] Y[2]= A[2]+A[n-1] Y[3]= A[3]+A[n-2] и т.д. (n - четное)
а) А[i] < B[i] б) A[i] = B[i]; в) A[i] > B[i]
Задание 7: Составить программу для выполнения заданных действий над двумерным массивом вещественных чисел A(N, M). В программе предусмотреть ввод значений его элементов, вывод исходной и, при необходимости, преобразованной матриц. 1. Вычислить и запомнить сумму и число положительных элементов каждого столбца матрицы. Результаты отпечатать в виде двух строк. 2. Вычислить и запомнить сумму и число отрицательных элементов каждой строки матрицы. Результаты отпечатать в виде двух столбцов. 3. Вычислить сумму и число элементов матрицы, находящихся под главной диагональю и на ней. 4. Вычислить сумму и число элементов матрицы, находящихся над главной диагональю и на ней. 5. Записать на место отрицательных элементов матрицы нули, а на место положительных элементов матрицы — единицы. 6. Найти максимальный элемент на главной диагонали матрицы и присвоить нулевые значения другим элементам строки и столбца, на пересечении которых он стоит. 7. Найти наибольший и наименьший элементы матрицы и поменять их местами 8. Найти строку с наибольшей и наименьшей суммой элементов. Вывести на печать найденные строки и суммы их элементов. 9. Найти столбец с наибольшей и наименьшей суммой элементов. Вывести на печать найденные столбцы и суммы их элементов. 10. Каждый элемент строки разделить на предварительно рассчитанную сумму элементов этой строки. 11. Удалить последнюю строку матрицы и вывести ее на печать. 12. Удалить последний столбец матрицы и вывести ее на печать. 13. Найти максимальный элемент на главной диагонали матрицы. 14. Найти максимальный по модулю элемент матрицы и вычислить сумму столбца, в котором он находится. 15. Найти минимальный по модулю элемент матрицы и вычислить сумму строки, в которой он находится.
Задание 8: 1.Найти сумму всех четных элементов двумерного массива. 2.Найти сумму всех элементов двумерного массива, расположенных на главной диагонали. 3.Найти номер строки и столбца максимального элемента. 4.Имеется двумерный массив целых чисел. Найти номер строки, для которой среднеарифметическое значение ее элементов максимально. 5.В двумерном массиве целых чисел поменять местами строки и столбцы с одинаковыми номерами. 6.Найти минимальный элемент среди максимальных элементов строк двумерного массива целых чисел. Определить номер строки и столбца такого элемента. 7.Удалить столбец двумерного массива целых чисел, в котором находится максимальный элемент этого массива. 8.Найти все неповторяющиеся элементы двумерного массива целых чисел. 9.Заполнить двумерный массив целыми числами от 1 до 100 по спирали. 10.В двумерном массиве целых чисел заменить все элементы, меньшие суммы элементов первой строки на эту сумму. 11.Отсортировать строки массива целых чисел по убыванию. 12.Отсортировать нечетные столбцы массива по возрастанию. 13. Ввести вещественную матрицу размерности n * m построчно, а вывести по столбцам. 14. Выяснить сколько положительных элементов содержит матрица размерности n * m, если aij = sin(i+j/2). 15. Дана квадратная вещественная матрица размерности n. Является ли матрица симметричной относительно главной диагонали.
Лабораторная работа №2 Циклические программы
1. Цель работы: 1.1.;
ПОРЯДОК ПРОВЕДЕНИЯ РАБОТЫ 2.1. Изучить теоретический материал 2.2. Проделать практическое задание ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Цикл представляет собой последовательность операторов, которая выполняется неоднократно. В языке программирования Pascal имеется стандартный набор из трех разновидностей цикла — цикл с постусловием (инструкция repeat), цикл с предусловием (инструкция while) и цикл со счетчиком (инструкция for). Хорошо, что у программиста есть возможность выбора наиболее подходящего средства реализации алгоритма, но при изучении циклов часто возникают затруднения при выборе оператора цикла.
Цикл с постусловием
Иногда при решении задач возникает необходимость выполнить тело цикла хотя бы один раз, а потом исследовать условие повторять ли его еще раз. Эту задачу выполнит цикл с постусловием Repeat. Оператор повтора repeat состоит из заголовка (repeat), тела и условия окончания (until). Ключевые слова repeat, until обозначают " повторяй" и " пока" соответственно. repeat повторяй операторы операторы until < условие>; до тех пор, пока условие не будет верным
Для выполнения в цикле repeat нескольких операторов не следует помещать эти операторы в операторные скобки begin... end. Зарезервированные слова repeat и until действуют как операторные скобки. Repeat проверяет условие после выполнения действий. это гарантирует хотя бы одно выполнение действий до завершения цикла. Условие выхода из цикла — это выражение логического типа: простое выражение отношения или сложное логическое выражение; Цикл работает так: вначале выполняется тело цикла — инструкции, которые находятся между repeat и until, затем проверяется значение Условия выхода из цикла. В том случае, если оно равно false (ложь), т. е. не выполняется — инструкции цикла повторяются еще раз. Так продолжается до тех пор, пока условие не станет true (истина). На рис.7 приведена блок-схема оператора повтора repeat.
Например,
Цикл с предусловием
Оператор повтора while состоит из заголовка и тела цикла. Ключевые слова while и do обозначают " до тех пор, пока" и " выполняй" соответственно. while Условие выполнения цикла do Begin { Инструкции } end; Условие выполнения цикла — это выражение логического типа. Оператор while аналогичен оператору repeat, но проверка Условия выполнения цикла производится в самом начале оператора — если значение условия равно true (истина), то выполняются инструкции цикла, находящиеся между begin и end и снова вычисляется выражение Условия выполнения цикла. Так продолжается до тех пор, пока значение Условия выполнения цикла не станет равно false (ложь). На рис. 8 приведена блок-схема оператора повтора while.
Взаимосвязь операторов while и repeat: оператор while Условие do Инструкция; эквивалентен оператору if Условие then repeat Инструкция until Not Условие; Например, фрагмент программы суммирования чисел от 1 до 10. В данном примере использование всех видов цикла равноценно: ... s: = 0; i: = 1; while i< =10 do { находим сумму чисел от 1 до 10 } begin s: =s+i; i: =i+1; { изменение переменной управления циклом } end; Цикл с параметром
Этот вид оператора цикла также называют циклом со счетчиком. В нем важную роль играет переменная-параметр, которая на каждом шаге цикла автоматически изменяет свое значение ровно на единицу — поэтому ее и называют счетчиком. Инструкцию for можно реализовать двумя способами: Вариант 1 (с увеличением счетчика): for Счетчик: = НачальноеЗначение to КонечноеЗначение do Begin { Инструкции } end; Ключевые слова for, do обозначают " для", " выполняй" соответственно. Строка, содержащая for...do, называется заголовком цикла, оператор, стоящий после do образует его тело. Очень часто тело цикла — составной оператор. Если тело цикла представлено одиночным оператором, то begin и end не пишутся. На блок-схеме алгоритма цикл с параметром удобно обозначать следующим образом (рис. 9). Такое обозначение, правда, не совсем соответствует ГОСТу. Рис. 9 Условное обозначение на схемах алгоритмов цикла с параметром
Инструкции между begin и end выполняются столько раз, сколько определяет выражение [(КонечноеЗначение — НачальноеЗначение) + 1]. Это соответствует всем значениям счетчика от начального до конечного включительно. Например, выполнение цикла — фрагмента программы: for i: =10 to 14 do write(i: 3); выведет на экран последовательность цифр в виде: 10 11 12 13 14
Вариант 2 (с уменьшением счетчика): for Счетчик: = НачальноеЗначеиие downto КонечноеЗначение do Begin { Инструкции } end; Инструкции между begin и end выполняются столько раз, сколько определяет выражение [(НачальноеЗначение — КонечноеЗначение) + 1]. Например, выполнение цикла — фрагмента программы: for i: =14 downto 10 do write(i: 3); выведет на экран последовательность цифр в виде: 14 13 12 11 10 Оператор (инструкция) for используется для организации циклов с фиксированным, заранее известным или определяемым во время выполнения программы числом повторений. Переменная-счетчик должна быть порядкового типа: чаще — целочисленная, реже — символьного, логического или перечисляемого типов. Параметр цикла for может изменяться (увеличиваться или уменьшаться) каждый раз при выполнении тела цикла только на единицу.Если нужен другой шаг изменения параметра, предпочтительнее циклы repeat и while. Например, рассмотрим фрагмент программы, в котором предпринята попытка " обмануть" оператор for и получить изменение параметра i на 2 на каждом шаге цикла (единица прибавляется автоматически и еще одна единица прибавляется в теле цикла). for i: = 1 to 10 do begin write(i: 4); i: = i + 1; end; В данном случае на экране будут выведены числа 1 3 5 7 9. Однако настоятельно не рекомендуем пользоваться таким приемом. Стоит только немного видоизменить заголовок цикла предыдущего примера и взять в качестве конечного значения 9, а не 10: for i: = 1 to 9 do, как ваша программа не сможет нормально выйти из цикла — " зациклится", так как в момент проверки условия выхода из цикла i никогда не будет равно 9 (сначала 8, а потом сразу 10). Пример
Составить блок-схему алгоритма и программу для вычисления и вывода на экран таблицы значений функции , где аргумент Х изменяется от начального значения (например, 1) до конечного (например, 2) с заданным шагом (например, 0, 05). Параметры А и В задаются оператором ввода. Здесь переменная xmin используется для обозначения начального значения аргумента Х, xmax - для обозначения конечного значения аргумента Х, dx - для обозначения шага, А и В - для обозначения параметров, необходимых для вычислений, X и Y - для обозначения текущего значения аргумента и текущего значения функции. Эта задача может быть решена тремя способами. Вариант 1: Цикла с постусловием (REPEAT-UNTIL) (Рис. 10)
Рис.10. Блок-схема для цикла с постусловием.
Текст программы program prim_1; {программа вычислений и вывода на экран таблицы значений функции с использованием оператора REPEAT-UNTIL} var a, b: real; xmin, xmax, dx: real; x, y: real; begin write('A='); readln(a); write('B='); readln(b); write('начальное значение='); readln(xmin); write('конечное значение='); readln(xmax); write('шаг='); readln(dx); writeln('|___|___|'); writeln('| X | Y |'); writeln('|___|___|'); x: =xmin; repeat y: =A*sin(B*x)/x; writeln('|', x: 6: 2, '|', y: 7: 2, '|'); x: =x+dx; until x > xmax+dx/2; writeln('|___|___|'); end.
Вариант 2: Цикла с предусловием (WHILE-DO) (Рис.11)
Текст программы program prim_2; {программа вычислений и вывода на экран таблицы значений функции с использованием оператора WHILE-DO} var a, b: real; xmin, xmax, dx: real; x, y: real; begin write('A='); readln(a); write('B='); readln(b); write('начальное значение='); readln(xmin); write('конечное значение='); readln(xmax); write('шаг='); readln(dx); writeln('|___|___|'); writeln('| X | Y |'); writeln('|___|___|'); x: =xmin; while x < xmax+dx/2 do begin y: =A*sin(B*x)/x; writeln('|', x: 6: 2, '|', y: 7: 2, '|'); x: =x+dx; end; writeln('|___|___|'); end.
Рис.11 Блок-схема для цикла с предусловием.
Вариант 3: Цикла с параметром (FOR-DO) (Рис.12)
Рис.12. Блок-схема для цикла с параметром.
program prim_4; {программа вычислений и вывода на экран таблицы значений функции с использованием оператора FOR-DO} var a, b: real; xmin, xmax, dx: real; x, y: real; i, n: integer; begin write('A='); readln(a); write('B='); readln(b); write('начальное значение='); readln(xmin); write('конечное значение='); readln(xmax); write('шаг='); readln(dx); writeln('|___|___|'); writeln('| X | Y |'); writeln('|___|___|'); n: =trunc((xmax-xmin)/dx)+1; x: =xmin; for i: =1 to n do begin y: =A*sin(B*x)/x; writeln('|', x: 6: 2, '|', y: 7: 2, '|'); x: =x+dx; end; writeln('|___|___|'); end.
Одномерные массивы
Задача. Дан массив а, состоящий из 10 элементов. Составить программу поиска максимального элемента массива. Используем идею предыдущей задачи. Перед началом поиска выберем условно в качестве максимального первый элемент массива Max: =a[1]. Затем по очереди каждый элемент массива сравним со значением переменной m. Если он окажется больше, то изменим значение Max. После анализа всех элементов массива переменная Max содержит значение максимального элемента массива.
... Max: =a[1]; for i: = 2 to 10 do if Max< a[i] then Max: = a[i]; ...
Задача. Дан массив а, состоящий из 10 элементов. Составить программу поиска элементов массива.
program sorting; const n=20; {} Type Tarray=array[1..n] of integer; var i, buf, j: integer; a: Tarray; begin writeln('сортировка по возрастанию'); writeln('заполнение массива'); for i: =1 to n do begin a [i]: =random(100); write(a[i]: 3, ' ' ); end; for i: =2 to n do for j: =n downto 1 do if a[j-1]> a[j] then begin buf: =a[j-1]; a[j-1]: =a[j]; a[j]: =buf; end; writeln('сортированный массив'); for j: =1 to n do write(a[j]: 3, ' ' );
readln; end.
Для реализации различных методов сортировки необходимо подготовить несколько вспомогательных процедур и функций. 1. Функция, которая ищет минимальный элемент правее некоторого заданного и возвращает его номер в качестве результата. Аргументами функции являются номер элемента массива и обрабатываемый массив: 2. Большинство методов сортировок основаны на обмене двух чисел. Для этой цели предназначена процедура, которая в качестве параметров берет два числа и меняет их значения 3. Также пригодится процедура, которая берет элемент с индексом i, перемещает его на место элемента с номером j. А все элементы, которые имеют индексы от j до i-1 сдвигает на одну позицию вправо.
Доступ к элементам массива.
Рассмотрите предложенные ниже фрагменты программ для решения некоторых типичных задач. Изменение значения некоторых элементов Задача. Заменить отрицательные элементы на противоположные по знаку. program Zamena; const n=20; Type Tarray=array[1..n] of integer; var i: integer; a: Tarray; begin writeln('замена отрицательного знака на положительный’); writeln('заполнение массива'); randomize; for i: =1 to n do begin a [i]: =random(10+20)-20; write(a[i]: 3, ' ' ); end; for i: =1 to n do if a[i]< 0 then a[i]: =-1*a[i]; writeln('новый массив'); for i: =1 to n do write(a[i]: 3, ' ' );
readln; end.
Популярное:
|
Последнее изменение этой страницы: 2016-08-24; Просмотров: 785; Нарушение авторского права страницы