Вычислить значение функции заданной в виде графика. Разветвляющий алгоритм 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Вычислить значение функции заданной в виде графика. Разветвляющий алгоритм



63.

64.

65.

66.

67.

68.

69.

70.

71.

72.

73.

74.

Вычислить функцию


75.

76.

77.

78.

79.

80.

81.

82.


 

Таблица вариантов

Вариант Задания
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             

ЛАБОРАТОРНАЯ РАБОТА №3

Тема. Массивы и множества.

Цель. Научиться писать программы на языке Паскаль. Выполнять операции над массивами: последовательная обработка одномерных массивов; одновременная обработка нескольких одномерных массивов, работа с многомерными массивами. Объявление множеств, инициализация. Операции над множествами: дополнения, объединения, пересечения; операции отношения, операции проверки вхождения элемента в множество.

 

Теория

Массив

Массив – это упорядоченная структура однотипных данных, хранящая их последовательно. Доступ к элементу массива осуществляется через его индекс.

Объявление массива: массив можно объявить двумя способами:

1) Объявляется новый тип данных в разделе объявления новых типов данных Type, затем этот тип данных может быть присвоен переменным, в разделе объявления переменных Var.

Type Имя типа = ARRAY [диапазон индексов] OF тип элемента массива;

Var Имя переменной: Имя типа;

2) Объявляется переменная в разделе объявления переменных Var и ей присваивается тип массив:

Var Имя переменной: ARRAY [диапазон индексов] OF тип элемента массива;

Одномерные массивы. Вектора

Если в описании массива типом элемента является простой тип данных, то такой массив называется вектором. В описании одномерного массива используется один индекс. Одномерные массивы представляют собой простейшие структурированные данные. Обращение к элементам одномерных массивов осуществляется с помощью индексированных переменных (x[i]).

Двумерные массивы. Матрицы

Массивы массивов, содержащие два индекса (n=2), называются двумерными. Если элементами таких массивов являются простые числовые данные, то эти массивы часто называют матрицами.

Обращение к элементам двумерного массива осуществляется с помощью индексированных переменных (a[i,j]) а – имя массива, i,j – порядковый номер элемента в массиве.

Пример 1. Написать программу ввода данных одномерного массива из 10 элементов. Вывести массив состоящий из элементов предыдущего массива, индексы которых являются чётными.

Program massiv1;

Var

а: array [1..10] of Real;

b: array [1..5] of Real; {объявление массивов a,b}

i,j:integer; {объявление используемых

переменных}

Begin

j:=1;

For i:=1 To 10 do begin

Writeln (‘a[‘,I:2,’] элемент массива’); {приглашение к вводу}

Readln (a[I]); {вводит элементы массива}

end;

For i:=1 To 10 do begin

If ODD(i)=false then begin

{ODD – проверка на нечётность}

b[j]=a[I];

Writeln (‘b[‘,b:1,’] =’,b[j]);

j=j+1;

{увеличение порядкового номера

элемента}

end;

end;

End.

В данной программе рассмотрена последовательная обработка одномерного массивов.

Пример 2. Даны два одномерных массива A и B. Найти максимальный элемент массива А. И минимальный элемент массива В. Количество элементов в обоих массивах равно 10.

Program massiv2;

const n=10;

type mas=array [1..n]of integer;

var a, b:mas; {исходные массивы}

n:integer; {количество используемых элементов}

i:integer; {индекс массива}

max, min:integer; {максимальный и минимальный

элемент массива}

Begin

Writeln (‘Исходный массив a: | Исходный массив b’);

Randomize;

For i:=1 To n do begin

a[i]:=random(100);

b[i]:=random(100);

Write (a[i]:3, b[i]:20);

Writeln;

end;

max:=a[1];

min:= b[1];

for i:=2 to n do begin

if max<a[i] then max:=a[i];

if min>b[i] then min:=b[i];

end;

writeln ('максимальный элемент массива a:',max); writeln ('минимальный элемент массива b:',min);

end.

В данной программе рассмотрена одновременная обработка одномерных массивов.

Пример 3. Найти определитель матрицы 3х3. Элементы матрицы – целые числа.

Program massiv2;

const n=3;

type mas=array [1..n, 1..n]of integer;

var a:mas; {исходный двумерный массив}

n:integer; {количество используемых элементов}

i,j:integer; {индексы элемента массива}

Delta: real;

Begin

s:=1;

for i:=1 to n do begin

for j:=1 to n do begin

writeln ('введите элемент массива’,’ ‘,i,j);

readln (a[i,j]);

if i=j then s:=s*a[i,j];

end;

end;

Delta:=s+a[1,2]*a[2,3]*a[3,1]+a[2,1]*a[3,2]*a[1,3]-a[1,3]*a[2,2]*a[3,1]-a[1,2]*a[2,1]*a[3,3]- a[2,3]*a[3,2]*a[1,1];

writeln (‘определитель матрицы равен: ',Delta);

end.

Множества

Множества - это наборы однотипных логически связанных друг с другом объектов.

Описание типа множества имеет вид:

<имя типа> = SET OF <базовый тип>

<базовый тип> - это тип элементов множества, в качестве которого может использоваться любой порядковый тип, кроме Integer, Word, Shortint, Longint.

Пример 4. определения и задания множеств:

Type

digitChar= set of '0'..'9';

digit = set of 0..9;

Var

sl,s2,s3:digitChar;

s4,s5,s6:digit;

Begin

.....

s1:=['1','2','3'];

s2:=['3','2','1'];

s3:=['2','3'];

s4:=[0..3,6];

s5:=[4,5];

s6:=[3..9];

.....

end.

Над множествами определены следующие операции:

* пересечение множеств; результат содержит элементы, общие для обоих множеств;

например, F:=S4*S6 {содержит [3]};

F:=S4*S5 {пустое множество};

+ объединение множеств; результат содержит элементы первого множества, дополненные недостающими элементами из второго множества:

F:=S4+S5 {содержит [0,1,2,3,4,5,6]};

F:=S5+S6 {содержит [3,4,5,6,7,8,9]};

- разность множеств; результат содержит элементы из первого множества, которые не принадлежат второму:

F:=S6-S5 {содержит [3,6,7,8,9]};

F:=S4-S5 {содержит [0,1,2,3,6]};

= проверка эквивалентности; возвращает TRUE, если оба множества эквивалентны;

<> проверка неэквивалентности; возвращает TRUE, если оба множества неэквивалентны;

<= проверка вхождения; возвращает TRUE, если первое множество включено во второе;

>= проверка вхождения; возвращает TRUE, если второе множество включено в первое;

IN проверка принадлежности; в этой бинарной операции первый элемент - выражение, а второй - множество одного и того же типа; возвращает TRUE, если выражение имеет значение, принадлежащее множеству:

F:=3 in s6 {возвращает TRUE};

F:=2*2 in s1 {возвращает FALSE}.


Задания на лабораторную работу

1. Дан массив размера N. Вывести его элементы в обратном порядке.

2. Дан массив размера N. Вывести вначале его элементы c четными индексами, а затем — с нечетными.

3. Дано число k (0 < k < 11) и матрица размера 4 x 10. Найти сумму и произведение элементов k-го столбца данной матрицы.

4. Какие из следующих конструкций являются множествами (в смысле языка Паскаль), а какие нет и почему?

а) [9,6,3,0]; б) [2...3,5,7];

в) [1...15,4...18]; г) [ '*', '*'];

д) [0...0]; е) [true...false];

ж) [sqrt(9)]; з) ['=', '>='].

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

Задания на самостоятельную работу

Одномерные массивы

1. Дан целочисленный массив A размера 10. Вывести номер сначала первого затем последнего из тех его элементов A[i], которые удовлетворяют двойному неравенству: A[1] < A[i] < A[10]. Если таких элементов нет, то вывести 0.

2. Дан целочисленный массив размера 20. Преобразовать его, прибавив сначала к четным числам первый элемент, затем к нечетным числам последний элемент. Первый и последний элементы массива не изменять.

3. Дан целочисленный массив размера 20. Вывести вначале все его четные элементы, а затем — нечетные и наоборот.

4. Поменять местами минимальный и максимальный элементы массива размера 10.

5. Заменить все положительные элементы целочисленного массива размера 10 на значение минимального; все отрицательные на значение максимального.

6. Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами.

7. Дан массив размера 20. Осуществить циклический сдвиг элементов массива влево на одну позицию; то же самое - вправо.

8. Дан массив размера 15 и число k (0 < k < 5). Осуществить циклический сдвиг элементов массива влево на k позиций; то же самое - вправо.

9. Проверить, образуют ли элементы целочисленного массива размера 10 арифметическую (геометрическую) прогрессию. Если да, то вывести разность (знаменатель) прогрессии, если нет — вывести 0.

10. Дан массив ненулевых целых чисел размера 20. Проверить, чередуются ли в нем четные и нечетные числа. Если чередуются, то вывести 0, если нет, то вывести номер первого элемента, нарушающего закономерность.

11. Дан массив размера 20. Найти количество его локальных минимумов.

12. Дан массив размера 15. Найти максимальный из его локальных максимумов.

13. Дан массив размера 20. Определить количество участков, на которых его элементы монотонно возрастают.

14. Дан массив размера 15. Определить количество его промежутков монотонности (то есть участков, на которых его элементы возрастают или убывают).

15. Дано вещественное число R и массив размера 20. Найти элемент массива, который наиболее близок к данному числу.

16. Дано вещественное число R и массив размера 15. Найти два элемента массива, сумма которых наиболее близка к данному числу.

17. Дан массив размера 15. Найти номера двух ближайших чисел из этого массива.

18. Дан целочисленный массив размера 15. Определить максимальное количество его одинаковых элементов.

19. Дан целочисленный массив размера 20. Удалить из массива все элементы, встречающиеся менее двух раз, затем более двух раз, затем ровно два раза, затем ровно три раза.

20. Дан целочисленный массив размера N. Если он является перестановкой, то есть содержит все числа от 1 до N, то вывести 0, в противном случае вывести номер первого недопустимого элемента.

21. Дан массив размера N. Преобразовать его, вставив перед каждым положительным элементом нулевой элемент; после каждого отрицательного нулевой элемент.

22. Дан целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Вывести массив, содержащий длины всех серий исходного массива.

23. Дан целочисленный массив размера N. Преобразовать массив, увеличив каждую его серию на один элемент.

24. Дан целочисленный массив размера N. Преобразовать массив, увеличив первую серию наибольшей длины на один элемент.

25. Дан целочисленный массив размера N. Вставить перед каждой серией нулевой элемент.

Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1).

26. Дано число k и целочисленный массив размера N. Поменять местами первую и k-ю серии массива. Если серий в массиве меньше k, то вывести массив без изменений.

27. Дано число k и целочисленный массив размера N. Удалить из массива все серии, длина которых меньше k.

28. Дано число k и целочисленный массив размера N. Заменить каждую серию, длина которой меньше k, на один нулевой элемент.

29. Дан массив размера N. Вывести индексы массива в том порядке, в котором соответствующие им элементы образуют возрастающую последовательность.

30. Упорядочить массив размера N по возрастанию, а затем по убыванию.

31. Даны два массива A и B размера 5, элементы которых упорядочены по возрастанию. Объединить эти массивы так, чтобы результирующий массив остался упорядоченным.

32. Дан массив размера 20. Вывести индексы массива в том порядке, в котором соответствующие им элементы образуют убывающую последовательность.

Двумерные массивы (матрицы)

1. Дано число k (0 < k < 11) и матрица размера 4 x 10. Найти сумму и произведение элементов k-го столбца данной матрицы.

2. Дана матрица размера 5 x 9. Найти суммы элементов всех ее четных строк, а затем всех ее нечетных столбцов.

3. Дана матрица размера 5 x 10. Найти минимальное значение в каждой строке, а затем максимальное значение в каждом столбце.

4. Дана матрица размера 5 x 10. В каждой строке найти количество элементов, больших среднего арифметического всех элементов этой строки, а затем в каждом столбце меньших среднего арифметического всех элементов этого столбца.

5. Дана матрица размера 5 x 10. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке, а затем столбце.

6. Дана матрица размера 5 x 10. Найти минимальное значение среди сумм элементов всех ее строк и номер строки с этим минимальным значением.

7. Дана матрица размера 5 x 10. Найти максимальный среди минимальных элементов каждой строки, а затем столбца.

8. Дана целочисленная матрица размера 5 x 10. Вывести номер ее первой строки, содержащего равное количество положительных и отрицательных элементов (нулевые элементы не учитываются). Если таких строк нет, то вывести 0.

9. Дана матрица размера 5 x 10. Вывести номер ее последней строки, содержащего только положительные элементы. Если таких строк нет, то вывести 0.

10. Дана целочисленная матрица размера M x N. Различные строки (столбцы) матрицы назовем похожими, если совпадают множества чисел, встречающихся в этих строках (столбцах). Найти количество строк, похожих на первую строку.

11. Дана целочисленная матрица размера M x N. Найти количество ее строк, все элементы которых различны.

12. Дана целочисленная матрица размера M x N. Вывести номер ее первой строки, содержащего максимальное количество одинаковых элементов.

13. Дана квадратная матрица порядка M. Найти сумму элементов ее главной и побочной диагонали.

14. Дана квадратная матрица порядка M. Найти суммы элементов ее диагоналей, параллельных главной (начиная с одноэлементной диагонали A[1,1]).

15. Дана квадратная матрица порядка M. Вывести минимальные из элементов каждой ее диагонали, параллельной побочной (начиная с одноэлементной диагонали A[1,1]).

16. Дана квадратная матрица порядка M. Заменить нулями элементы матрицы, лежащие ниже главной диагонали.

17. Дана квадратная матрица порядка M. Заменить нулями элементы, лежащие одновременно выше главной диагонали (включая эту диагональ) и выше побочной диагонали (также включая эту диагональ).

18. Дана квадратная матрица порядка M. Зеркально отразить ее элементы относительно горизонтальной оси симметрии матрицы.

19. Дана квадратная матрица порядка M. Повернуть ее на 90 градусов в положительном направлении.

20. Дана матрица размера 5 x 10. Вывести количество столбцов, элементы которых монотонно убывают.

21. Дана матрица размера 5 x 10. Найти минимальный среди элементов тех столбцов, которые упорядочены либо по возрастанию, либо по убыванию. Если такие столбцы отсутствуют, то вывести 0.

22. Даны два числа k1 и k2 и матрица размера 4 x 10. Поменять местами столбцы матрицы с номерами k1 и k2.

23. Дана матрица размера 5 x 10. Поменять местами столбцы, содержащие минимальный и максимальный элементы матрицы.

24. Дана матрица размера 5 x 10. Поменять местами столбец с номером 1 и последний из столбцов, содержащих только положительные элементы.

25. Дано число k и матрица размера 4 x 10. Удалить столбец матрицы с номером k.

26. Дана матрица размера 5 x 10. Удалить столбец, содержащий максимальный элемент матрицы.

27. Дана матрица размера 5 x 10. Удалить все столбцы, содержащие только положительные элементы.

28. Дано число k и матрица размера 4 x 9. Перед столбцом матрицы с номером k вставить столбец из нулей.

29. Дана матрица размера 4 x 9. Продублировать столбец матрицы, содержащий ее максимальный элемент.

30. Дана матрица размера 5 x 9. После последнего столбца, содержащего только положительные элементы, добавить столбец, состоящий из единиц.

31. Дана целочисленная матрица размера M x N. Найти элемент, являющийся максимальным в своей строке и минимальным в своем столбце. Если такой элемент отсутствует, то вывести 0.

