Цикл-до и оператор REPEAT.




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

Выбор и оператор CASE.

 

Эта структура обеспечивает выбор одного из ряда возможных действий, в зависимости от значения, которое принимает выражение (условие) Р. Количество значений, принимаемых Р, должно быть конечным. В Турбо-Паскале эта конструкция реализуется оператором выбора CASE, имеющим следующий формат: CASE выражение OF константы: оператор 1; константы: оператор 2; ---------------------------- константы: оператор К ELSE оператор; END;

Выражение, стоящее после CASE, называется селектором, и соответствует выражению Р в управляющей структуре. Селектор может иметь любой скалярный тип, кроме REAL. Константы соответствуют значения Р1, Р2, Р3, …, РК.

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

Модификация и оператор FOR.

Эта конструкция обеспечивает повторение действия А заданное число раз. При каждом повторении цикла величина К, называемая параметром цикла, увеличивается (или уменьшается) на 1. Выход из цикла происходит тогда, когда величина К превзойдет значение N, которое определяет число повторений цикла. В Турбо-Паскале эта конструкция реализуется оператором цикла FOR, который имеет один из следующих форматов: FOR К:=N1 TO N2 DO оператор FOR К:=N1 DOWNTO N2 DO оператор

Здесь К – параметр цикла, который может иметь любой скалярный тип, кроме REAL; N1; N2 – соответственно, начальное и конечное значение параметра цикла. Оператор соответствует действию А: если для реализации действия необходимо больше одного оператора, операторы оформляются как составной оператор.

В первом случае параметр К при каждом повторении цикла увеличивается на +1 и значение N1 должно быть меньше или равно N2; во втором случае параметр К при каждом повторении цикла изменяется на –1 и значение N1 должно быть больше или равно N2.

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

 

 

ПРАКТИЧЕСКАЯ ЧАСТЬ.

 

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

 

ЗАДАНИЕ 1.

 

Разработь схему и программу на языке Турбо-Паскаль задачи табулирования функции:

 

 

заданной на отрезке [А, В], шаг приращения аргумента DX.

Для контрольного примера взять следующие значения аргумента:

А = -0,6; В = 3,4; Т = 1,2

D = 0,25.

Алгоритм решения этой задачи включает в себя следующие этапы:

- ввод исходных данных, в качестве которых выступают А, В – границы интервала табулирования функции, DX – приращение аргумента и Т;

- задание начального значения аргумента функции Х = А;

- организация цикла с помощью структуры повтор (цикл-пока), которая реализуется в программе оператором WHILE;

- тело цикла включает следующие действия:

1. Вычисление значения функции, которая реализуется управляющей структурой развилка;

2. Печать значений аргумента и функции;

3. Приращение значения аргумента Х на величину DX.

- после выполнения тела цикла управление передается на начало цикла, где проверяется условие повторения цикла.

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

 

 

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

 

В схеме необходимо обратить внимание на следующее:

1. Блок 4 реализует проверку условия повторения цикла и будет реализовываться оператором WHILE;

2. Блок 5 и 7 проверяют, в каком диапазоне значений находится величина аргумента Х (для выбора соответствующей формулы для вычисления Y) и реализуется в программе оператором IF.

Текст программы решения задачи на языке Турбо-Паскаль и результаты расчетов приведены ниже.

 

PROGRAM TAB;

USES CRT;(*УКАЗАНИЕ БИБЛИОТЕЧНЫХ МОДУЛЕЙ*)

VAR A,B,DX,T:REAL;

X,Y:REAL;

BEGIN

(*НАЧАЛО РАЗДЕЛА ОПЕРАТОРОВ*)

CLRSCR;

WRITELN('ВВЕДИТЕ ГРАНИЦЫИНТЕРВАЛА [A,B],ШАГ DX-');

READLN(A,B,DX);

WRITELN('ВВЕДИТЕ ЗНАЧЕНИЕ T');

READLN(T);

(*ВЫВОД ЗАГОЛОВКА ТАБЛИЦЫЗНАЧЕНИЙ ФУНКЦИИ НА ДИСПЛЕЙ*)

WRITE('ТАБЛИЦА ЗНАЧЕНИЙ ФУНКЦИИ');

WRITELN;

(*НАЧАЛЬНОЕ ЗНАЧЕНИЕ А*)

X:=A;

WHILE X<=B DO

BEGIN

(*ВЫЧИСЛЕНИЕ И ВЫВОД Y В ЗАВИСИМОСТИ ОТ УСЛОВИЯ*)

