Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика. В 4 ч. Ч. 3

.pdf
Скачиваний:
0
Добавлен:
24.11.2025
Размер:
587.21 Кб
Скачать

Исходные данные: vx 1,5

м/с, v y 3

м/с, tнач 0 с,

dt 0,05 с.

 

 

При решении задачи необходимо для каждого момента времени t определить координату yt траектории движения и сравнить ее с координатой yp, полученной для предыдущего момента времени.

Сравнение координат y начинается после получения второго значенияyt, поэтомунеобходимоиспользовать цикл спостусловием.

Схема алгоритма вычислительного процесса имеет вид

Начало

vx, vy, tнач, dt

G

Впрограммеиспользуютсяследующиеидентификаторы(табл. 3.10):

Математическое

x

yt

yp

t

tнач

dt

vx

vy

обозначение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Идентификатор

x

yt

yp

t

tn

dt

vx

vy

 

 

 

 

 

 

 

 

 

Программа имеет вид

Program lr3_6_2; {103162 User15 Соколов О.Д.} Uses crt;

Var t,tn,dt,vx,vy,yp,yt,x:real;

begin ClrScr;

write ('Введите vx,vy,tn,dt'); readln (vx,vy,tn,dt);

t:=tn;

61

yt:=vy*t-9.81*t*t/2;

{начало цикла}

repeat

yp:=yt;

 

t:=t+dt;

 

yt:=vy*t-9.81*t*t/2

yt<yp-истина, то конец

until yt<yp; {если

цикла}

 

t:=t-dt;

 

x:=vx*t;

writeln('максимальной высоты снаряд достигает');

writeln('при t=',t:5:2,' c');

writeln('в точке x=',x:5:2,' y=',yp:5:2); repeat until keypressed

end.

Результаты работы программы имеют вид

Введите vx,vy,tn,dt 1.5 3 0 0.05

максимальной высоты снаряд достигает при t = 0.30 c

в точке x = 0.45 y = 0.46

62

G

t = tнач

yt v y

9,81t 2

2

 

 

 

 

 

 

 

 

 

 

 

 

Начало цикла с параметром t

t

yp = yt

t = t + dt

yt v y

9,81t 2

2

 

 

 

t, yt < yp

t = t – dt

x = vx t

t, x, yp

Конец

Конец цикла, если yt < yp, то цикл прекратить

63

Контрольные вопросы

1.Какой оператор используется для организации цикла с предусловием ?

2.Какой оператор используется для организации цикла с постусловием ?

Задания для выполнения

Для двух задач составить схемы алгоритмов и программы.

Вариант 1

1.Использовать задание а) лабораторной работы 1.5 (ч.1).

2.Для заданного массива B(k), k 15, найти сумму всех положительных элементов массива до первого отрицательного. Если таких элементов нет, то вывести сообщение об этом.

Значения k = 7, B = (3,6; 0,2; 4,8; 1,3; –4,7; 1,9; 9,5).

Вариант 2

1.Использовать задание а) лабораторной работы 1.5 (ч.1).

2.Для заданного массива B(t), t 20, найти произведение всех элементов до первого элемента, большего 3,5. Если таких элементов нет, то вывести сообщение об этом.

Значенияt = 10, B = (1,3; –3,5; 1,9; 2,1; –4,2; 0,6; 1,1; 3,4; 6,1; 1,3).

Вариант 3

1.Использовать задание а) лабораторной работы 1.5.

2.Для заданного массива X(t), t 25, найти количество элементов до первого элемента, меньшего 2,7. Если таких элементов нет, то вывести сообщение об этом.

Значения t = 8, X = (4,6; 9,3; 6,8; 6,1; 4,2; 2,8; –1,4; 3,5).

Вариант 4

1. Использовать задание а) лабораторной работы 1.5 (ч.1).

Для заданного массива A(n), n 30, найти сумму элементов до первого элемента, большего –0,2. Если таких элементов нет, то вывести сообщение об этом.

Значения n = 7, A = (–3,6; –7,2; –1,4; –0,1; 4,6; 3,8; –2,5).

64

Вариант 5

1.Использовать задание а) лабораторной работы 1.5 (ч.1).

2.Для заданного массива W(t), t 25, найти произведение элементов до первого элемента, большего 0,9. Если таких элементов нет, то вывести сообщение об этом.

Значения t = 8, W = (0,2; –1,5; –5,2; 0,4; –5,2; 1,5; 8,5; 3,8).

Вариант 6

1.Использовать задание а) лабораторной работы 1.5 (ч.1).

2.Для заданного массива Z(k), k 25, найти количество элементов до первого элемента, меньшего 8,5. Если таких элементов нет, то вывести сообщение об этом.

Значения k = 6, Z = (9,5; 11,4; 43,9; 2,4; 2,5; 7,5).

Вариант 7

1.Использовать задание а) лабораторной работы 1.5 (ч.1).

2.Для заданного массива B(t), t 20, найти сумму всех отрицательных элементов массива до первого положительного. Если таких элементов нет, то вывести сообщение об этом.

