Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Кафедра Информационных систем и технологий





УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ

«БАРАНОВИЧСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

____________________________________________________________

Кафедра Информационных систем и технологий

 

 

Виноградова И.М.

 

 

«ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ»

Методические указания и задания к лабораторным работам

для студентов 1-го курса дневной формы обучения

Инженерных специальностей

 

часть 1

 

 

Барановичи 2006


УДК 681.3

 

Составитель: И.М.Виноградова

Рецензенты: к.ф.-м.н. Д.А.Ционенко, магистр естественных наук С.Г.Скобля

 

 

Рекомендованы к изданию методической комиссией инженерного факультета», (протокол № 2 от 01.10.2006 г.)

 

 

 

Лабораторный практикум по дисциплине «Основы алгоритмизации и программирование» представляет собой сборник лабораторных работ. Каждая работа содержит в себе методические указания по программированию на языке Паскаль, двенадцать вариантов заданий и контрольные вопросы по каждой теме. Большинство лабораторных работ снабжено примерами решения задач.

 


Содержание

 

Лабораторная работа № 1Программирование линейных алгоритмов 4

Лабораторная работа № 2 Программирование разветвляющих алгоритмов 7

Лабораторная работа № 3 Программирование циклических алгоритмов. 11

Лабораторная работа № 4 Обработка одномерных массивов. 19

Лабораторная работа № 5 Обработка матриц. 22

Лабораторная работа № 6 Организация с использованием подпрограмм. 26

Лабораторная работа № 7 Программирование с использованием строк.. 35

Лабораторная работа № 8 Программирование с использованием записей. 38

Лабораторная работа № 9 Программирование с использованием файлов. 40

Лабораторная работа № 10 Программирование с использованием множеств 51

Лабораторная работа № 11 Графика 57

Приложение 1. 63

Приложение 2. 64

Приложение 3. 67

Приложение 4. 68


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

ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ

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

Задания для самостоятельной подготовки:

· Изучить: запись констант, переменных, функций, правила записи арифметических выражений, арифметический оператор присваивания, организацию простейшего ввода-вывода данных.

· Разработать алгоритм решения в соответствии с заданием.

· Составить программу решения задачи.

· Подготовить тестовый вариант исходных данных и вычислить для них вручную или с помощью микрокалькулятора значения вычисляемых в программе величин.

Пример выполнения работы.

program корни;

var b, c, d: real;

begin

read(b, c);

d: =sqrt(sqr(b)-4*c);

writeln(‘x1=’,(-b+d)/2,’ x2=’,(-b-d)/2)

end.

Задание к работе

Вычислить на ЭВМ значения переменных, указанных в таблице (вариант задается преподавателем), по заданным расчетным формулам и наборам исходных данных. На печать завести значения вводимых исходных данных и результаты вычислений, сопровождая вывод наименованиями выводимых временных.

Вариант задания Расчётные формулы Значение исходных данных
  х=1,426 y=-1,220 z=3,5
  x=1,825 y=18,225 z=-3,298
  x=0,335 y=0,025
    y= a= - 0,5 b=1,7 t=0,44
  w= a=1,5 b=15,5 x= - 2,9
    s= Q= a=16,5 b=3,4 x=0,61
    R=x2(x+1)/b-sin2(x+a) S= +cos2(x+b)3 a=0.7 b=0.05 x=0.5

 

 

Продолжение таблицы

    y=sin3(x2+a)2- z=x2/a+cos(x+b)3 a=1.1 b=0.004 x=0.2
    f= z=mcos(btsint)+c m=2 c=-1 t=1.2 b=0.7
    y=btg2x-a/(sin2(x/a)) d=ae cos(bx/a) a=3.2 b=17.5 x=-4.8
    f=ln(a+x2)+sin2(x/b) z=e-cx(x+ )/x- a=10.2 b=9.2 x=2.2 c=0.5
    y=(a2x+b-xcos(a+b)x)/x+1 R= -b2sin3(x+a)/x a=0.3 b=0.9 x=0.61

 

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

1. Какую конструкцию имеет программа на Паскале?

2. Опишите основные элементы интерфейса интегрированной среды разработки Borland Pascal.

3. Какими командами осуществляется сохранение и открытие файла программы, сохранение под новым именем? Как изменить каталог?

4. Какие типы величин используются в языке программи­рования?

5. Указать диапазон значений величин целого и действи­тельного типов.