IF X<1 THEN Y:=SQRT(T+SQR(LN(ABS(X))))

ELSE IF X<=2.3 THEN Y:=T*SQR(SIN(X+1))

ELSE Y:= EXP(1/3*(2*X+T));

(*ПЕЧАТЬ ТАБЛИЦЫЗНАЧЕНИЙ ФУНКЦИИ НА ДИСПЛЕЙ*)

WRITELN (X:5:2,' ':5,Y:5:2);

(*ПОЛУЧЕНИЕ НОВОГО ЗНАЧЕНИЯ АРГУМЕНТА*)

X:=X+DX;

END;

(*КОНЕЦ ЦИКЛА*)

READLN;

END.

 

ЗАДАНИЕ 2.

 

Составить с объяснениями блок-схему и циклическую программу вычисления значения конечных сумм (произведений):

 

 

при Х = 0;3

с использованием оператора FOR DO.

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

Обычно формула общего члена суммы принадлежит к одному из следующих трех типов:

а)

 

б)

 

в)

 

В случае а) для вычисления суммы целесообразно использовать рекуррентные соотношения, т.е. выражать последующий член суммы через предыдущий. Это позволяет существенно сократить объем вычислительной работы. Кроме этого, вычисления члена суммы по общей формуле в ряде случаев невозможно (например, из-за наличия n!).

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

В случае в) член суммы целесообразно представить в виде двух сомножителей, один из которых вычисляется по рекуррентному соотношению, а другой непосредственно. Например, в нашем случае, если:

 

 

 

и вычисляем рекуррентно:

 

 

 

 

а Sin(nx) вычисляем непосредственно. Таким образом, для члена суммы имеем:

 

 

Алгоритм решения задач суммирования при значениях параметра суммирования, изменяющегося в некотором диапазоне (n = 2,8) с заданным шагом (в нашем случае шаг равен 1), сводится к циклу, когда при каждом прохождении цикла номер члена суммы изменяется на 1, а сумма изменяется на ее n-ый член, т.е.:

 

 

Sn и Sn-1 – сумма n и n-1 членов.

Формула (1) применяется многократно при n = 2, 3, 4, …, 8. При этом S1 = 0 (не просуммировано ни одного элемента), S – искомое значение суммы 8 элементов.

Блок-схема алгоритма решения задачи 2 имеет вид:

 

При составлении блок-схемы и программы нет необходимости использовать переменные с индексами Sn, Un и m.n,, поскольку одновременно в вычислениях участвуют лишь 2 значения Sn и Sn-1, Cn и Cn-1, Pn и Pn-1, Fn и Fn-1. Конечным результатом является сумма всех элементов, и значения суммы одного, двух, трех и т.д. элементов запоминать не требуется. В таком случае можно использовать простые переменные, значения которых будут изменяться каждый раз при вычислении очередного элемента суммы. При этом в формулах: с:=-с, р:=р(х+1)2, F:=F(n+1) (блок 4) и S:=S+U (блок 5) переменные С, Р, F и S справа и слева имеют разные значения: справа предыдущие (Cn-1, Pn-1, Fn-1, Sn-1), слева текущие (Cn, Pn, Fn, Sn).

Так как значение шага параметра цикла n равно1, в программе рационально использовать оператор FOR DO, который отражается на блок-схеме блоком модификации (блок 3). Пока значение n изменяется от 2-х до 8-ми с шагом 1 (шаг не указывается), происходит выполнения цикла, т.е. вычисления в блоках 4 и 5. Когда n превышает 8 (становится равным 9), осуществляется выход из цикла, печать результата блок 6 и конец программы – блок 7.

Особое внимание следует обратить на блок 2, где задаются начальные значение переменных С и Р, такие, чтобы при n = 2 они имели следующие значения: С = -1, Р = (х+1)4, F = 3.

Программа решения задачи 2 на языке Турбо-Паскаль и результат вычислений приведены ниже:

 

PROGRAM CIKL1;

(*ВЫЧИСЛЕНИЕ СУММЫЗАДАННОГО ЧИСЛА ЭЛЕМЕНТОВ РЯДА*)

USES(*УКАЗАНИЕ БИБЛИОТЕЧНЫХ МОДУЛЕЙ*)

CRT;

VAR (*РАЗДЕЛ ОПИСАНИЯ ПЕРЕМЕННЫХ*)

X,P,U,S:REAL;

C,F,N:INTEGER;