Значения t = 6, B = (–4,2; –1,6; –2,8; –0,2; 4,7; –3,6).

Вариант 8

1.Использовать задание а) лабораторной работы 1.5 (ч.1).

2.Для заданного массива Y(k), k 20, найти произведение элементов до первого элемента, меньшего 2,5. Если таких элементов нет, то вывести сообщение об этом.

Значения k = 7, Y = (3,6; 2,8; 7,2; 1,7; 8,3; –2,5; 1,5).

Вариант 9

1.Использовать задание а) лабораторной работы 1.5 (ч.1).

2.Для заданного массива C(n), n 30, найти количество всех отрицательных элементов массива до первого положительного. Если таких элементов нет, то вывести сообщение об этом.

Значения n = 8, C = (–2,5; –4,1; –6,4; –2,7; –1,7; 4,7; –1,5; –6,1).

65

Вариант 10

1.Использовать задание а) лабораторной работы 1.5 (ч.1).

2.Для заданного массива H(k), k 30, найти сумму элементов до первого элемента, большего 5,2. Если таких элементов нет, то вывести сообщение об этом.

Значения k = 6, H = (2,5; 3,1; 6,3; –2,5; 8,4; –3,1).

Лабораторная работа № 3 . 7

Программирование вычислительных процессов с использованием вложенных циклов

Цель работы: приобретение практических навыков составления программ, содержащих вложенные циклы.

Теоретические сведения

Как известно, с точки зрения программирования матрица, имеющая m строк и n столбцов, является двумерным массивом размерности m n . Каждый элемент такого массива характеризуется:

1)именем массива, элементом которого он является;

2)номером строки, в которой он расположен;

3)номером столбца, в котором он расположен;

4)значением.

В программе двумерные массивы целесообразно описывать, используя пользовательский тип с указанием максимальной размерности, в виде

Туре

<имя типа> = array [<диапазон индексов строки>,<диапазон индексов столбца>] of <тип элементов> ;

Var

<имя матрицы>: <имя типа>; . Например,

Type

Matr = array [1..6,1..8] of real; Var

A:Matr; .

66

При таком описании предполагается, что в матрице будет не более 6 строк и не более 8 столбцов.

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

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

Обращение к элементу матрицы в Паскаль–программе имеет вид <имя матрицы> [<индекс строки>, <индекс столбца>] . Например, A[2,3] элемент матрицы A, стоящий на пересечении

2-й строки и 3-го столбца.

Пример. Для матрицы А(m,n), где m 5, n 4:

а) построить одномерный массив МX, каждый элемент которого равен максимальному элементу соответствующей строки матрицы А; б) получить матрицу В, умножая каждый элемент матрицы А на

сумму элементов столбца, в котором он находится. Введем следующие идентификаторы:

i– индекс строки элемента матрицы;

j– индекс столбца элемента матрицы; max – максимальный элемент i-й строки;

МХ– массивразмерностиm, содержащиймаксимальныеэлементы;

B – новая матрица, каждый элемент которой равен Ai j s , где s

сумма элементов j-го столбца.

Схема алгоритма решения задачи имеет вид

Начало

 

 

m,

n

 

Ввод рабочей размер-

 

ности матрицы А

 

 

S

 

 

 

 

67

S

 

 

 

 

i = 1, m

 

 

 

i

 

 

Вывод приглаше-

 

 

 

ния к вводу i–й

 

 

 

 

строки

 

j = 1, n

 

 

 

Ai

j

 

 

 

i =

1,

 

За максимальный

 

 

 

 

 

 

элемент принимаем

max = Ai 1

 

первый элемент

 

 

 

строки

 

j = 2, n

 

 

 

нет

 

да

Уточнение

макси-

max < Ai j

 

 

 

 

мального элемента

 

 

max = Ai j

 

 

 

 

Присвоение

MXi = max

 

элементу

массива

 

MX максимального

 

 

 

элемента

соответ-

 

 

 

ствующей строки

W

68

W

i = 1, m

Вывод массива MX MXi поэлементно

 

 

 

 

 

 

j = 1, n

 

Перебор номера

 

столбца

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s = 0

 

Начальное значе-

 

ние суммы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i = 1, m

Вычисление суммы элемен-

s = s + Ai j тов столбца

i = 1, m

Вычисление

строки матрицы В

Bi j = s Ai j

R

69

R

i = 1, m

j = 1, n

Вывод значе-

Bi j ния элемента Bi j

Конец

Текст программы на языке Паскаль имеет вид

Program lr3_7; {103112 USER14 Филанович П.А.} Uses crt;

Type

matr=array[1..5,1..4] of real; vector=array[1..5] of real;

Var b,a:matr; mx:vector; s,max:real;

m,n,i,j:integer; begin

ClrScr;

write('Введите количество строк матрицы m='); readln(m);

write('Введите количество столбцов матрицы n='); readln(n);

writeln;

writeln(' ':6,'Bведите матрицу A'); for i:=1 to m do

70