ЛАБОРАТОРНАЯ РАБОТА 4. ПРОГРАММИРОВАНИЕ ЦИКЛОВ




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

 

ПРОГРАММИРОВАНИЕ ЦИКЛОВ

С УСЛОВИЕМ

 

 

ЦЕЛЬ РАБОТЫ:

Овладеть навыками программирования на

языке Паскаль алгоритмов циклической

структуры с использованием операторов

цикла с предусловием и постусловием.

 

 

КРАТКИЕ СВЕДЕНИЯ ИЗ ТЕОРИИ

 

Для программирования циклов ПОКА в Паскале существуют оператор цикла с предусловием WHILE и оператор цикла с постусловием REPEAT.

 

ПРИМЕР 1: Алгоритм Евклида для подсчета НОД (наибольшего

общего делителя) двух натуральных чисел.

 

А Л Г О Р И Т М

 

алг Евклид

арг a,b: цел

рез z: цел

раб х,у: цел

Нач

ввод a,b

x:=a; y:=b

нцпока х у

если х > y

то х:=х-у

иначе у:=у-х

Все

кц

z:=x

вывод z

кон

 

 

П Р О Г Р А М М А

 

 

program Evklid;

var a,b,x,y,z: integer;

begin

writeln ('Введите числа');

readln (a,b);

x:=a; y:=b;

while (x< >y) do

if x > y

then x:=x-y

else y:=y-x;

z:=x;

writeln ('НОД=',z)

end.

 

 

ПРИМЕР 2: Вычислить сумму членов ряда

с точностью до члена ряда, меньшего Е.

 

А Л Г О Р И Т М

 

 

алг Сумма ряда

арг Е: вещ

рез S: вещ

раб Z: вещ, n: цел

Нач

ввод Е

n:=1; Z:=1/6; S:=0;

нцпока I Z I >= E

S:=S+Z;

n:=n+1;

кц

вывод S

Кон

 

П Р О Г Р А М М А

 

program Summa;

var n:integer;

S,Z,E: real;

begin

writeln ('ввести точность');

readln (E);

n:=1; Z:=1/6; S:=0;

While abs(z) >=E do

begin

S:=S+Z;

n:=n+1;

Z:=n/((n+1)*(n+2))

end;

writeln ('S=', S:10:2)

end.

ПОРЯДОК РАБОТЫ

 

1. Разработать алгоритм и программу примера 1 (табл.7).

Выполнить программу, проанализировать результаты.

2. Разработать алгоритм и программу для вычисления суммы с

заданной точностью (табл.8). Получить результат.

 

СОДЕРЖАНИЕ ОТЧЕТА

 

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

 

 

ТАБЛИЦА 7

 

НОМЕР ВАРИАНТА УСЛОВИЕ
  Для выражения определить наименьшее k, при котором значение выражения становится больше заданного числа P.    
  Найти наибольшую степень двойки, не привы-шающую заданного числа n.    
  Вычислить кубический корень из числа m методом Ньтона по формуле: Вычисления продолжать пока не станет меньше заданной точности e.     xn, e, m
  Два параллельных зеркала А и В обращены друг к другу. При падении луча на зеркало А он ослабляется на Т [%], а при его падении на зеркало В – на Р [%]. Определить, после скольких отражений луч, попеременно отражаясь то от зеркала А,то от зеркала В, ослабеет более чем в 50 раз. Первоначально он попадает на зеркало А.   S – сила света
  В водохранилище каждые сутки поступает Т3] воды, а расходуется R3] на орошение полей и испарение, к тому же ежесуточно теряется А (1-EXP(-V))3] воды на просачивание в почву, где А – коэффициент, V – объем воды в водохранилище. Определить, за сколько дней объем воды в водохранилище уменьшится на Р [%] заданного первоначального объема V0.  
  На железнодорожном пути находится N разрозненных вагонов. К ним движется вагон с кинетической энергией W, он сцепляется с ближайшим вагоном, затем вместе с ним движется дальше, сцепляясь с очередным вагоном, и т.д. При каждой сцепке расходуется 20% имеющейся кинетической энергии, еще Р [ Дж ] затрачивается на то, чтобы стронуть с места неподвижный вагон и, если энергия не истрачена полностью, движение продолжается. Определить, сколько вагонов окажутся сцепленными.  
  Найти наибольшую степень 3, не привышающую заданного числа m.  
  Вычислить значения функции для k = 1,2.... Вычисления производить до тех пор, пока у >= z. Вводятся x,y,z.  
  Найти число в последовательности Фибоначчи большее (равное) заданному числу М и его порядковый номер. Члены ряда Фибоначчи вычисляются по формуле: F(1) = F(2) = 1 F(k) = F(k-1) + F(k-2), k > 2  
  Найти наименьшее общее кратное двух чисел. Числа вводятся.  
  Извлечь корень степени m из числа х, воспользовавшись итерационной формулой: Вычисления продолжать пока не станет меньше заданной точности Е. Вводятся m, x, E.  
  Для выражения определить наименьшее k, при котором значение выражения становится больше заданного числа m.  

 

