|
Одномерные массивы - векторыПример 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 г. начинался, по сути, с программного заявления редакции журнала... Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право... Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|