Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Одномерные массивы - векторы





Пример 1 Рассчитать функцию Т по формуле

Т при а = 2,34

для пяти значений аргумента х1=0,1; х2=3,5; х3=0,01; х4=-14; х5=3.

Все значения функции T сохранить в памяти компьютера. Дополнительно найти произведение четных элементов массива T для заданных значений хi.

Программа

 

CLS

REM Программа массив-строка

DIM X[5], T[5]

A = 2.34: P=1

FOR I=1 TO 5

INPUT X[I]

T[I]=(X[I]^2+SIN(X[I])^2)/SQR(X[I]*A+1)

PRINT "T["I]=";T[I],"X["I"]=";X[I]

IF INT((I/2)-I/2<0 GOTO L

P=P*T[I]

L: NEXT I

PRINT "P="; P

END

Описание программы:

После очистки экрана и ввода названия программы оператором DIM X[5], T[5] резервируется память для шести элементов массива Х и шести элементов массива Т (счёт индексов с 0, при этом ячейки для X[0] и T[0] использоваться не будут, т.к. индекс I начинается с единицы).

Величине А присваивается значение 2,34 и первому значению произведения Р присваивается 1.

Оператором FOR… первому значению I присваивается 1, затем оператором INPUT X[I] с клавиатуры вводится X[1]= 0.1, для этого значения элемента рассчитывается T[1]=f (X[1], A) и распечатываются величины Т[1] и Х[1].

В строке IF INT((I/2)-I/2<0 проверяется чётность индекса I - номера элемента массива Здесь функция INT(…) отбрасывает дробную часть элемента, поэтому для I=1 получим INT(1/2) – 1/2 или 0 – 0,5 = - 0,5 < 0, т.е. условие IF выполняется, программа оператором GOTO переходит по метке L к оператору NEXT I, а в произведение P=P*T[I] нечётный элемент T[I] не попадает.

Оператор NEXT I возвращает цикл к оператору FOR…, где I присваивается следующее значение 2, затем вводится X[2]= 3.5, вычисляется T[2]=f (X[2], A) и распечатывается вместе с Х[2]. Снова выполняется проверка на чётность, теперь INT((2/2)-2/2 даёт значение 0, а это не < 0, т.е. условие не выполняется, поэтому программа переходит к следующему оператору P=P*T[I], где первое значение Р=1 умножается на чётный элемент Р[2]. Затем оператор NEXT снова возвращает вычислительный процесс на начало цикла FOR… и так далее, до I=5. Когда все пять элементов функции T[I]

будут рассчитаны, а её чётные значения перемножены в произведении Р, оператор PRINT "P="; P распечатывает его на экране и END – конец программы.

Двумерные массивы – матрицы. Обработка массивов

Пример 2 Вычислить сумму элементов массива А[3,4]

Программа

CLS

REM Программа массив-матрица

DIM А[3,4]: S=0

FOR I=1 TO 3

FOR J=1 TO 4

INPUT A[I,J]

S=S+A[I,J]

NEXT J

NEXT I

?"S="; S

END

Описание программы:

После задания размерности массива (4х5=20 ячеек) оператором DIM А[3,4] и ввода первого значения сумы S=0 открывается цикл по номеру строки массива I, первое значение I=1, затем открывается вложенный цикл по номеру столбца массива J и присваивает первому J значение 1, т.е. в массиве указывается элемент первой строки первого столбца А[1,1]. Оператором INPUT A[I,J] вводится элемент А[1,1], т.е. число 9, затем оно складывается с первым значение S=0, т.е. S=0+9=9.

Оператор NEXT J возвращает программу к своему FOR…, где J становится равным 2 (индекс строки I ещё равен 1), далее вводится элемент A[1,2], равный -4, он прибавляется к предыдущему S, т.е. получается S=9+(-4) = 5 и т.д. Нетрудно заметить, что при такой организации вложения циклов элементы массива А считываются построчно – 1-я строка I проходится по всем столбцам J, затем 2-я строка и т.д. После перебора построчно всех элементов значение накопленной суммы S выводится на экран и программа завершается.

 

Пример 3 Вычислить произведение элементов главной диагонали массива А[4,4]

 

Программа

CLS

REM Программа матрица -ввод, обработка

DIM А[4,4]: Р=1

FOR I=1 TO 4 ' Блок ввода:

FOR J=1 TO 4 ' ввод всех

INPUT A[I,J] ' элементов

NEXT J ' массива

NEXT I ' в ОЗУ

I=1: J=1 ' обработка

m14: P=P*A[I,J] ' введённых

I-I+1: J=J+1 ' элементов

IF I<=4 THEN m14 ' массива

?"P="; Р '

END

Описание программы:

После задания размерности массива и присвоения начальному произведению Р значения 1 (DIM А[4,4]: Р=1) во вложенном цикле по I и J вводятся все элементы матрицы (построчно), затем введённый массив обрабатывается, в данном случае вычисляется произведение главной диагонали.

Поскольку в главной диагонали задействованы только элементы А11, А12, А21, А22, то можно заметить, что для них индексы I и J изменяются (увеличиваются на 1) одновременно, поэтому цикл нужно организовать вручную, с помощью оператора IF…. Для этого присваиваем I и J значения 1, тем самым получим элемент A[1,1], потом умножаем его на предыдущее значение Р=1, затем увеличиваем I и J на 1 и выполняем проверку – если I ещё меньше 4, то программа возвращается по метке m14 к увеличению произведения, если I уже больше 4, т.е. программа вышла за пределы матрицы, то Р распечатывается и программа заканчивается.

Проверка на выход из размеров матрицы могла бы быть организована и по J<=4, это некритично.

Особенностью программы является то, что она состоит из двух частей – ввод массива в память и обработка массива, уже находящегося в ОЗУ компьютера. В примерах 1 и 2 элемент массива вводился и сразу обрабатывался согласно заданию (найти произведение чётных элементов, найти сумму всех элементов). Данная программа является универсальной, т.к. этап ввода массива в память должен выполняться всегда, а виды обработки могут быть в каждой задаче разными (см. примеры 4 и 5).

 

Пример 4 Вычислить сумму и количество отрицательных элементов второго и третьего столбцов массива А[4,4] из примера 3.

Программа

CLS

DIM А[4,4]: S=0: t=0

FOR I=1 TO 4 ' ввод

FOR J=1 TO 4 ' всех

INPUT A[I,J] ' элементов

NEXT J ' массива

NEXT I ' в ОЗУ

FOR I=1 TO 4 ' задание индексов (номеров) строк с 1-й по 4-ю

FOR J=2 TO 3 ' задание номеров столбцов, только 2-го и 3-го

IF A[I,J] < 0 THEN S=S+A[I,J]: t=t+1 ' вычисл. суммы отриц.

' эл-тов A[I,J] массива и их количества t

NEXT J

NEXT I

?"S="; S, "t="; t ' вывод S и t

END

Описание программы:

После объявления размерности массива оператором DIM А[4,4] задаются начальное значение суммы отрицательных элементов (S=0) и счётчика t элементов в сумме (t=0).

Блок ввода выполнен аналогично, как и в примере 3 для всех элементов матрицы. В блоке выполнения для отбора из всей матрицы только элементов 2-го и 3-го столбцов цикл выборки организован для индексов I=1…4 и J = 2 и

3. Если элемент A[I,J] < 0, то он прибавляется к предыдущей сумме S и t увеличивается на 1, если =0 или положительный, то выполняется переход к следующему элементу.

 

Пример 5 Найти максимальный и минимальный элементы четвёртой строки массива А[4,4] из примера 3.

Программа

CLS

DIM А[4,4]

FOR I=1 TO 4 ' ввод

FOR J=1 TO 4 ' всех

INPUT A[I,J] ' элементов

NEXT J ' массива

NEXT I ' в ОЗУ

max = А[4,1] ' присвоение переменной max значения элемента A[4,1]

min= А[4,1] ' присвоение переменной min значения элемента A[4,1]

FOR J=1 TO 4 ' задание номеров столбцов 1…4

IF A[4,J] > max THEN max = A[4,J] ' сравнение max с текущим A[4,J]

и присвоение max его значения, если оно > max

IF A[4,J] < min THEN min = A[4,J] ' сравнение min с текущим A[4,J]

NEXT J ' и присвоение min его значения, если оно < min

?"max="; max,?"min="; min ' вывод на экран max и min

END

Описание программы:

Программа аналогична предыдущей, но в блоке обработки зафиксирована строка 4 с помощью переменной A[4,J] (цикл по I не нужен), а элементы строки перебираются с помощью цикла по J. Для определения максимального элемента 4-й строки введена переменная max, которой присвоено значение А[4,1] - первого элемента в 4-й строке (может быть присвоено значение любого элемента этой строки). Далее новой переменной min присваивается значение того же А[4,1] (может быть любой элемент строки). В цикле FOR… элементы 4-й строки перебираются и, если какой-то из них окажется больше, чем max, то переменной max присваивается его значение. В следующей строке элементы проверяются на минимум - если какой-то из них окажется меньше, чем min, то переменной min присваивается его значение По окончании цикла значения max и min распечатываются на экране.

 

 







Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом...

ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала...

Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...

Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...





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


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