информатика. Информатика. Программа Matrix сначала вводит параметр N, затем при помощи процедуры InputMatrix вводится с клавиатуры матрица Х. При помощи функции norma вычисляется значение норма матрицы Х, которое запоминается в переменной
Скачать 48.28 Kb.
|
Введение1.Задание 1 3 2. Задание 2 9 3. Задание 3 13 4. Задание 4 16 5. Задание 5 19 Список использованных источников 22 Задание 1Задана матрица X размерности N. Построить таблицу значений функции , z изменяется от 1 до 5 с шагом 0,5; с – норма матрицы Х, т.е. , i = l, 2, ..., n. Решение. В задании не указано, что матрица Х является квадратной, но указан только один параметр N, определяющий размерность матрицы. В формуле для вычисления нормы матрицы для параметра j указан конкретный диапазон изменения индекса (от 1 до 10). Поэтому будем считать, что матрица Х имеет N строк и 10 столбцов. Тип элементов матрицы не указан, будем считать, что задана матрица из действительных чисел. Программа Matrix сначала вводит параметр N, затем при помощи процедуры InputMatrix вводится с клавиатуры матрица Х. При помощи функции norma вычисляется значение норма матрицы Х, которое запоминается в переменной с. При вычислении нормы в функции norma применяется станедартный способ вычисления суммы и максимума элементов. Поскольку производится суммирование элементов по абсолютной величине, сумма каждой строки не может быть отрицательной. Поэтому за начальное значение максимума можно взять 0. Параметр z меняется с шагом 0.5, поэтому нельзя непосредственно применить цикл for. Но можно ввести вспомогательную величину h=2z, которая меняется с шагом 1. Это позволит использовать цикл for с параметром h. В этом цикле для заданного h вычисляются величины z=h/2, y=c/z. Значения z и y выводятся на экран. Блок-схема МATRIX Ввести N InputMatrix Вычислить норму c=norma Цикл h от 2 до 10 z=h/2 y=c/z Вывести z Вывести y Увеличить h на 1 КОНЕЦ Рисунок 1.1 InputMatrix Цикл i от 1 до N Цикл j от 1 до 10 Увеличить i на 1 Увеличить j на 1 Ввести Xi j КОНЕЦ Р norma исунок 1.2 max=0 Цикл i от 1 до N s=0 Цикл j от 1 до 10 s=s+|Хi j| s>max max=s да нет Увеличить j на 1 Увеличить i на 1 Вернуть max Рисунок 1.3 Результат выполнения Введите размерность N: 2 Введите матрицу X: X[1,1]=1 X[1,2]=2 X[1,3]=3 X[1,4]=4 X[1,5]=5 X[1,6]=6 X[1,7]=7 X[1,8]=8 X[1,9]=9 X[1,10]=0 X[2,1]=1.4 X[2,2]=2.7 X[2,3]=8.8 X[2,4]=45 X[2,5]=55 X[2,6]=8.9 X[2,7]=3 X[2,8]=9.0 X[2,9]=3.1 X[2,10]=12 z y 1.0 148.90000 1.5 99.26667 2.0 74.45000 2.5 59.56000 3.0 49.63333 3.5 42.54286 4.0 37.22500 4.5 33.08889 5.0 29.78000 Листинг программы PROGRAM Matrix; CONST Nmax=10; {максимальное количество строк} M=10; {количество столбцов матрицы} TYPE Matrix=array [1..Nmax, 1..M] of real; VAR X: Matrix; {исходная матрица} N: integer; {количество строк матрицы} c: real; {норма матрицы} h: integer; z,y: real; {ввод матрицы} PROCEDURE InputMatrix; Var i,j:integer; BEGIN for i:=1 to N do for j:=1 to M do begin write('X[',i,',',j,']='); readln(X[i,j]) end; END; {вычисление нормы} FUNCTION norma:real; Var i,j:integer; max: real; s :real; BEGIN max:=0; {текущий максимум} {перебор всех строк} for i:=1 to N do begin s:=0;{текущая сумма строки} for j:=1 to M do s:=s+abs(X[i,j]); {корректировка текущего максимума} if s>max then max:=s; end; norma:=max; END; BEGIN writeln('Введите размерность N:'); readln(N); writeln('Введите матрицу X:'); InputMatrix; c:=norma; {вычисление нормы матрицы} writeln(' z ','y':7); for h:=2 to 10 do begin z:= h/2; y:=c/z; writeln(z:5:1,' ',y:10:5); end; END. 2. Задание 2y(x) = , для x[-3;3], hx = 1,2. Решение. Будем считать, что в этом задании требуется вывести на экран все значения величины x из отрезка [–3; 3] с шагом hx=1.2 и величину y(x). Все переменные в этой программе будут вещественные (типа real). Для вычисления y(x) напишем отдельную функцию f(x), где применим ветвление (условный оператор) для разбора случаев. Поскольку шаг изменения переменной x равен hx=1.2 , применить оператор for нельзя. Будем использовать цикл while. В этом цикле будем вычислять y=f(x) и выводить на экран текущее значение x и вычисленное y. Блок-схема YX x= –3 Вывести заголовок нет x ≤ 3 да Вычислить y=f(x) Вывести x Вывести y x= x+hx КОНЕЦ Рисунок 2.1 f(x) x ≤ 0 да нет f= 1– x2 + x/2 f= x/2 Вернуть f Рисунок 2.2 Результат выполнения x y -3.000 -9.50000 -1.800 -3.14000 -0.600 0.34000 0.600 0.30000 1.800 0.90000 3.000 1.50000 Листинг программы PROGRAM YX; CONST h=1.2; {шаг по х} VAR x,y:real; FUNCTION f(x:real):real; begin if x<=0 then f:=1-x*x+x/2 else f:=x/2; end; BEGIN x:=-3;{начальное значение х} writeln(' x','y':10);{заголовок} while x<=3 do begin y:=f(x); writeln(x:6:3,' ',y:10:5); x:=x+h; end; END. 3. Задание 3Написать программу, в которой: a. запрашивается почтовый индекс студента, b. сравнивается введенная информация со значением строковой переменной (заданным в программе), c. выводится на экран сообщение (совпал или не совпал индекс) Решение. Сначала в программе в строковую переменную Index вводится индекс студента с клавиатуры. Затем в операторе ветвления происходит сравнение строковых величин: введенной и заданной в программе. В зависимости от результатов сравнения выдается текстовое сообщение. CmpIndex Ввести Index Index=MainIndex нет да Вывести «Индекс совпал!» Вывести «Индекс не совпал!» КОНЕЦ Рисунок 3.1 Результат выполнения Введите индекс:410000 Индекс совпал! Введите индекс:123456 Индекс не совпал! Листинг программы PROGRAM CmpIndex; CONST MainIndex='410000'; VAR Index:string; BEGIN write(' Введите индекс:');readln(Index); if Index=MainIndex then writeln(' Индекс совпал!') else writeln(' Индекс не совпал!') END. 4. Задание 4Написать программу для нахождения 1/20 площади равнобедренного треугольника по основанию и высоте. Решение. Необходимо в программе ввести два вещественных числа – длину основания a и длину высоту h треугольника. Площадь (любого) треугольника с основанием a и высотой h, проведенной к этому основанию, определяется по формуле S=0.5ah Условие задачи о равнобедренности треугольника излишне, формула справедлива для любого треугольника. Необходимо найти 1/20 площади треугольника, что дает формулу S20=0.5ah/ 20 Для наглядности не будем сворачивать константы. В программе вводятся с клавиатуры две вещественные величины a и h. По указанной формуле вычисляется 1/20 площади, результат выводится на экран. Блок-схема Triangle Ввести a Ввести h S = 0.5ah/ 20 Вывести S КОНЕЦ Рисунок 4.1 Результат выполнения Введите основание:10 Введите высоту:20 1/20 площади треугольника=5 Листинг программы PROGRAM Triangle; VAR a, {основание треугольника} h: real; {высота треугольника} S: real; {площадь треугольника} BEGIN write('Введите основание:');readln(a); write('Введите высоту:');readln(h); S:=0.5*a*h/20; writeln('1/20 площади треугольника=', S); END. 5. Задание 5Написать программу для нахождения значения переменной S по формуле: Решение. Целое число N является исходными данными этой программы. Это число вводится с клавиатуры. На i-й итерации цикла for вычисляется очередное слагаемое sin (i) и прибавляется к текущему значению суммы S. По окончании цикла значение S выводится на экран. Блок-схема Sinus Ввести N Цикл i от 1 до N S=0 S=S+sin(i) Вывести S Увеличить i на 1 КОНЕЦ Рисунок 5.1 Результат выполнения Введите N:5 S(5)=0.176161649722379 Введите N:0 S(0)=0 Листинг программы PROGRAM Sinus; VAR N:integer; {количество слагаемых} S:real; {сумма синусов} i:integer; BEGIN write('Введите N:');readln(N); S:=0; for i:=1 to N do S:=S+sin(i); writeln('S(',N,')=',S); END. Список использованных источников1. Рубанцев В. Занимательные уроки с паскалем, или Pascal для начинающих — Самоиздат, 2013. 2. Лукин С.Н. Turbo Pascal 7.0. Самоучитель для начинающих, 2-е издание. — Диалог-МИФИ, 1999. 3. Деревенец О.В. Песни о паскале. [Электронный ресурс]: 2011, Режим доступа: http://oleg.derevenets.com/index.html, свободный. |