6. Какие имена переменных допустимы в программе? Как задать тип переменной в программе? Указать имена стандартных функций для вычисления.

5. Можно ли в качестве операнда в арифметическом выражении использовать: а) имя массива; б) имя стандартной функции, например SIN (Y); в) имя символьной перемен­ной или переменной логического типа?

6. Назвать последовательность действий при выполнении арифметического оператора присваивания. Допустимо ли использование величин разных типов в арифметическом выражении?

7. Написать арифметический оператор присваивания для вычисления значения

P(x) =((((

8. Указать старшинство выполнения операций при вычислении арифметического выражения.

9. Указать средства, имеющиеся в языке программирования для управления размещением данных на строке. Как организовать вывод значений, сопровождая выводимое числовое значение наименованием переменной? Как организовать пропуск одной, двух строк при выводе?

10.Как выбрать значения исходных данных для тестового варианта счета?

 

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

Пример выполнения работы.

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


Блок-схема.

 

Ниже приведен один из вариантов программы

program MaPr;

var

A,B,D:real;]

begin

Writeln(‘ Введите исходные данные’);

Readln(A,B);

if A*B<0 then D:=Ln(Sqr(A*B))

if A*B>0 then D:=Ln(A*B);

if A*B=0 then D:=0;

Writeln(‘ D=’,D)

end.

Задания

1. Вычислить значение функции заданной в таблице (в соответствии с вариантом задания). Осуществить вывод значений вводимых исходных данных и результат вычисления значения функции, сопровождая вывод наименованиями переменных.

2. Выполнить программу на ЭВМ и протестировать все ветви алгоритма.

Таблица – Варианты заданий

Вариант Функция Условие Исходные данные
 
 
 
 

Продолжение таблицы

 
 
 
 
 
 
 

 

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

1. Перечислить действия, реализуемые при выполнении условного оператора.

2. Какие действия выполняются оператором перехода?

3. Что такое вычислительный процесс разветвляющейся структуры? Как организовать разветвление вычислений:

а) на две ветви?

б) на три ветви?

4. Составить последовательность операторов для вычисления величины z = 0, если х <—2; z = l, если — 2<x<2; z= — 1, если х>2.

5. Зачем необходимо при отладке программы тестировать все ветви алгоритма?

6. Объясните работу оператора Case.

 

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

Блок-схема.

Пример программы.

Найти сумму первых n двузначных чисел, кратных 11 (n вводится с клавиатуры).

 

Program Pr1;

var n,s,a,i:integer;

begin

Write('Введите количество чисел n = ');

Readln(n); {вводится количество чисел}

s:=0; a:=10; i:=0; {присваиваются начальные значения}

repeat

if a mod 11=0 then begin {если число делится на 11 без остатка, то}

s:=s+a; {оно прибавляется к сумме}

i:=i+1 {и счётчик чисел увеличивается на 1}

end;

a:=a+1; {берётся следующее двузначное число}

until (i=n)or(a>99); {выход из цикла, если достигнуто нужное количество

чисел, или если проверены все двузначные}

writeln('Искомая сумма = ',s); {выводится результат}

readln {ожидается нажатие Enter}

end.

 

Задание 2. Оператор while.

Написать программу, вычисляющую значения функции с точностью до 3-х знаков после запятой на заданном отрезке с заданным шагом и выводящую результаты вычислений в виде таблицы, состоящей из двух столбцов – столбца, содержащего значения аргумента и столбца, содержащего значения функции. Значения концов отрезка и шага должны вводиться с клавиатуры.

Таблица – Варианты заданий

 

Вариант Функция Отрезок Шаг
  [0o;360o] 20o
  [0o;180o] 15o
  [-6;5]  
  [-2;2] 0,5
  [-90o;90o] 20o
  [0;10]  
  [-1;1] 0,25
  [-10;20]  
  [0;p]
  [0; ]
  [90o;270o] 30o
  [-p;p]

 

Пример программы.

Написать программу, вычисляющую значения функции с точностью до 2-х знаков после запятой на отрезке [-10;4] с шагом 2 и выводящую результаты вычислений в виде таблицы, состоящей из двух столбцов – столбца, содержащего значения аргумента и столбца, содержащего значения функции. Значения концов отрезка и шага должны вводиться с клавиатуры.

Блок-схема.

 

Program Pr2;

var a,b,h,x,y:real;

begin

writeln('Введите значения концов отрезка:');

readln(a,b); {вводятся концы отрезка}

writeln('Введите шаг:');

readln(h); {вводится шаг}

writeln('-------------------'); {формируется заголовок таблицы}

writeln(' x | y ');

writeln('-------------------');

x:=a; {х присваивается значение начала отрезка}

while x<=b do begin {цикл выполняется пока х≤b}

y:=x/2+1; {вычисляется функция у}

writeln(x:6:2,' | ',y:6:2); {выводятся х и у с заданной точностью}

x:=x+h {берётся следующее значение х}

end;

writeln('-------------------'); {подчёркивается таблица}

readln

end.

Задание 3. Оператор for.

Написать программу, вычисляющую сумму элементов предложенного ряда для n >2. Значения n и х должны вводиться с клавиатуры.

Таблица – Варианты заданий

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

Продолжение таблицы

 
 
 
 
 
 
 

Блок-схема.

Пример программы.

Написать программу, вычисляющую сумму элементов ряда

для n >2.

Значения n и х должны вводиться с клавиатуры.

Program Pr3;

var x,s,a:real;

n,i:integer;

begin

writeln('Введите x и n:');

readln(x,n); {вводятся значения х и n}

s:=1; a:=1; {задаются начальные значения суммы и первого слагаемого}

for i:=1 to n do begin

a:=a*(-1/x); {вычисляется следующее слагаемое}

s:=s+a {и прибавляется к сумме}

end;

writeln('Искомая сумма = ',s:4:2); {выводится результат}

readln

end.

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

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

2. Как записывается и как работает оператор FOR?

3. В чем отличие оператора WHILE от оператора REPEAT?

4. Как программируются циклические алгоритмы с явно заданным числом повторений цикла?

5. Как программируются циклические алгоритмы с незаданным числом повторений цикла?

6. Для организации каких циклов, применим оператор FOR?

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

Задание 1

Выполните задания в соответствии с вариантом, указанным преподавателем.

Программа должна:

· запрашивать элементы массива;

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

· выводить найденную сумму или произведение;

· выводить исходный и полученный (ые) массивы.

 

 

1. Обработать на ЭВМ массив в соответствии с вариантом задания, указанного в таблице.

Таблица – Варианты заданий

Вариант Массив Действия Условия и ограничения
1. X(100) Вычислить сумму и количество элементов массива X 0≤xi≤1
2. N(15) Определить минимальный,кратный 5 элемент массива и его индекс. ni<0
3. X(70) Переписать элементы массива X в массив Y и подсчитать их количество -1≤xi≤1
4. X(N) Переписать подряд в массив Y положительные и в массив Z отрицательные элементы массива X N≤40
5. C(K) Определить минимальный элемент массива C и его порядковый номер -1≤Сi≤1, K≤20
6. D(80) Найти максимальный и минимальный элементы массива D и поменять их местами -
7. Y(20) Определить минимальный чётный элемент массива и его индекс. yi>0
8. Z(30) Расположить в массиве R сначала положительные, а затем отрицательные элементы массива Z -
9. N(50) Определить сумму элементов массива N, кратным трем ni/3*3= ni
10. X(N) Вычислить сумму и количество элементов массива X xi>0, N≤30
11. A(N) Найти среднее геометрическое элементов массива A ai>0, N≤50
12. X(N) Переписать в массив Y подряд положительные элементы массива X xi>0, N≤40

Задание 2

Выполните задания в соответствии с вариантом, указанным преподавателем.

Программа должна:

· запрашивать элементы массива;

· выводить значения функции выводить в виде таблицы, состоящей из двух колонок (одна – для значений элементов массива, другая – для значений функции);

Таблица – Варианты заданий

Вари-ант Действия
  Ввести массив H[1..4] и число A. Для каждого элемента массива вычислить функцию .
  Ввести массив A[0..5] и число P. Для каждого элемента массива вычислить функцию .
  Ввести массив T[1..4] и число g. Для каждого элемента массива вычислить функцию .  
  Ввести массив F[0..6] и число C. Для каждого элемента массива вычислить функцию .
  Ввести массивы T[1..4] и С[1..4]. Для каждого T[i] и С[i] вычислить функцию .
  Ввести массивы Z[0..3] и A[0..3]. Для каждого Z[i] и A[i] вычислить функцию .
  Ввести массив B[1..5] и число V. Для каждого элемента массива вычислить функцию .

Продолжение таблицы

  Ввести массив L[1..4] и число P. Для каждого элемента массива вычислить функцию .  
  Ввести массив X[1..4] и число Y. Для каждого элемента массива вычислить функцию .
  Ввести массив A[1..5] и число Z. Для каждого элемента массива вычислить функцию .
  Ввести массив K[1..4] и число A. Для каждого элемента массива вычислить функцию .
  Ввести массив Z[1..5] и число C. Для каждого элемента массива вычислить функцию .

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

1. Указать особенности программ, использующих массивы.

2. Какие операторы языка можно использовать для описания массивов?

3. В чем состоит особенность организации цикла при обработке массивов?

4. В чем состоит особенность использования приемов программирования при обработке массивов?

5. Указать особенности ввода и вывода массивов.

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

ОБРАБОТКА МАТРИЦ

Цель работы — овладение навыками алгоритмизации и программирования структур с вложенными циклами, навы­ками использования приемов программирования во вложен­ных циклах, способами ввода и вывода матриц.

Задания для самостоятельной подготовки

1. Изучить:

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

- правила использования приемов программирования в структурах с вложенными циклами;

- способы ввода и вывода матриц, имеющиеся в языке программирования.

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

3. Составить программу решения задачи.

4. Подготовить тестовый вариант программы и исходных данных.

Пример выполнения работы

Задание 1. Выполнить на ЭВМ решение задачи. Записать в массив В (N, KMAX) положительные элементы строк матрицы A (N, M) (N<20, M<10) до первого отрицательного, где КМАХ — наибольшее значение числа положительных элементов в строке до первого отрицательного. Вывести на печать сформированную матрицу В. На печать выводить только те элементы, которые записаны в матрицу В.

PROGRAM LR6

LABEL 10;

CONST N=20; M=10;

VAR I, J. NR, MR, K, KMAX: INTEGER;

A, B: ARRAY [1.. N, 1.. M] OF REAL;

BEGIN

WRITELN(‘ ВВЕДИТЕ ЗНАЧЕНИЕ NR. MR*);

READ (NR, MR);

WRITELN(‘ ВВЕДИТЕ ЗНАЧЕНИЯ MАССИВА А');

FOR I: = 1 TO NR DO

FOR J: = 1 TO MR DO

READ(A[I, J]);

KMAX:=О;

FOR I: = 1 TO Nr DO

BEGIN

K: =0;

FOR J: = 1 TO MR DO

IF A[I,J]>=0THEN

BEGIN K:=K+1; В[I,J]: =A[I.,J] END;

ELSE

BEGIN В[I,J]: = -l; GOTO 10 END;

1O:

IF К>KМАХ THEN KMAX:=K;

END;

FOR I:=1 TO NR DO

FOR J:=1 TO KMAX DO

IF B[I, J]>O THEN WRITE(B[I, J))

ELSE WRITELN;

END.

Задание к работе

1. Обработать на ЭВМ матрицу в соответствии с вариантом задания, указанного в таблице. Вывести на печать результаты и исходную матрицу в общепринятом виде.

2. Проверить правильность выполнения программы с помощью тестового варианта.

Таблица – Варианты заданий

Вариант задания Имя матрицы и размеры Действия Условия и ограничения
  А (10, 15) Вычислить и запомнить сумму и число положительных элементов каждого столбца Результат распечатать в виде двух строк матрицы. аi,j> 0
  A(N,M) Вычислить и запомнить суммы и числа положительных элементов каждой строки матрицы. Результаты отпечатать в виде двух столбцов N<20 М<15
  В (N, N) Вычислить сумму и число элементов матрицы, находящихся под главной диагональю и на ней N<12
  С (N, N) Вычислить сумму и число положительных элементов матрицы, находящихся над главной диагональю Сi,j> 0 N<12  
  D (К, К) Записать на место отрицательных элементов матрицы нули и вывести ее на печать в общепринятом виде К<10
  D (10, 10) Записать на место отрицательных элементов матрицы нули, а на место положительных — единицы. Вывести на печать нижнюю треугольную матрицу в общепринятом виде  
  F(N,.M) Найти в каждой строке матрицы максимальный и минимальный элементы и поместить их на место первого и последнего элемента строки соответственно. Матрицу напечатать в общепринятом виде N<20 М<10
  F(10, 8) Транспонировать матрицу и вывести на печать элементы главной диагонали и диагонали, расположенной под главной. Результаты разместить в двух строках  
  N(10, 10) Для целочисленной матрицы найти для каждой строки число элементов, кратных пяти, и наибольший из полученных результатов Ni,j/5*5 = Nij
  N(10, 10) Из положительных элементов матрицы N сформировать матрицу М (10, КМАХ), располагая их в строках матрицы подряд, где КМАХ — макси­мальное число положительных элементов строки матрицы N. Записать нули на место отсутствующих элементов. Отпечатать обе матрицы в общепринятом виде  
  P (N,N) Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали. Отпечатать полученную матрицу в общепринятом виде N≤ 15
  R (K,N) Найти наибольший и наименьшие элементы матрицы и поменять их местами K≤ 20 N≤ 10
                 

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

1.Указать основные правила организации вложенных циклов.

2. Указать способы выхода из внутреннего цикла.

3. Сколько раз выполняются операторы- К = 0 и К=К +1 в программе примера?

4. Как организовать вывод матрицы в общепринятом виде?

5. Как организовать вывод нижней треугольной матрицы в общепринятом виде?

6. Как организовать ввод матрицы размером NxM элементов?

 

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

Задание1

Используя подпрограмму Function построить схему машинного алгоритма и составить Паскаль-программу решения задачи по варианту.

Методические указания

Для выполнения задания следует ознакомиться приведенной ниже программой РР92, которая вводит вещественные значения аргументов X и Y, вычислить

Р(Х,У) по формуле F(Х,У)=(Х+У)-5 - (X - 2*У)3

и выводит на печать полученный результат. При этом для возведения вещественного числа А в целую степень В используется функция СТЕП.

Рrogram pp;

var x, y, fxy: real;

function степ (a: real; b: integer): real;

var rab:real;

absb: integer;

begin

rab:=1; absb:= abs(b);

while absb>0 do

begin

rab:=rab*a:

absb:=absb-1

end;

if b<0 then rab:=1/rab;

степ:=rab

end;

begin

writeln(‘вводи данные’);

readln(x,y);

fxy:= степ(x+y,-5)- степ(x-2*y,3);

writeln(‘для x=’, x:6:3, ‘y=’, y:6:3, ‘значение f(x,y)=’, fxy:6:3)

end.

Протокол работы программы:

ВВОДИ ДАННЫЕ

2.0 -1.0

ДЛЯ Х= 2.000 И У=-1.000 ЗНАЧЕНИЕ Р(Х,У)=-63.000

Варианты задания

Вариант задания   Условия задачи   Примечания
1. Вычислить Z-сумму значений функций Z=f(a,b)+f(a2,b2)+(a2-1,b)+f(a-b,b)+f(a2+b2,b2-1), Где F(u,t)= a) = 2,5; = -7,3; б) = -0,5; = 4,2; в) = -0,2; = -0,42; г) =23,7; = 41,2;  
2. Вычислить Z-сумму значений функций z=f(sin ,a)+f(cos ,a)+f( ,a-)+ f(sin -cos , -1)+f( -1,cos +a), где F(u,t)= a) = ; а= -2,1; б) = 2,3; а= 21,3; в) = - ; а= -0,2; г) = ; а= 31,2;  