32. Дана матрица размера M x N. Поменять местами ее столбцы так, чтобы их максимальные элементы образовывали возрастающую последовательность.

Множества

Дана непустая последовательность состоящая из некоторых букв русского, латинского алфавита, чисел. Вывести на экран, задание по варианту.

1. все гласные буквы русского алфавита;

2. все «гласные» буквы латинского алфавита;

3. все согласные буквы русского алфавита;

4. все «согласные» буквы, латинского алфавита;

5. все звонкие согласные буквы русского алфавита;

6. все глухие согласные буквы, русского алфавита;

7. все чётные цифры;

8. все нечётные цифры;

Таблица вариантов

Вариант Задания
Одномерный массив Двумерный массив Множества
  1, 17 1, 17  
  2,18 2,18  
  3,19 3,19  
  4,20 4,20  
  5,21 5,21  
  6,22 6,22  
  7,23 7,23  
  8,24 8,24  
  9,25 9,25  
  10,26 10,26  
  11,27 11,27  
  12,28 12,28  
  13,29 13,29  
  14,30 14,30  
  15,31 15,31  
  16,32 16,32  

ЛАБОРАТОРНАЯ РАБОТА №4

Тема. Процедуры, функции. Строки.

Цель. Научиться писать программы на языке Паскаль с использованием процедур и функций. Объявление и инициализация строк. Операции над переменными строкового типа. Функции и процедуры над строками и множествами.

Теория

Типы подпрограмм

Алгоритм решения задачи проектируется путем декомпозиции всей задачи в отдельные подзадачи. Обычно подзадачи реализуются в виде подпрограмм.

Подпрограмма - это последовательность операторов, которые определены и записаны только в одном месте программы, однако их можно вызвать для выполнения из одной или нескольких точек программы. Каждая подпрограмма определяется уникальным именем. В языке Паскаль существуют два типа подпрограмм - процедуры и функции.

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

Структура процедуры аналогична структуре основной программы:

Procedure имя[(список параметров)]; {заголовок}

Разделы объявлений;

Begin

Раздел операторов;

End;

Описание функции отличается от описания процедуры незначительно:

Function имя[(список параметров)]:тип;{заголовок}

Разделы объявлений;

Begin

Раздел операторов;

Имя:=выражение;

End;

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

Пример 1. В программе задается два целых числа 5 и 7, эти числа передаются процедуре Inc2, в которой они удваиваются. Один из параметров передается как параметр-переменная, другой - как параметр-значение. Значения параметров до вызова процедуры, а так же результат их удвоения выводятся на экран.

Program podprog1;
var a,b: Integer;
procedure Inc2(Var c: Integer; b: Integer);
begin

c:= c + c;

b:= b + b;

Writeln (‘Удвоенные:’, c:5, b:5)
end; {Inc2}
begin

a:=5; b:=7;
Writeln (‘Исходные:’, a:5, b:5);

Inc2(a, b);
end.

В результате прогона программы будет выведено:

Исходные: 5 7

Удвоенные: 10 14

Пример 2. Описать функцию, вычисляющую факториал и использовать ее для вычисления f=n!*m!/(n+m)!

Program podprog2;

var n,m: Integer; f: Real;

function fact(n: Integer): Integer;

var i,p: Integer;

Begin

p:=1;

for i:=2 to n do p:= p* i;

fact:= p;
end;

Begin

read (m,n);

f:= fact(n) * fact(m) / fact(n+m);

writeln (f);

end.

Пример 3. Даны два действительных числа a и b. Вычислить значение выражения

.

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

Program podprog3;

Var

a, b, fa, z: real;

{описание функции}

function FS(x, y: real): real;

Begin

;

end;

{описание процедуры}

procedure FMS(x,y: real, var f: real);

Begin

;

end;

{описание вычисления z}

Begin

readln (a,b);

FMS (a, b, fa);

;

Writeln (‘z=’, z:2:4);

end.



Поделиться:


Последнее изменение этой страницы: 2017-02-08; просмотров: 477; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.252.140 (0.157 с.)