Вычислить сумму членов ряда S с точностью E:

ТАБЛИЦА 8

 

НОМЕР ВАРИАНТА УСЛОВИЕ
     
   
   
   
   
   
   
   
   
   
   
   
   
   

 

 

ЛАБОРАТОРНАЯ РАБОТА 5

 

РАБОТА С ВЕКТОРАМИ

 

 

ЦЕЛЬ РАБОТЫ:

1. Усвоить правила работы с переменными типа

массив языка программирования Паскаль.

2. Научиться составлять алгоритмы и программы

для обработки одномерных массивов.

 

 

КРАТКИЕ СВЕДЕНИЯ ИЗ ТЕОРИИ

 

Под массивом понимается упорядоченная совокупность конечного числа данных одного типа, об"единенных под общим именем. Имена массивов образуются так же, как и имена простых переменных. Одномерный массив называется вектором. Для описания массивов используется служебное слово array. Массив в Турбо-Паскале можно описывать двумя способами:

а) в разделе описания переменных VAR:

var

<имя переменной>: array [тип индекса] of <тип компоненты>;

б) определить сначала тип, а затем описать массив этим типом

type

<имя типа>: array [тип индекса] of <тип компоненты>;

var

<имя переменной>: <имя типа>;

 

где <тип индекса> - порядковый тип;

<тип компоненты> - любой тип.

 

ПРИМЕР 1: В векторе найти номера и значения первого мини-

мального и последнего максимального элементов.

А Л Г О Р И Т М

 

алг Первый минимум и последний максимум

арг n:цел; A:вещ таб [1..n]

рез n min, n max: цел;

a min, a max: вещ

раб i: цел

Нач

ввод n

нцдля i от 1 до n

ввод A[i]

кц

amin:=A[1]; nmin:=1;

amax:=A[1]; nmax:=1;

нцдля i от 2 до n

если A[i] < amin

то amin:=A[i]; nmin:=i

Все

если A[i] >= a max

то amax:=A[i]: nmax:=i

Все

кц

вывод nmin, amin, nmax, amax

Кон

 

П Р О Г Р А М М А

 

program min_and_max;

const n1=100;

var a: array [1.. n1] of real;

n,i,nmin, nmax: integer;

amin, amax: real;

 

 

begin

writeln ('n=');

readln (n);

writeln ('Вводите элементы вектора');

for i:=1 to n do

readln (a[i]);

amin:=a[1]; nmin:=1;

amax:=a[1]; nmax:=1;

for i:=1 to n do

begin

if a[i] < amin then

begin

amin:=a[i]; nmin:=i

end;

if a[i] >= amax then

begin

amax:=a[i]; nmax:=i

end

end;

writeln ('min=', amin:8:3,',nmin=', nmin:3);

writeln ('max=', amax:8:3,',nmax=', nmax:3);

end.

 

ПРИМЕР 2: Создать массив из N случайных целых чисел, равно-

мерно распределенных в диапазоне от 0 до 100.

Вычислить среднее арифметическое этих чисел.

 

 

А Л Г О Р И Т М

 

алг Среднее арифметическое

арг n:цел;

рез m: цел таб [1..n];

s: вещ

раб i: цел

Нач

ввод n

нц для i от 1 до n