Продолжение таблицы

3. Вычислить Z-сумму значений функций z=f(,y)+f(a,b)+f( +1,-y)+ f(,x)+f(x+y,a+b), F(u,t)= a) x=2,31; y=4,2; a=3,1; b=0,02; б) x=-4,21; y=-31,2; a=1,2; b=-3,2; в) x=0,34; y=17,2; a=-4,6; b=-0,44 г) x=-14,2; y=0,32; a=7,2; b=4,7
4. 1. Вычислить Z-сумму значений функций z=f(sin(x)+cos(y),x+y)+f(sin(x),cos(y))+ f(x-y,x)+f( (x)-2,a)+f(a+3,b+1), где F(u,t)= a) x= ; y=0б41; a=0,1; b=-2,1; б) x=0,32; y= ; a=-0,21; b=4,2; в) x=19,2; y=0,48; a=-4,3; b=-6,1; г) x= ; y=2/3; a=17,1; b=0,2.
5. Вычислить большие корни квадратных уравнений x2-ax+b=0 cx2-dx-f=0 Все корни действительные
6. Подсчитать число точек, находящихся внутри круга радиусом r с центром в начале координат; координаты заданы массивами X(100), Y(100) Расстояние точки от начала координат вычислять в подпрограмме
7. Определить периметры треугольников, заданных координатами их вершин XA(5), XB(5), XC(5), YA(5), YB(5), YC(5) Длину стороны треугольников вычислять в подпрограмме

 

Продолжение таблицы

8. Подсчитать число точек, находящихся внутри круга радиусом r с центром в точке с координатами (1, 1); координаты заданы массивами X(80), Y(80) Расстояние точки от центра круга определять в подпрограмме
9. Вычислить z=(V1+V2+V3)/3, где V1, V2, V3– объемы шаров с радиусами r1, r2, r3 соответственно Vi вычислять в подпрограмме
10. Вычислить суммы положительных элементов массивов X(N), Y(M), Z(K) N<=60. M<=60 K<=70
11. Вычислить среднее арифметическое положительных элементов для массивов A(N1), B(N2), C(N3) N1<=100 N2<=100 N3<=100
12. Подсчитать количество элементов матриц X(10,15) и Y(20,12), удовлетворяющих условиям 0 <=Xi,j<=1 и 0<=Yi,j <=1  

Задание 2.

Используя подпрограмму Procedure построить схему машинного алгоритма и составить Паскаль-программу решения задачи по варианту.

Методические указания

Решить на ЭВМ задачу. Переписать положительные элементы массивов X(N), Y (М) в массив Z подряд Запись положительных элементов в массив осуществить в подпрограмме. Принять ограничения: М<=100 и М=< 100.

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

Поскольку в массив результатов Z записываются подряд положительные' элементы из нескольких массивов, в списке параметров должны фигурировать также: входной параметр

L — номер ячейки, начиная с которой необходимо осуществлять запись в массив результатов; выходной параметр

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

|При первом обращении к подпрограмме в нее необходимо передать, имя массива X. Количество его элементов N; входной параметр L=l, если запись осуществляется в массив Z, начиная с элемента с индексом 1, имя выходного массива Z, то его элементов N + M. и получать в подпрограмме выходной параметр К, определяющий количество элементов, в массив Z.

При втором обращении необходимо передать соответственно Y, M, L=K+ I, Z, N + M, К.

После второго обращения к подпрограмме К — суммарное количество элементов, записанных в массив Z после двух выполнений подпрограммы.

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

 

program sort;

const nn=100;

type mas:array[1..n] of real;

var i,n,m:integer;

x,y,z:mas;

procedure st (var a,c: mas; n, l, k:integer);

var j:integer;

Begin

k:=l;

for j:=l to n do

if a[j]>0 then

Begin

k:=k+1;

c[k]:=a[j]

end;

end;

Begin

write(‘Ввeдите значения nr и mr');

read(nr,mr);

write(‘Ввeдите значения массива x');

for i:= l to nr do read (x[i]);

write(‘Ввeдите значения массива y');

for i:=l to mr do read(y[i]);

st(x,nr,o,z,nr+mr,k);

st{y,mr, k,z,nr+mr,k);

for i:=1 to к do

write(z[i]);

end.

 

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

Варианты задания

1. Выполнить на ЭВМ программу, использующую подпрограмму-процедуру в соответствии с номером, указанным в таблице

Вариант Условие задачи Примечания
  Вычислить , где s1 и k1- сумма и количество положительных элементов массива X (N); s2 и k2 — сум­ма и количество положительных эле­ментов массива Y (М) M ≤ 100 N ≤ 100
  Вычислить , где s1 и k1- сумма и количество положительных элементов массива X (100); s2 и k2 — сум­ма и количество отрицательных эле­ментов массива Y (80)   Обе суммы вычислять в одной подпрограмме
  Вычислить и запомнить суммы поло­жительных элементов каждой строки матрицы А (10, 20), В (15, 10)  
  Вычислить z = (x1+y1)/(x2 - y2), где x1 и х2 — корни уравнения 2х2 +х - 4 = 0, у1 и y2 — корни уравнения ay2 + 2y - 1=0   Все корни действительные
  Найти наибольшие элементы и их по­рядковые номера массивов X (N) и Y (M) N≤80 М≤70
  Переписать положительные элементы массива Х(100) и Y (80) в массив Z подряд Запись в массив Z осуществлять в подпрограмме
  Найти наименьшие элементы и номера строк и столбцов, в которых они расположены, для матриц А (10, 15) и В (15, 12)  
  Вывести на печать элементы цело­численных матриц N(5,8) и М(10, 6), кратные трем  

Продолжение таблицы

  Вычислить , где xi и yi, заданы массивами.   Все суммы вы­числять в одной подпрограмме
  Вычислить Прокрутить вверх





Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...

ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры...

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...

ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.