BEGIN (*НАЧАЛО РАЗДЕЛА ОПЕРАТОРОВ*)

CLRSCR;

WRITELN('ВВЕДИТЕ X');

READLN(X);

C:=1;

P:=SQR(X+1);

F:=2;

S:=0;

(*НАЧАЛО ЦИКЛА ПО N*)

FOR N:=1 TO 8 DO

BEGIN

C:=-C;

P:=P*SQR(X+1);

F:=F*(N+1);

U:=C*P/F*SIN(N*X);

S:=S+U;

END;

(*ВЫВОД РЕЗУЛЬТАТА НА ДИСПЛЕЙ*)

WRITELN('ПРИ X=',X:4:2,' СУММА', N:2,' ЭЛЕМЕНТОВ=',S:7:5);

READLN;

END.

(*КОНЕЦ ПРОГРАММЫ*)

Программа не требует дополнительных пояснений. Необходимые комментарии размещены в тексте. Следует обратить внимание на удобство использования оператора FOR DO, т.к. отпадает необходимость в изменении параметра n на каждом шаге цикла. В случае использования любого другого оператора цикла в тело цикла нужно было бы ввести дополнительную строку: N:=N+1.

 

 

ЗАДАНИЕ 3.

 

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

 

 

Условием окончания цикла считать ½Sn-Sn-1½< e, где:

Sn – значение суммы элементов ряда;

Sn-1 – значение суммы n-1 элементов ряда;

e=105 – заданная точность вычислений.

Для решения этой задачи необходимо повторить тему «Циклические вычислительные процессы с постусловием. Оператор цикла REPEAT UNTIL » (см. [1], стр. 40, [2], стр. 45-46, [3], стр. 60-61).

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

½Sn-Sn-1½< e

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

Такие циклические вычислительные процессы получили название итерационных, а каждый шаг вычислений – итерацией.

 

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

Очевидно, что формула в условии данной задачи относится к типу в) (см. стр. ******настоящей методики).

Поэтому, полагая Pn=Pn-1*Sin(x+1), а Fn=Fn-1.n, получим значение n-го элемента ряда, Un=Pn/Fn*(x/2) и Sn=S(n-1)+Un.

Блок–схема этой задачи может быть представлена следующим образом:

 

 

Пояснения к блок-схеме:

БЛОК 1 – ввод значений х, e.

БЛОК 2 – задание начальных значений для организации цикла, (P:=1, F:=1) таких, что при N = 1, Pn=Sin(x+1), а Fn=1!. Очевидно, что нет необходимости повторять вычисление (х/2)3 на каждом шаге цикла. Поэтому можно вычислить его заранее и поместить в переменную А. Так как вычисление суммы идет по стандартному алгоритму Sn=S(n-1)+Un, то начальное значение суммы обнуляется. Чтобы число просчитанных элементов ряда соответствовало значению N, Nтакже принимается равным 0.

БЛОК 3 – образует тело цикла, здесь вычисляются значения P и F, по рекуррентным соотношениям, приведенным выше, значения n-го элемента ряда U и суммы S. Для сохранения предыдущего (n-1) значения суммы использована переменная S1. Переменная DELTA сохраняет значение разности сумм на n-ом и (n-1) шаге.

БЛОК 4 – проверка условия окончания цикла. Если оно истинно, т.е.:

½S1-S½< e,

то осуществляется переход на блок 5, если ложно – на блок 4 и повторение тела цикла.

БЛОК 5 – печать результатов – S, N, X.

БЛОК 6 – конец программы.

Программа решения задачи 3 на языке Паскаль приведена ниже.

 

PROGRAM CIKL2;

(*ВЫЧИСЛЕНИЕ СУММЫЭЛЕМЕНТОВ РЯДА С ЗАДАННОЙ ТОЧНОСТЬЮ*)

USES(*УКАЗАНИЕ БИБЛИОТЕЧНЫХ МОДУЛЕЙ*)

CRT;

VAR (*РАЗДЕЛ ОПИСАНИЯ ПЕРЕМЕННЫХ*)

X,EPS,P,A,U,S,S1,DELTA:REAL;

F,N:INTEGER;

BEGIN (*НАЧАЛО РАЗДЕЛА ОПЕРАТОРОВ*)

CLRSCR;

WRITELN('ВВЕДИТЕ X');

READLN(X);

WRITELN('ВВЕДИТЕ ТОЧНОСТЬ ВЫЧИСЛЕНИЙ EPS');

READLN(EPS);

A:=EXP(3*LN(X/2));

P:=1;

F:=1;

N:=0;

S:=0;

(*НАЧАЛО ИТЕРАЦИОННОГО ЦИКЛА*)

REPEAT

S1:=S;

N:=N+1;

P:=P*SIN(X+1);

F:=F*N;

U:=P/F*A;

S:=S+U;

DELTA:=ABS(S-S1);

(*ПРОВЕРКА УСЛОВИЯ ОКОНЧЕНИЯ ЦИКЛА*)

UNTIL DELTA<EPS;

(*ВЫВОД РЕЗУЛЬТАТА НА ДИСПЛЕЙ*)

WRITELN('ПРИ X=',X:4:2,' СУММА', N:2,' ЭЛЕМЕНТОВ=',S:7:5);

READLN;

END.

(*КОНЕЦ ПРОГРАММЫ*)

Программа снабжена комментариями и дополнительных объяснений не требует.

ЗАДАНИЕ 4.

 

Составить с объяснениями блок-схему и циклическую программу на языке Паскаль решения задачи с использованием одномерных массивов.

Задан массив вещественных чисел Аi(i=1,N) из N элементов (М<20). Найти минимальный и максимальный элементы массива и поменять их местами. В качестве результата вывести исходный массив, максимальный и минимальный элементы и полученный массив. В программе использовать подпрограммы.

Рассмотрим алгоритм решения. Исходными данными к задаче является одномерный массив вещественных чисел Аi длиной N. Необходимо:

1. Ввести значение элементов массива. Для этого необходимо организовать цикл со счётчиком. Параметром цикла служит переменная i. Ввод значений Аi повторяется до тех пор, пока i остаётся не больше заданной величены N.

2. Распечатать исходный массив Аi.

3. Найти максимальный элемент массива Аi. Для этого сначала принять за максимальный элемент первый элемент массива и организовать цикл со счетчиком. Сравнивать каждый текущий элемент с принятым значением максимального, принимая за максимальный элемент больший из них. Одновременно фиксировать индекс максимального элемента.

4. Найти минимальный элемент массива и его индекс (аналогично поиску максимального элемента).

5. Поменять местами максимальный и минимальный элементы, используя значения их индексов.

6. Распечатать полученный массив.

Для выполнения п. 1,2.3,4, составим подпрограммы.

 

Блок-схема процедуры VVOD: Блок-схема процедуры VYVOD:

 


 

Блок-схема процедуры MINEL: Блок-схема процедуры MAXEL:

 


 

Блок-схема основной программы:

1) При разработке подпрограмм следует использовать формальные параметры. Так, в процедуре VVOD и VYVOD формальными являются параметры N1 и V, в процедурах МАХЕL и МINEL - параметры N1, V, М, К. При обращении к процедурам, вместо формальных параметров, должны использоваться фактические, т.е. те, которые описываются в разделе описания переменных (VAR) разрабатываемой программы. Это позволяет использовать разработанные подпрограммы не только в одной какой-либо программе, но и при решении других задач, где необходимо выполнять аналогичные действия, стоит только при обращении к подпрограмме указать фактические параметры для решаемой задачи.

Так, например, в процедуре VVOD в качестве формальных параметров указаны длина массива N1 и имя массива - V. Указывая при обращении к этой процедуре фактическую длину массива и фактическое имя массива (в данном случае N и А), можно вводить массивы разной длины и имени. Аналогично описаны параметры и в процедурах VYVOD, МАХЕL, МIМЕL.

На основании сказанного выше приведем программу решения задачи 4:

 

PROGRAM MAS1;

USES {УКАЗАНИЕ БИБЛИОТЕЧНЫХ МОДУЛЕЙ }

CRT;

TYPE MAS=ARRAY[1..20] OF REAL;

VAR { РАЗДЕЛ ОПИСАНИЯ ПЕРЕМЕННЫХ}

A:MAS;

MAX,MIN:REAL;

I,N,N_MAX,N_MIN:INTEGER;

{****************************************************************}

{ ПРОЦЕДУРА ВВОДА ЭЛЕМЕНТОВ МАССИВА}

PROCEDURE VVOD(N1:INTEGER;VAR V:MAS);

VAR I:INTEGER;

BEGIN

FOR I:=1 TO N1 DO

BEGIN

WRITELN('BBEДИТЕ',I,' ЭЛЕМЕНТ МАССИВА');

READLN(V[I]);

END;

END;

{ПРОЦЕДУРА ВЫВОДА ЭЛЕМЕНТОВ МАССИВА }

PROCEDURE VYVOD(N1:INTEGER;V:MAS);

VAR I:INTEGER;

BEGIN

FOR I:=1 TO N1 DO

WRITE(V[I]:5:2,' ':2);

WRITELN;

END;

 

{*************************************************************}

{ПРОЦЕДУРА ПОИСКА МАКСИМАЛЬНОГО ЭЛЕМЕНТА МАССИВА}

PROCEDURE MAXEL(N1:INTEGER;V:MAS;VAR M:REAL;VAR K:INTEGER);

VAR I:INTEGER;

BEGIN

M:=V[1];

K:=1;

FOR I:=2 TO N1 DO

IF V[I]>M THEN

BEGIN

M:=V[I];K:=I;

END;

END;

{*************************************************************}

{ПРОЦЕДУРА ПОИСКА МИНИМАЛЬНОГО ЭЛЕМЕНТА МАССИВА}

PROCEDURE MINEL(N1:INTEGER;V:MAS;VAR M:REAL;VAR K:INTEGER);

VAR I:INTEGER;

BEGIN

M:=V[1];

K:=1;

FOR I:=2 TO N1 DO

IF V[I]<M THEN

BEGIN

M:=V[I];

K:=I;

END;

END;

BEGIN { НАЧАЛО РАЗДЕЛА ОПЕРАТОРОВ }

CLRSCR;

GOTOXY(20,4);

WRITELN('BBEДИTE ДЛИНУ МАССИВА А - N');

READLN(N);

GOTOXY(20,6);

WRITELN('BBEДИTE МАССИВ А');

VVOD(N,A);

{ ВЫВОД ИСХОДНОГО МАССИВА А НА ДИСПЛЕЙ }

CLRSCR;

GOTOXY(20,4);

WRITELN('ИСХОДНЫЙ МАССИВ А:');

GOTOXY(5,5);

VYVOD(N,A);

WRITELN;

{ ОПРЕДЕЛЕНИЕ МАКСИМАЛЬНОГО ЭЛЕМЕНТА МАССИВА И ЕГО ИНДЕКСА }

MAXEL(N,A,MAX,N_MAX);

{ОПРЕДЕЛЕНИЕ МИНИМАЛЬНОГО ЭЛЕМЕНТА МАССИВА И ЕГО ИНДЕКСА }

MINEL(N,A,MIN,N_MIN);

{ ПЕРЕСТАНОВКА ЭЛЕМЕНТОВ }

A[N_MAX]:=MIN;

A[N_MIN]:=MAX;

{ВЫВОД РЕЗУЛЬТАТОВ НА ДИСПЛЕЙ }

GOTOXY(20,8);

WRITELN('МАКСИМАЛЬНЫЙ ЭЛЕМЕНТ МАССИВА A=',MAX:4:1);

GOTOXY(20,9);

WRITELN('EГO НОМЕР В МАССИВЕ ',N_MAX:2);

GOTOXY(20,12);

WRITELN('МИНИМАЛЬНЫЙ ЭЛЕМЕНТ МАССИВА A=',MIN:4:1);

GOTOXY(20,13);

WRITELN('EГO НОМЕР В МАССИВЕ',N_MIN:2);

GOTOXY(20,16);

WRITELN('MACCИB А ПОСЛЕ ПЕРЕСТАНОВКИ ЭЛЕМЕНТОВ:');

GOTOXY(5,20);

VYVOD(N,A);

READKEY;

END.

 

ЗАДАНИЕ 5.

Составить с объяснениями блок-схему и циклическую программу на языке Турбо-Паскаль решения задачи с использованием многомерных массивов.

Задана вещественная матрица A(N*N)(N<10). Найти след матрицы и преобразовать исходную матрицу следующим образом: элементы, лежащие на четных строках, увеличить на величину следа матрицы, элементы, лежащие на нечётных строках, уменьшить на величину следа матрицы. В качестве результата вывести исходную и полученную матрицы и значения следа матрицы. В программе использовать подпрограммы.

Пояснение:

1. Следом матрицы называется сумма элементов, лежащих на главной

диагонали матрицы.

2. Признаком элемента, лежащего на главной диагонали матрицы является равенство номера строки и номера столбца матрицы, т.е. это элементы а11, а2233 … аnn.

Разберём алгоритм решения этой задачи:

1. Ввести исходную матрицу. Для этого необходимо организовать 2 вложенных цикла со счетчиком: во внешнем цикле (по i) перебираются строки вводимой матрицы, и для каждой строки (каждого, значения i) выполняется внутренний цикл (по j), где перебираются столбцы соответствующей строки матрицы. (В этом случае матрица вводится по строкам).

2. Вычислить значение следа матрицы. Здесь можно воспользоваться стандартным алгоритмом: организовать цикл со счётчиком по i и суммировать элементы с индексами "ii" до тех пор, пока i не превысит размер матрицы (N).

3. Выполнить преобразования в соответствии с условием. Организовать 2 вложенных цикла - внешний по i, внутренний no j (см.п.1) и определить, чётная строка или нет; изменять значения элементов в соответствии с условием.

4. Вывести исходную матрицу, полученную матрицу (аналогично п.1) и значение следа матрицы.


 

Блок-схема процедуры VVOD: Блок-схема процедуры VYVOD:

 

Блок-схема процедуры SLED: Блок-схема процедуры FORM:

 

Блок-схема основной программы:

 

Программа:

 

PROGRAM MATRI;

USES CRT;

TYPE MATR=ARRAY[1..10,1..10] OF REAL;

VAR A,B:MATR;

SL:REAL;

N:INTEGER;

{*****************************************************}

{ПРОЦЕДУРА ВВОДА КВАДРАТНОЙ МАТРИЦЫРАЗМЕРА N1}

PROCEDURE VVOD(N1:INTEGER;VAR V:MATR);

VAR I,J:INTEGER;

BEGIN

FOR I:=1 TO N1 DO

FOR J:=1 TO N1 DO

BEGIN

WRITELN('BBEДИTE ',I,',',J,' ЭЛЕМЕНТ МАТРИЦЫ');

READLN(V[I,J]);

END;

END;

{********************************************************}

{ ПРОЦЕДУРА ВЫВОДА КВАДРАТНОЙ МАТРИЦЫРАЗМЕРА N1 НА ДИСПЛЕЙ }

PROCEDURE VYVOD(N1:INTEGER;V:MATR);

VAR I,J:INTEGER;

BEGIN

FOR I:=1 TO N1 DO

BEGIN

FOR J:=1TO N1 DO

WRITE(V[I,J]:4:1,' ':2);

WRITELN;

END;

END;

{*********************************************************}

{ФУНКЦИЯ ВЫЧИСЛЕНИЯ СЛЕДА МАТРИЦЫ}

FUNCTION SLED(N1:INTEGER;V:MATR):REAL;

VAR I:INTEGER;

S:REAL;

BEGIN

S:=0;

FOR I:=1 TO N1 DO

S:=S+V[I,I];

SLED:=S;

END;

{*********************************************************}

{ПРОЦЕДУРА ФОРМИРОВАНИЯ НОВОЙ МАТРИЦЫ}

PROCEDURE FORM(N1:INTEGER;V:MATR;S:REAL;VAR W:MATR);

VAR I,J:INTEGER;

BEGIN

FOR I:=1 TO N1 DO

BEGIN

IF I MOD 2=0 THEN

FOR J:=1 TO N1 DO

W[I,J]:=V[I,J]+S

ELSE

FOR J:=1 TO N1 DO

W[I,J]:=V[I,J]-S

END;

END;

{*************************************************************}

{ НАЧАЛО РАЗДЕЛА ОПЕРАТОРОВ }

BEGIN

CLRSCR;

GOTOXY(20,6);

WRITELN('BBEДИTE РАЗМЕР МАТРИЦЫА');

READLN(N);

GOTOXY(20,8);

WRITELN('BBEДИTE ИСХОДНУЮ МАТРИЦУ');

VVOD(N,A);

SL:=SLED(N,A);

FORM(N,A,SL,B);

{ ВЫВОД РЕЗУЛЬТАТОВ НА ДИСПЛЕЙ }

CLRSCR;

GOTOXY(20,2);

WRITELN('ИСХОДНАЯ МАТРИЦА');

VYVOD(N,A);

GOTOXY(20,10);

WRITELN('СЛЕД ИСХОДНОЙ MATPИЦЫ=',SL:4:1);

GOTOXY(20,14);

WRITELN('ПОЛУЧЕННАЯ МАТРИЦА');

VYVOD(N,B);

READKEY;

END.

 


Вариант 1

1. Составить блок-схему и программу вычисления значений функции Y=f(x) на промежутке от а до b с шагом h.

a = -2, b = 2, h = 0,2

Значения с и d задать самостоятельно.

2. Вычислить сумму элементов ряда

3. Вычислить сумму элементов бесконечного ряда с заданной точностью e. Условием окончания вычислений считать |Sn – Sn-1|<e. e = 0,00001.

4. Дана последовательность чисел a1, …, an (N<20). Получить последовательность b1, …, bn по правилу:

5. Даны две целочисленных квадратных матрицы А порядка 4 и В порядка 3. Найти сумму элементов, стоящих на четных строках матриц А и В. Переменной S присвоить значение 1, если сумма элементов, стоящих на четных строках матрицы А больше, чем сумма элементов, стоящих на четных строках матрицы В, -1, если сумма элементов, стоящих на четных строках матрицы А меньше, чем сумма элементов, стоящих на четных строках матрицы В, 0, если они равны. Для решения задачи использовать подпрограмму.


Вариант 2

1. Составить блок-схему и программу вычисления значений функции Y=f(x) на промежутке от а до b с шагом h.

a = -2, b = 2, h = 0,2

Значение с задать самостоятельно.

2. Вычислить сумму элементов ряда

3. Вычислить сумму элементов бесконечного ряда с заданной точностью e. Условием окончания вычислений считать |Sn – Sn-1|<e. e = 0,00001.

4. Дана последовательность чисел a1, …, an (N<20). Найти сумму чисел, не равных максимальному.

5. Составить программу для вычисления элементов матрицы порядка 4х4, равной сумме двух матриц и , по формуле . Матрицы А, В, С вывести на экран. При решении задачи использовать подпрограмму.


Вариант 3

1. Составить блок-схему и программу вычисления значений функции Y=f(x) на промежутке от а до b с шагом h.

a = -2, b = 2, h = 0,2

Значения коэффициентов c и d задать самостоятельно.

2. Вычислить сумму элементов ряда

3. Вычислить сумму элементов бесконечного ряда с заданной точностью e. Условием окончания вычислений считать |Sn – Sn-1|<e. e = 0,00001.

4. Дана последовательность чисел a1, …, an и b1, …, bn (N<20).

Что больше – число нулей в последовательности А или число единиц в последовательности B?

5. Задана прямоугольная матрица А размером 4х5. Получить новую матрицу путем деления элементов каждой строки первоначальной матрицы на максимальный элемент этой строки. Из полученных максимальных элементов матрицы сформировать массив и упорядочить его по возрастанию.


Вариант 4

1. Составить блок-схему и программу вычисления значений функции Y=f(x) на промежутке от а до b с шагом h.

a = -2, b = 4, h = 0,5

Значение с задать самостоятельно.

2. Вычислить сумму элементов ряда

3. Вычислить сумму элементов бесконечного ряда с заданной точностью e. Условием окончания вычислений считать |Sn – Sn-1|<e. e = 0,00001.

 

4. Дана последовательность чисел a1, …, an (N<20). Заменить все отрицательные элементы их квадратами. Новый массив и количество отрицательных элементов вывести на экран.

 

5. Задан двумерный массив А (MхN). Сформировать массив B, состоящий из сумм элементов соответствующих строк массива А. Расположить элементы полученного массива В в порядке возрастания.


Вариант 5

1. Составить блок-схему и программу вычисления значений функции Y=f(x) на промежутке от а до b с шагом h.

a = -1, b = 1, h = 0,2

2. Вычислить сумму элементов ряда

3. Вычислить сумму элементов бесконечного ряда с заданной точностью e. Условием окончания вычислений считать |Sn – Sn-1|<e. e = 0,00001.

4. Вычислить компоненты вектора х = {х1, …, xn} по формуле

, i = 1, …, n. Вычисленный вектор вывести на экран. преобразовать далее полученный вектор по правилу: все отрицательные компоненты увеличить на 0,5, а все положительные – заменить на 0,1. Преобразованный вектор также вывести на экран.

5. Даны три квадратные матрицы А(4х4), В(3х3) и С(2х2). Найти сумму элементов главной диагонали каждой матрицы. Полученные значения расположить в порядке убывания.

 


Вариант 6

1. Составить блок-схему и программу вычисления значений функции Y=f(x) на промежутке от а до b с шагом h.

a = -2,5; b = 2,5; h = 0,25

2. Вычислить сумму элементов ряда

 

3. Вычислить сумму элементов бесконечного ряда с заданной точностью e. Условием окончания вычислений считать |Sn – Sn-1|<e. e = 0,00001.

 