m[i]:=random(101)

вывод m[i]

кц

s:=0;

нцдля i от 1 до n

s:=s+m[i]

кц

s:=s/n;

вывод s

Кон

П Р О Г Р А М М А

 

program SRED;

const

nmax=1000;

type

x=array [1.. nmax] of integer;

var

m:x;

i,n:integer;

s:real;

begin

writeln ('n='); readln(n);

{создание массива}

for i:=1 to n do

begin

m[i]:=random (101);

writeln (m[i])

end;

s:=0;

for i:=1 to n do

s:=s+m[i];

s:=s/n;

writeln ('s='s)

end.

ПОРЯДОК РАБОТЫ

 

1. Разработать алгоритм и программу примера 1 (табл.9).

Вектор вводить с клавиатуры.

2. Разработать алгоритм и программу примера 2 (табл.10).

Вектор сформировать из случайных целых чисел.

 

 

СОДЕРЖАНИЕ ОТЧЕТА

 

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

 

ТАБЛИЦА 9

 

НОМЕР ВАРИАНТА УСЛОВИЕ
    Даны два вектора целых чисел А и В. Вычислить вектор С, который содержит нечетные элементы вектора А, которых нет в векторе В.    
  Расположить элементы вектора в обратном порядке. Дополнительный массив не использовать.    
  Найти среднее арифметическое элементов массива х(n), исключив из них максимальное и минимальное значение.    
  Вектор B(n) заменить вектором, у которого элементы образуются делением вектора В на их сумму.    
  Заменить все элементы вектора x(m), стоящие до максимального, нулями.    
  В массиве R(k) найти минимальный элемент среди положительных и максимальный среди отрицательных.    
  В массиве Z(n) заменить все его элементы, стоящие после минимального, нулями.    
  Даны массив A(n) целого типа и целое число х. Произвести перестановку элементов массива так, чтобы в начале массива стояли элементы, значения которых меньше х, затем элементы, равные х, а следом элементы, значения которых больше х.    
  На плоскости на расстоянии s [1], s [2],..., s [10] от центра кругового кольца с внутренним радиусом r и внешним R расположены точки. Определить количество точек, расположенных внутри кольца.    
  Дан вектор Х. Все его элементы не равные нулю, переписать (сохраняя их порядок) в начало массива, а нулевые элементы – в конец массива (новый массив не заводить).    
  Даны два вектора А и В. Сформировать вектор С, который содержит элементы, присутствующие в обоих массивах.    
  Имеется n окружностей с центром в начале координат и радиусами R [1], R [2],..., R [ n ]. Определить номера окружностей между которыми находится точка с координатами (х,у).  
  В векторе х(n) поменять местами максимальный и последний элементы.    
  В векторе Н(m) поменять местами максимальный и минимальный элементы.    

ТАБЛИЦА 10

 

НОМЕР ВАРИАНТА УСЛОВИЕ
    Вычислить среднее геометрическое элементов вектора Т(k), кратных трем.    
  Определить кратна ли сумма элементов вектора A(x) семи.    
  В векторе D(m) определить количество четных элементов.    
  В векторе N(k) поменять местами первый и минимальный элементы.    
  Из вектора С(n) сформировать вектор А, содержащий четные элементы вектора С и вектор В, содержащий нечетные элементы.    
  Произвести сдвиг элементов вектора A (6) на k позиций влево так, что на место a [1] станет a [ k +1], на место a [ n -k] станет a [ n ], на место a [ n - k +1] станет a [1], на место a [ n - k +2] станет a [2]. При k = 3.    
  Найти среднее геометрическое элементов массива С [ k ], стоящих на четных местах.    
  В массиве x(n) поменять местами минимальный и последний элементы.    
  В векторе Т (k) заменить все его элементы, стоящие после максимального, нулями.    
  Элементы вектора В, удовлетворяющие условию B [ i ]>10, переписать в массив х, а элементы, удовлетворяющие условию B [ i ] <= 10, переписать в массив Y.    
  В векторе Z(m) определить сумму нечетных элементов.    
  Определить индексы четных элементов массива А(k).    
  Определить кратна ли сумма элементов вектора D (12) пяти.    

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-05-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: