Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Действия над элементами двумерного массива



 

Пример 1. Задана матрица U(7, 3). Отрицательные элементы матрицы заменить на 0. Измененный массив вывести на экран.

DIM U(7, 3)

FOR I=1 TO 7 ' Заполнение массива отрицательными и

FOR J=1 TO 3 ' положительными числами

U(I, J)=INT(RND*20-10)

PRINT U(I, J);

NEXT J

PRINT

NEXT I: PRINT

FOR I=1 TO 7

FOR J=1 TO 3

IF U(I, J)< 0 THEN U(I, J)=0

PRINT U(I, J);

NEXT J

PRINT

NEXT I

END

 

Пример 2. Найти сумму положительных элементов четных строк матрицы C(5, 3).

DIM С(5, 3)

FOR I=1 TO 5

FOR J=1 TO 3

С(I, J)=INT(RND(1)*20)

PRINT С(I, J);

NEXT J

PRINT

NEXT I: PRINT

S=0

FOR I=2 TO 5 STEP 2

FOR J=1 TO 3

S=S+C(I, J)

NEXT J

NEXT I

END

 

Пример 3. Дана матрица U(7, 3). Получить массив Q(7), элементами которого являются количество отрицательных элементов соответствующих строк матрицы U(7, 3).

DIM U(7, 3), Q(7)

FOR I=1 TO 7 ' Заполнение массива отрицательными и

FOR J=1 TO 3 ' положительными числами

U(I, J)=INT(RND(1)*20-10)

PRINT U(I, J);

NEXT J

PRINT

NEXT I: PRINT

FOR I=1 TO 7

K=0

FOR J=1 TO 3

IF U(I, J)< 0 THEN K=K+1

NEXT J

Q(I)=K: PRINT Q(I);

NEXT I

END

 

Пример 4. Задан массив C(5, 3). В массив К(5) записать суммы элементов соответствующих строк массива C(5, 3). Вывести на экран значения элементов массива K(5).

DIM С(5, 3), K(5)

FOR I=1 TO 5

FOR J=1 TO 3

С(I, J)=INT(RND(1)*20)

PRINT С(I, J);

NEXT J

PRINT

NEXT I: PRINT

FOR I=1 TO 5

S=0

FOR J=1 TO 3

S=S+C(I, J)

NEXT J

K(I)=S: PRINT K(I); ' Формирование и печать массива К

NEXT I

END

 

Пример 5. Задана матрица М(6, 3), подсчитать количество строк, в которых первый элемент строки меньше нуля.

DIM M(6, 3)

FOR I=1 TO 6

FOR J=1 TO 3

U(I, J)=INT(RND(1)*20-10)

PRINT M(I, J);

NEXT J

PRINT

NEXT I: PRINT

FOR I=1 TO 6

IF M(I, 1)< 0 THEN K=K+1 ' Подсчет количеств строк

NEXT I

PRINT " Количество строк="; K

 

Пример 6. В заданной матрице N(4, 6) поменять местами строки L и K. Измененную матрицу вывести на экран.

DIM N(4, 6)

FOR I=1 TO 4

FOR J=1 TO 6

N(I, J)=INT(RND(1)*20)

PRINT N(I, J);

NEXT J

PRINT

NEXT I

INPUT " Введите строки, которые необходимо поменять местами "; L, K

FOR J=1 TO 6

SWAP N(L, J), N(K, J) ' Меняются местами строки

NEXT J

FOR I=1 TO 4 ' Печать измененного массива

FOR J=1 TO 6

PRINT N(I, J);

NEXT J

PRINT

NEXT I

 

Объявление размерности массива бывает переменным, т.е. размерность выясняется в процессе работы программы.

Пример 7. Задана матрица A(n, m), получить массив B(n), элементами которого являются сумма наименьшего и наибольшего элементов соответственной строки матрицы A(n, m).

INPUT " Введите количество строк и столбцов матрицы A "; N, M

DIM A(n, m), B(n)

FOR I=1 TO N ' Динамическое заполнение

FOR J=1 TO M ' массива

INPUT A(I, J)

NEXT J, I

FOR I=1 TO N ' Печать элементов массива A

FOR J=1 TO M

PRINT A(I, J);

NEXT J

PRINT

NEXT I: PRINT

FOR I=1 TO N

MI=A(I, 1): MA=A(I, 1) ' Первый элемент каждой строки

FOR J=2 TO M ' запоминается в переменных MI, MA

IF A(I, J) < MI THEN MI=A(I, J)

IF A(I, J) > MA THEN MA=A(I, J)

NEXT J

B(I)=MI+MA: PRINT B(I); ' Формирование массива В

NEXT I

END

 

Матрица, у которой количество строк равно количеству столбцов, называется квадратной.

Пример 8. Задана квадратная матрица A порядка N. Получить массив B(n), элементами которого являются первый положительный элемент соответствующей строки квадратной матрицы A.

INPUT " Введите количество строк и столбцов матрицы A "; N

DIM A(n, n), B(n)

FOR I=1 TO N

FOR J=1 TO N

INPUT A(I, J)

NEXT J, I

FOR I=1 TO N

FOR J=1 TO N

PRINT A(I, J);

NEXT J

PRINT

NEXT I: PRINT

FOR I=1 TO N

FOR J=1 TO N

IF A(I, J)> 0 THEN B(I)=A(I, J): J=N ' Формирование массива В

NEXT J

PRINT B(I);

NEXT I

END

 

Элементы квадратной матрицы, у которых номер строки совпадает с номером столбца, располагаются на главной диагонали матрицы.

В квадратной матрице B(4, 4)

B(1, 1), B(1, 2), B(1, 3), B(1, 4)

B(2, 1), B(2, 2), B(2, 3), B(2, 4)

B(3, 1), B(3, 2), B(3, 3), B(3, 4)

B(4, 1), B(4, 2), B(4, 3), B(4, 4)

элементы B(1, 1), B(2, 2), B(3, 3), B(4, 4) располагаются на главной диагонали матрицы.

Пример 9. Дана квадратная матрица A порядка 5. Заменить нулями все элементы матрицы, расположенные на главной диагонали. На экран вывести измененную матрицу в виде таблицы.

DIM A(5, 5)

FOR I=1 TO 5

FOR J=1 TO 5

A(I, J)=INT(RND(1)*20)

PRINT A(I, J);

NEXT J

PRINT

NEXT I: PRINT

FOR I=1 TO 5 ' Замена нулями элементов, расположенных на

A(I, I)=0 ' главной диагонали

NEXT I

FOR I=1 TO 5

FOR J=1 TO 5

PRINT A(I, J); ' Печать измененной матрицы

NEXT J

PRINT

NEXT I

 

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

INPUT " Введите количество строк и столбцов "; N

DIM С(N, N)

FOR I=1 TO N

FOR J=1 TO N

С(I, J)=INT(RND(1)*20)

PRINT С(I, J);

NEXT J

PRINT

NEXT I

FOR I=1 TO N

S=0

FOR J=1 TO N

IF C(I, I)< 0 THEN S=S+C(I, J)

NEXT J

IF S< > 0 THEN PRINT " Сумма элементов ="; S, " Номер строки ="; I

NEXT I

 

 


 

Подпрограммы

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

Обращение к подпрограмме осуществляется с помощью команды

GOSUB номер строки или метка

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

Если нарушено согласование операторов RETURN и GOSUB, то выводится сообщение об ошибке “RETURN without GOSUB”.

Подпрограммы располагаются в конце основной программы и отделяются от основной программы оператором END.

Пример 1. Написать подпрограмму вывода подчеркивания информации. Длина черты переменная.

N=5

GOSUB A ‘вызов подпрограммы для вывода знака подчеркивания 5 раз

N=30

GOSUB A ‘вызов подпрограммы для вывода знака подчеркивания 30 раз

END

A: FOR I=1 TO N ‘подпрограмма вывода знака подчеркивания

PRINT ”_“;

NEXT I

PRINT

RETURN ‘оператор возврата в основную программу

Пример 2. Вычислить функцию: C = m! n! /(m-n)!

1 INPUT “Введите m> n”; m, n

IF M< =N THEN 1 ‘проверка входных данных

R=M

GOSUB A ‘вызов подпрограммы для вычисления m!

R1=F: R=N

GOSUB A ‘вызов подпрограммы для вычисления n!

R2=F: R=M-N

GOSUB A ‘вызов подпрограммы для вычисления (m-n)!

C=(R1+R2)/F: PRINT “C=”; C

END

A: F=1 ‘подпрограмма вычисления факториала

FOR I=2 TO R

F=F*I

NEXT I

RETURN ‘оператор возврата в основную программу

Для самостоятельного решения

Составить программу расчета заработной платы по формуле: оклад * количество дней * 1.4-подоходный налог. Расчет заработной платы оформить в подпрограмме.


Функции, определяемые пользователем

 

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

Формат:

DEF FN < имя функции> (< список формальных параметров> )=< выражение>

Обращение к функции пользователя осуществляется

FN < имя функции> (< список фактических параметров> )

Имя определяемой функции должно быть уникально: оно не может повторять имя другой процедуры, переменной или функции.

Формальные параметры резервируют место в памяти для фактических параметров, которые должны быть определены к моменту выполнения функции. Параметры могут быть любого типа. Примеры определения функции:

DEF FNKT(X)=COS(X)/SIN(X)

DEF FNP(A, B)=A/B*100

X, A, B – формальные параметры

Между формальными и фактическими параметрами и их типами существует однозначное позиционное соответствие слева направо. Примеры обращения:

FNKT(X)

FNP(C, D)

X, C, D - фактические параметры

Имена формальных и фактических параметров могут не совпадать.

С помощью оператора DEF FN можно описать более сложную функцию, занимающую несколько строк

Формат:

DEF FN < имя функции> (< список аргументов> )

< блок команд>

FN< имя функции> =< выражение>

END DEF

В строке FN< имя функции> =записывается выражение, значение которого функция возвращает.

Пример1. Отрезки заданы координатами концов. Сравнить эти отрезки.

DEF FNL(x1, x2, y1, y2)=SQR((x1-x2)^2+(y1-y2)^2) ‘функция нахождения длины отрезка

INPUT “введите координаты первого отрезка”, x1, x2, y1, y2

L1=FNL(x1, x2, y1, y2)

INPUT “введите координаты второго отрезка”, x1, x2, y1, y2

L2=FNL(x1, x2, y1, y2)

IF L1> L2 THEN

? “длина первого отрезка больше”

ELSEIF L2> L1 THEN

? “длина второго отрезка больше

ELSE

? “отрезки равны”

END IF

Пример 2. Вычислить сложное выражение, используя определяемую функцию для вычисления повторяющейся в нем части.

K=½ (1+m^2)/cos(1-m)½ –5*Ö ½ (c+d^2)/cos(c-d)½ +tg½ (x+y^2)/cos(x-y)½

 

DEF FNT(a, b)=abs((a+b^2)/cos(a-b))

INPUT “Введите 5 значений”, m, c, d, x, y

K=FNT(1, m)-5*sqr(FNT(c, d))+tan(FNT(x, y))

? “K=”; K

Пример 3. Вычислить сумму N членов ряда. Факториал вычислять с помощью функции пользователя.

S=1! /4! +4! /5! +9! /6! +16! /7! +…+(n^2)! /(n+3)!

 

DEF FNFACT(M)

P=1

FOR I=1 TO M

P=P*I

NEXT I

FNFACT=P

END DEF

INPUT “Введите n”; N

S=0

FOR J=1 TO N

S=S+FNFACT(J^2)/FNFACT(J+3)

NEXT J

? “S=”; S

 

Задание:

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

C=Ö (d+½ e½ )/tg(de)+(x+½ y½ )/tg(xy)-(z+½ t½ )/tg(zt)

2. Вычислить функцию: C = m! n! /(m-n)!. Для вычисления факториала использовать определяемую функцию.

 

Практическое занятие с использованием подпрограмм и функций пользователя

1 вариант

  1. Дан массив с оценками учащихся. Найти средний балл учащихся. Подсчитать количество 5 и 4. Заполнение массива, подсчет среднего балла и подсчет количества оценок оформить отдельными подпрограммами.
  2. Задана матрица W(5, 6). Отрицательные элементы матрицы заменить на 0. измененный массив вывести на экран. Обработку элементов массива оформить в подпрограмме.

2 вариант

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

  1. Найти произведение элементов массива R(7, 5) в строках с четными номерами. Обработку элементов массива оформить в подпрограмме.

 

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2017-03-08; Просмотров: 778; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.051 с.)
Главная | Случайная страница | Обратная связь