4. Задан одномерный массив А (a1, …, a30). Найти максимальный элемент последовательности (а130, а229, …, а1516).

 

5. Даны две матрицы А и В порядка 4. Найти максимальный элемент матрицы С, каждый элемент которой вычисляется по формуле . Матрицы А, В, С вывести на экран.

 


Вариант 7

1. Составить блок-схему и программу вычисления значений функции Y=f(x) на промежутке от а до b с шагом h.

a = -2, b = 3, h = 0,25

 

2. Вычислить сумму элементов ряда

 

3. Вычислить сумму элементов бесконечного ряда с заданной точностью e. Условием окончания вычислений считать |Sn – Sn-1|<e. e = 0,00001.

4. Даны действительные числа a1, …, a15. Получить:

,

5. Дана целочисленная квадратная матрица А порядка 4. Найти сумму элементов главной диагонали S (след матрицы). Преобразовать матрицу А, разделив все ее элементы на значение S. Исходную и преобразованную матрицы вывести на экран.

 


Вариант 8

1. Составить блок-схему и программу вычисления значений функции Y=f(x) на промежутке от а до b с шагом h.

a = -2, b = 5, h = 0,5

 

2. Вычислить сумму элементов ряда

 

3. Вычислить сумму элементов бесконечного ряда с заданной точностью e. Условием окончания вычислений считать |Sn – Sn-1|<e. e = 0,00001.

 

4. Дана последовательность чисел a1, …, an (N<20). Найти:

,

5. Заданы матрицы А и В размером 4х5. Вычислить элементы матрицы С по формуле . Матрицы А, В, С вывести на экран.


Вариант 9

1. Составить блок-схему и программу вычисления значений функции Y=f(x) на промежутке от а до b с шагом h.

a = 0, b = 6, h = 0,5

Значение с задать самостоятельно.

 

2. Вычислить сумму элементов ряда

 

3. Вычислить сумму элементов бесконечного ряда с заданной точностью e. Условием окончания вычислений считать |Sn – Sn-1|<e. e = 0,00001.

 

4. Дана последовательность чисел a1, …, an (N<20). Найти min(a2, a4, …) и max (a1, a3, …).

 

5. Дана матрица А(4х5). Найти минимальный элемент каждого столбца матрицы А. Полученные элементы расположить в порядке убывания.

 


Вариант 10

1. Составить блок-схему и программу вычисления значений функции Y=f(x) на промежутке от а до b с шагом h.

a = -1, b = 3, h = 0,25

Значение с задать самостоятельно

 

2. Вычислить сумму элементов ряда

 

3. Вычислить сумму элементов бесконечного ряда с заданной точностью e. Условием окончания вычислений считать |Sn – Sn-1|<e. e = 0,00001.

 

4. Дана последовательность целых чисел a1, …, an (N<20), число K. Определить, каким по счету идет в последовательности a1, …, an элемент, равный К. Если такого элемента нет, ответом должно быть число 0.

 

5. Дана действительная квадратная матрица А порядка 10. В строках с отрицательным элементом на главной диагонали найти сумму всех элементов.


Вариант 11.

 

1. Составить блок-схему с программу вычисления значений функции Y = F(x) на отрезке [a;b] c шагом dx, где .

 

 

Значения a,b и dx вводятся пользователем с клавиатуры. Значение с задаётся при помощи константы.

 

2. Вычислить сумму элементов ряда.

 

Значение переменной х вводится пользователем с клавиатуры.

 

3. Вычислить сумму элементов бесконечного ряда с заданной точностью e. Вычисления продолжаются пока значение не станет меньше, чем

значение e.

 

Значения переменных х и e вводится пользователем с клавиатуры.

 

4. Дано целое число n, и действительные числа а1…аn. Получить min(а24…) и max(а1,а3…).

 

5. Дана действительная матрица А(5´6). Найти значение и индекс минимального элемента матрицы


Вариант 12.

 

1.Составить блок-схему с программу вычисления значений функции Y = F(x) на отрезке [a;b] c шагом dx, где .

 

 

Значения a,b и dx вводятся пользователем с клавиатуры. Значение с задаётся при помощи константы.

 

2. Вычислить произведение элементов ряда.

Значение переменной х вводится пользователем с клавиатуры.

 

3. Вычислить сумму элементов бесконечного ряда с заданной точностью e. Вычисления продолжаются пока значение



Поделиться:




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

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


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