Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

'DIM a(n)

'a = -10: b = 10

'FOR i = 1 TO n: a(i) = INT(a + (b - a) * RND)

'PRINT a(i);: NEXT i

'PRINT

'm = 100

'FOR i = 1 TO n

'IF a(i) > 0 AND a(i) < m THEN m = a(i)

'NEXT i

'PRINT "Наименьший положительный элемент"; m

'*Сколько раз в одномерном массиве встречается максимальный элемент?

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'DIM a(n)

'a = -10: b = 10

'FOR i = 1 TO n: a(i) = INT(a + (b - a) * RND)

'PRINT a(i);: NEXT i: PRINT

'm = a(1)

'FOR i = 2 TO n

'IF a(i) > m THEN m = a(i)

'NEXT i

'PRINT "Наибольший элемент"; m

'k = 0

'FOR i = 1 TO n

'IF a(i) = m THEN k = k + 1

'NEXT i

'PRINT "Он встречается в массиве"; k; "раз"

'*Заданны массивы a(n) и b(n).Сформировать и распечатать массивы s(n) и p(n),

'*состоящие соответственно из сумм и произведений элементов данных массивов.

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'DIM a(n), b(n), s(n), p(n)

'a = -1: b = 8

'FOR i = 1 TO n: a(i) = INT(a + (b - a) * RND)

'b(i) = INT(a + (b - a) * RND)

'NEXT i

'FOR i = 1 TO n: PRINT a(i);: NEXT i

'PRINT : PRINT :

'FOR i = 1 TO n: PRINT b(i);: NEXT i

'PRINT

'FOR i = 1 TO n: s(i) = a(i) + b(i)

'PRINT s(i);: NEXT i

'PRINT : PRINT :

'FOR i = 1 TO n: p(i) = a(i) * b(i)

'PRINT p(i);

'NEXT i

'*Всем элементам массива a(12) присвоено значение 1

'*Заменить элементы следующим образом: элементам стоящим

НЕ нашли? Не то? Что вы ищете?

'*на четных местах присвоить значение 2, элементам, индекс которых кратен 3

'*присвоим значение 0, второе условие приоритетно. Распечатать массив

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'DIM a(12)

'FOR i = 1 TO 12

'a(i) = 1: NEXT i

'FOR i = 1 TO 12

'IF i \ 2 = i / 2 THEN a(i) = 2

'NEXT i

'FOR i = 1 TO 12

'IF (i \ 3 = i / 3) THEN a(i) = 0

'PRINT TAB(10); "x("; i; ") ="; a(i)

'NEXT i

'*Задан одномерный целочисленный массив a(n), содержащий положительные и

'*отрицательные элементы. Вывести индексы и значения противоположных

'*элементов если таковых нет, вывести соответствующее сообщение

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'DIM a(n)

'a = -10: b = 10

'FOR i = 1 TO n: a(i) = INT(a + (b - a) * RND)

'PRINT a(i);

'NEXT i: PRINT

'FOR i = 1 TO n - 1

'FOR j = i + 1 TO n

'IF (a(i) = - a(j)) THEN PRINT "x("; i; ") = "; a(i); " = x("; j; ") = "; a(j)

'NEXT j

'NEXT i

'*Задан одномерный массив x(20) значения которого от 2 с шагом 0.03

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'DIM a(20)

'a(1) = 2

'FOR i = 2 TO 20: a(i) = a(i - 1) + .03

'PRINT a(i);: NEXT i

'*Из элементов массива a(n) кратных 3 сформировать массив b(k)или выдать

'*сообщение, что таких элементов нет

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'DIM a(n), b(n)

'FOR i = 1 TO n: a(i) = INT(10 * RND + 1)

'PRINT a(i);: NEXT i

'FOR i = 1 TO n

'IF a(i) / 3 = a(i) \ 3 THEN k = k + 1: b(k) = a(i)

'NEXT i

'PRINT

'IF k = 0 THEN PRINT "Таких чисел нет"

'FOR i = 1 TO k: PRINT b(i);

'NEXT i

'*Дано n случайных точек на отрезке [a, b] Посчитать значение функции

'* y=cosx+xsinx в этих точках. Результат записать в массив

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Введите координаты отрезка [a, b]"; a, b

'INPUT "Сколько вы возьмёте случайных чисел "; n

'DIM a(n)

'FOR i = 1 TO n

'x = INT(a + (b - a) * RND)

'a(i) = COS(x) + x * SIN(x)

'PRINT a(i);

'NEXT i

'*Дан одномерный массив имеющий не все нулевые элементы

'*Получить новый массив путем исключения нулевых элементов

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'DIM a(n), b(n)

'FOR i = 1 TO n: a(i) = INT(10 * RND - 5)

'PRINT a(i);:NEXT i

'FOR i = 1 TO n

'IF a(i) <> 0 THEN k = k + 1: b(k) = a(i)

'NEXT i: PRINT

'FOR i = 1 TO k: PRINT b(i);: NEXT i

Выберите 3-4 задачи по своим силам и вкусам и разработайте программы и их защиту

1.Найти сумму элементов массива.

2. Найти сумму положительных элементов массива.

3. Найти сумму отрицательных элементов массива.

4.Найти сумму элементов, которые меньше заданного числа.

5. Найти сумму элементов, имеющих четный индекс.

6. Найти сумму четных элементов.

7.Посчитать количество элементов, делящихся на 5 или выдать сообщение, что таковых нет.

8.Пожительные элементы заменить единицами, отрицательные - нулями.

9.Все элементы со значениями меньше 5-ти в данном одномерном массиве заменить нулями.

10.Вывести суммы элементов с четными и нечетными индексами.

11. В массиве подсчитать количество положительных и отрицательных элементов.

12.Найти среднее арифметическое элементов массива.

13.Найти наименьший положительный элемент массива.

14.Каждый третий элемент массива заменить числом 10.

15.Найти количество элементов массива больших среднего арифметического его элементов.

16.Есть ли среди положительных элементов массива элементы, равные своему индексу, в противном случае выдать сообщение, что таковых нет.

17.Найти максимальный и минимальный элементы массива.

18. Подсчитать сколько раз в массиве встречается максимальный (минимальный) элемент.

19.Найдите наибольший индекс отрицательного элемента.

20.Есть ли среди элементов массива противоположные числа?

Какие умения и навыки Вы приобрели на занятии №15?

·  Классифицировали типовые задачи обработки одномерных массивов.

·  Рассмотрели типовые, но различные задачи на одномерные массивы

·  Овладели опытом анализа текстовых задач по обработке массивов;

·  Представили на проверку свои первые программы по обработке одномерных массивов;

Занятие 16. Более сложные задачи

обработки одномерных массивов

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

В настоящей разработке приводится текст этой лекции.

SCREEN 9: COLOR 14, 1: CLS

RANDOMIZE TIMER

'*Рассмотрим более сложные задачи на обработку одномерных массивов

'*Задача 1. Из элементов двух массивов составить один массив

'**Т. н. задача - сложение массивов**

'INPUT "Сколько элементов в массивах"; n, m

'DIM x(n), y(m), z(n + m)

'a = -9: b = 10

'FOR i = 1 TO n: x(i) = INT(a + (b - a) * RND)

'PRINT x(i);

'NEXT i: PRINT

'FOR i = 1 TO m: y(i) = INT(a + (b - a) * RND)

'PRINT y(i);

'NEXT: PRINT

'FOR i = 1 TO n: z(i) = x(i): NEXT

'k = 1

'FOR i = n + k TO n + m: z(n + k) = y(k): k = k + 1: NEXT

'FOR i = 1 TO n + m: PRINT z(i); : NEXT i

'******Задача 2. Сжатие массива

'*Удалить из массива все элементы, равные нулю*

'INPUT "Сколько элементов в массиве"; n

'DIM x(n), y(n)

'a = -4: b = 5

'FOR i = 1 TO n: x(i) = INT(a + (b - a) * RND): PRINT x(i); : NEXT i

'PRINT

'k = 0

'FOR i = 1 TO n

'IF x(i) <> 0 THEN k = k + 1: y(k) = x(i)

'NEXT

'FOR i = 1 TO k: PRINT y(i); : NEXT

'*******Задача 3. Разделение массива **

'*Из элементов массива получить два массива, разделив его элементы ‘по какому-либо признаку, например, по знаку элементов

'INPUT "Сколько элементов в массиве"; n

'DIM x(n), y(n), z(n)

'a = -9: b = 12

'FOR i = 1 TO n: x(i) = INT(a + (b - a) * RND): PRINT x(i); : NEXT i

'PRINT

'k = 0: t = 0

'FOR i = 1 TO n

'IF x(i) < 0 THEN k = k + 1: y(k) = x(i)

'IF x(i) > 0 THEN t = t + 1: z(t) = x(i)

'NEXT

'PRINT

'FOR i = 1 TO k: PRINT y(i); : NEXT i

'PRINT

'FOR i = 1 TO t: PRINT z(i); : NEXT i

'*Задача 4.Упорядочивание массива по возрастанию или по убыванию***

'INPUT "Сколько элементов в массиве"; n

'DIM x(n)

'a = -9: b = 12

'FOR i = 1 TO n: x(i) = INT(a + (b - a) * RND): PRINT x(i); : NEXT i

'PRINT

'FOR j = 1 TO n

'FOR i = 1 TO n - 1

'IF x(i) > x(i + 1) THEN SWAP x(i), x(i + 1)

'NEXT i, j

'FOR i = 1 TO n: PRINT x(i); : NEXT i

'*******Задача 5. Вставка в массив **

'*А как вставить число в уже определенный массив?

'INPUT "Сколько элементов в массиве"; n

'DIM x(n + 1)

'a = -9: b = 12

'FOR i = 1 TO n: x(i) = INT(a + (b - a) * RND): PRINT x(i); : NEXT i

'PRINT : PRINT

'INPUT "На какое место поставить элемент"; r

'INPUT "Чему он равен"; t

'FOR i = n + 1 TO r STEP -1: x(i) = x(i - 1): NEXT i

'x(r) = t

'FOR i = 1 TO n + 1: PRINT x(i); : NEXT

'**Задача 6. Инверсия массива: перестановка его элементов***

'INPUT "Сколько элементов в массиве"; n

'DIM x(n)

'a = -9: b = 12

'FOR i = 1 TO n: x(i) = INT(a + (b - a) * RND): PRINT x(i); : NEXT i

'PRINT : PRINT

'FOR i = 1 TO n / 2

'SWAP x(i), x(n - i + 1)

'NEXT

'PRINT

'FOR i = 1 TO n: PRINT x(i); : NEXT

'*******Задача 7. Переставить все нулевые элементы в конец массива**

'INPUT "Сколько элементов в массиве"; n

'DIM x(n), y(n)

'a = -3: b = 2

'FOR i = 1 TO n: x(i) = INT(a + (b - a) * RND): PRINT x(i); : NEXT i

'PRINT : PRINT

'k = 0

'FOR i = 1 TO n: IF x(i) <> 0 THEN k = k + 1: y(k) = x(i)

'NEXT i

'FOR i = 1 TO n: PRINT y(i); : NEXT i

'******* Задача 7.1 Та же задача, но без дополнительного массива*****

'FOR i = 1 TO n

'FOR j = 1 TO n - 1

'IF x(j) = 0 THEN SWAP x(j), x(j + 1)

'NEXT j, i

'PRINT

'FOR i = 1 TO n: PRINT x(i); : NEXT

'* Законспектируйте задачи для самостоятельного решения******

'*(1)В массиве a(n) вычислить сумму четных элементов, имеющих четные индексы или выдать сообщение, что таких элементов нет*

'*(2)В массиве a(n) каждый элемент заменить суммой предыдущих.****

'*(3)В целочисленном массиве a(n) исключить элементы, кратные 3**

'*(4)Проверьте, есть ли целочисленном массиве x(n), если есть, найдите

'* наибольший индекс отрицательного элемента**

'*(5)Задан массив. Поменять местами а)второй и пятый элементы; б)третий и максимальный элементы; в)первый и минимальный элементы.*

'*(7)Найти сумму элементов массива, стоящих а)до наибольшего элемента;

'*8) после наибольшего; с)между наибольшим и наименьшим элементами.****

'*(9) Элементы массива a(n) принимают только значения 1,2 и 3. Переставьте его элементы таким образом, чтобы вначале находились элементы, равные 1, затем 2, и в конце массива 3.

Задачи для домашней работы.

1.Дан целочисленный массив a(n). Подсчитайте, сколько раз встречается в этом массиве максимальное по величине число.

2.Изменить знак всех нечетных элементов массива.

3.Для массива r(n), имеющего положительные и отрицательные элементы вычислить среднее арифметическое положительных и отрицательных элементов.

4.Вычислить суммы элементов с четными и нечетными индексами.

5.Информация о среднесуточной температуре воздуха за месяц задана в виде массива. Определить, сколько дней t была ниже 0.

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

7.Даны два массива x и y, получить новый массив Z. Элементами массива Z сначала является элементы массива x, а затем элементы массива y.

Какие умения и навыки Вы приобрели на занятии №16?

·  Рассмотрели интереснейшие задачи на обработку массивов, классифицировали эти задачи;

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

·  Умножили свой опыт анализа текстовых задач по обработке массивов;

·  Самостоятельно программно реализовали алгоритмы по обработке одномерных массивов;

Занятие 17. Двумерные массивы:

определение, заполнение, печать.

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

Когда Вы вычисляли определители, то использовали понятия главной и вспомогательной диагоналей. Сформулируем признаки элементов, принадлежащих основной и вспомогательной диагоналям, а также понятия НАД и ПОД соответствующими диагоналями. Если индексы равны, то такой элемент принадлежит главной диагонали. Если i > j, то элемент находится ПОД главной диагональю, если i < j, то такой элемент – над главной диагональю. Нетрудно видеть, что если индексы удовлетворяют условию i = n – j + 1, то элемент принадлежит вспомогательной диагонали. Если i < n – j + 1, то элемент – над вспомогательной диагональю, в противном случае – под вспомогательной диагональю.

Изучение материала – не простого, но важного – начнем с знакомства и конспектирования очередной электронной лекции.

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

SCREEN 9: COLOR 14, 1: CLS : RANDOMIZE TIMER

‘* Заполнение и вывод двумерного массива **

'* Примеры простейших задач на двумерные массивы **

'*Двумерный массив - это матрица, содержащая n строк и m cтолбцов *

'* Первый индекс - номер строки, 2-ой - столбца **

REM**** Это задание, определение двумерного массива

PRINT TAB(10); : INPUT "Сколько строк в массиве?"; n

PRINT TAB(10); : INPUT "Сколько столбцов в массиве?"; m

DIM x(n, m)

REM**** А это заполнение двумерного массива случайными числами

PRINT TAB(10); : INPUT "из какого отрезка a, b брать значения x(i, j)"; a, b

FOR i = 1 TO n: FOR j = 1 TO m

x(i, j) = INT(a + (b - a) * RND)

NEXT j, i

'*****

'***А так его можно ввести с клавиатуры****

'FOR i = 1 TO n: FOR j = 1 TO m

'PRINT "x("; i; ","; j; ") ="; : INPUT x(i, j)

'NEXT j, i

'***А так его можно ввести с помощью DATA-READ ****

'***Располагайте элементы построчно(!), их должно быть nxm ****

'DATA 2,6,-8,6,4,6,7,8,9,0,6,8

'FOR i = 1 TO n: FOR j = 1 TO m

'READ x(i, j)

'NEXT j, i

'* Элементы массива можно определить и по заданной формуле **

'*** **** Например

'FOR i = 1 TO n: FOR j = 1 TO m

'x(i, j) = (i ^ 3 - SQR(j + 1)) / (i + j)

'NEXT j, i

‘CLS

'*** А это программка распечатки двумерного массива

COLOR 10

FOR i = 1 TO n: FOR j = 1 TO m

LOCATE 3 + i * 2, 20 + j * 5: PRINT x(i, j)

NEXT j, i

COLOR 14

'*

'*** Хорошо разберитесь с тем, что выше ****

'*** А далее, собственно, решение Ваших задач ***

'** Как только начнете решать свою задачу, сохраните файл под другим именем*

'** Здесь формулируйте задачу ******

'** Приведу пример. Из произвольного двумерного массива вывести на печать

'** значения и индексы наибольшего и наименьшего элементов

'* Массив уже заполнен одним из приведенных способов

‘min = x(1, 1): max = x(1, 1): mi = 1: mj = 1: bi = 1: bj = 1

‘FOR i = 1 TO n

FOR j = 1 TO m

‘IF x(i, j) < min THEN min = x(i, j): mi = i: mj = j

‘IF x(i, j) > max THEN max = x(i, j): bi = i: bj = j

‘NEXT j

‘NEXT i

‘PRINT

'**** Выводим ответ *****

‘PRINT TAB(10); : PRINT "Максимальный элемент x("; bi; ","; bj; ") ="; max

‘PRINT TAB(10); : PRINT "Минимальный элемент x("; mi; ","; mj; ") ="; min

‘END

Рассмотрим еще одну задачу. Окрасить элементы матрицы по какому-либо признаку

'Окраска элементов массива по какому-либо признаку**

SCREEN 9: COLOR 14, 1: CLS : RANDOMIZE TIMER

PRINT TAB(10); : INPUT "Введите размерность квадратной матрицы"; n

DIM x(n, n)

a = -9: b = 9

FOR i = 1 TO n: FOR j = 1 TO n

x(i, j) = INT(a + (b - a) * RND)

NEXT j, i

COLOR 14, 1

FOR i = 1 TO n: FOR j = 1 TO n

LOCATE 3 + i * 2, 20 + j * 5: PRINT x(i, j)

NEXT j, i

COLOR 14

FOR i = 1 TO n: FOR j = 1 TO n

LOCATE 13 + i * 2, 20 + j * 5: IF i = n - j + 1 THEN COLOR 14: PRINT x(i, j)

LOCATE 13 + i * 2, 20 + j * 5: IF i < n - j + 1 THEN COLOR 4: PRINT x(i, j)

LOCATE 13 + i * 2, 20 + j * 5: IF i > n - j + 1 THEN COLOR 7: PRINT x(i, j)

LOCATE 13 + i * 2, 20 + j * 5: PRINT x(i, j)

NEXT j, i

'* Еще простейшие задачи, перепишите их в конспект, решайте ***

'* их сейчас, решайте дома, консультируйтесь друг с другом *****

'* Итак, задан двумерный массив, содержащий положительные ***

'** и отрицательные элементы, заполните и распечатайте его

'*1) Найти сумму его элементов, найти суммы положительных, отрицательных *

'*2) Найти сумму элементов главной диагонали ***

'*3) Найти сумму элементов, стоящих под (над) главной диагональю ****

'*4) Найти количество положительных (отрицательных) элементов ******

'*5) Элементы над главной диагональю заменить единицами ***

'*6) Заменить отрицательные элементы их модулями ***

'*7) Вывести на печать вместе с индексами элементы, кратные трем

'* Огромных Вам успехов в освоении двумерных массивов ****

Следующее занятие будет посвящено именно таким задачам.

Какие знания и умения Вы приобрели на занятии №17?

·  Актуализировали понятия определителя и матрицы;

·  Усвоили, что элементы двумерных массивов имеют двойной индекс – первый указывает на номер строки элемента, второй – на номер столбца;

·  Научились определять двумерные массивы, присваивать им значения;

·  Научились выводить на печать двумерные массивы в естественном виде – в виде матрицы;

·  Рассмотрели примеры задач на обработку двумерных массивов;

·  Самостоятельно программно реализовали алгоритмы по обработке одномерных массивов;

·  Получили задачи для самостоятельной разработки.

Занятие 18. Типовые задачи обработки

двумерных массивов.

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

Задачи на замену элементов массива по какому-либо признаку.

Задачи на поиск и вывод элементов массива по какому-либо признаку.

Задачи на нахождение сумм и подсчет количества элементов, удовлетворяющих какому-либо признаку.

Задачи на нахождение сумм элементов строк, столбцов и диагоналей.

Задачи на формирование одномерных массивов из элементов двумерных массивов по какому либо признаку.

Задачи на поиск наибольших (наименьших) элементов строк (столбцов) двумерных массивов.

Этот список будет продолжен на последующих уроках.

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

INPUT” Введите размерность матрицы»; n

Затем определите массив так:

DIM x(n, n)

Затем присвойте элементам массива значения. Т. к. мы не решаем конкретных технических задач, то рекомендуется присваивать элементам массива случайные значения из какого-либо интервала, концы которого задавайте оператором LET.

Заполнение массива проведите, например, так:

a = -9: b = 9

FOR i = 1 TO n: FOR j = 1 TO n: x(i, j) = INT(a + (b - a) * RND)

NEXT j, i

И не торопитесь приступать собственно к решению задачи, а выведите матрицу на печать так:

FOR i = 1 TO n: FOR j = 1 TO m

LOCATE 3 + i * 2, 20 + j * 5: PRINT x(i, j)

NEXT j, i

А теперь приступайте собственно к задаче.

Например, так.

Задача. Дана квадратная матрица. Сформировать и распечатать два одномерных массива: один составлен из сумм элементов строк матрицы, второй - из наибольших элементов строк этой матрицы

SCREEN 9: RANDOMIZE TIMER

COLOR 14, 1: CLS

PRINT TAB(5); : INPUT "Введите размерность матрицы"; n

DIM x(n, n): '**объявляем двумерный массив***

DIM s(n), m(n): '**объявляем два одномерных массива***

a = -9: b = 9: '*присвоение значений концам интервала, из которого

'***будут принимать значения элементы массива*****

FOR i = 1 TO n: FOR j = 1 TO n

x(i, j) = INT(a + (b - a) * RND): '*присвоение значений элементам массива

NEXT j, i

'***распечатали двумерный массив

COLOR 10

FOR i = 1 TO n: FOR j = 1 TO n

LOCATE 1 + i * 2, 15 + j * 5: PRINT x(i, j)

NEXT j, i

COLOR 14

FOR i = 1 TO n: '**открываем цикл по строкам по параметру i****

s = 0: '***обнулили суммы элементов каждой строки

m = x(i, 1): '***объявили наибольшим первый элемент каждой строки

FOR j = 1 TO n: '**открываем цикл по столбцам по параметру j****

s = s + x(i, j): '*прибавили к сумме элемент i-той строки*******

IF m < x(i, j) THEN m = x(i, j): '*переопределили максимальный элемент***

NEXT j: '*закрытие цикла по столбцам, если j > n, то из этого цикла

'*вышли с переменной s, имеющей значение суммы элементов i-той строки

'***и переменной m, имеющей значение наибольшего элемента i-той строки

s(i) = s: '**присвоение элементу одномерного массива суммы элементов i-той строки

m(i) = m: '**присвоение элементу одномерного массива значения наибольшего элемента i-той строки

NEXT i: '**закрытие цикла по строкам

COLOR 4

PRINT "Массив, составленный из сумм элементов строк:"

FOR i = 1 TO n

PRINT s(i); : NEXT i

PRINT

COLOR 7

PRINT "Массив, составленный из наибольших элементов строк:"

FOR i = 1 TO n

PRINT m(i); : NEXT i

А теперь самостоятельно приступайте к разработке задач:

18.1 Задачи вывода элементов по условию.

-вывести элемент, расположенный в правом верхнем углу массива;

-вывести наибольший (наименьший ) элемент массива;

-вывести любой элемент второй строки массива, определив столбец случайно;

-вывести все элементы третьей строки массива;

-вывести все элементы второго столбца массива;

18.2 Задачи на расчеты и вывод результатов.

-найти сумму элементов массива;

-найти среднее арифметическое элементов массива;

-суммы элементов строк массива, занести эти суммы в одномерный массив;

-суммы элементов столбцов массива, занести эти суммы в одномерный массив;

-определить произведение элементов, указанной пользователем строки;

-подсчитать количество элементов, превышающих среднее арифметическое элементов массива;

-определить есть ли среди элементов массива элементы, равные заданному пользователем числу;

18.3.Задачи на замены.

-все четные элементы массива увеличивать на 1;

-из всех нечетных элементов массива вычесть последний элемент соответствующего столбца;

-все элементы массива, суммы индексов которых четна, заменить числом –1;

И т. д.

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

18.4 Дана квадратная матрица a(n, n). В этой матрице:

1. вычислить сумму всех ее элементов.

2. вычислить сумму элементов над главной диагональю.

3. вычислить сумму элементов под главной диагональю

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

5. вычислить сумму элементов вспомогательной диагонали.

6. вычислить сумму элементов строки, номер строки задает пользователь.

7. вычислить сумму элементов столбца, номер столбца задает пользователь.

8. определить наибольший и наименьший элементы с их индексами.

9. определить суммы положительных и отрицательных элементов.

10. определить сумму элементов, больших заданного числа t.

11.сформировать массив a(n, n), элементы которого образованы по правилу b(i, j)=(2a(i, j)+3)(3a(i, j)-2).

12. найти среднее значение сумм диагональных элементов.

13. сформировать одномерный массив из элементов главной диагонали.

14. все элементы главной диагонали заменить наибольшим элементом всего массива.

15.ко всем четным элементам массива прибавить 1.

16.все элементы, сумма индексов которых четна заменить на -1.

17. заменить элементы второго столбца суммой элементов этого столбца.

18. вставить после второй строки строку, состоящую из единиц.

19. все отрицательные элементы записать в одномерный массив.

20. все отрицательные элементы записать в один одномерный массив, положительные в другой.

21. все четные элементы записать в один одномерный массив, нечетные - в другой.

22. записать в одномерный массив по возрастанию элементы данной матрицы.

23. заменить нулем все элементы кроме элементов первых и последних строк и столбцов.

24. вывести на печать индексы нулевых элементов или выдать сообщение о том, что таковых нет.

Какие знания, умения и навыки Вы приобрели на занятии №18?

·  Классифицировали типовые задачи по обработке двумерных массивов;

·  Закрепили операции определения, присвоения значений, распечатки двумерного массива;

·  Рассмотрели примеры задач на обработку двумерных массивов;

·  Самостоятельно программно реализовали алгоритмы по обработке двумерных массивов;

·  Получили задачи для самостоятельной разработки.

Занятие 19. Реализация более сложных алгоритмов

обработки двумерных массивов

Словосочетание «более сложных алгоритмов» весьма условно. Для студентов специальности 2202 это стандартные, типовые задачи, которые необходимо освоить безусловно!

На этом занятии приведем в электронном виде формулировку задач и их программную реализацию. Вам необходимо вникнуть в суть задачи, при необходимости задать вопрос преподавателю, снять REM и убедиться в ее работе. Безусловно, внести в свои конспекты. Программы приводятся без комментариев с предложением к Вам разобраться самостоятельно и «защитить» понимание их работы.

Итак, задачи.

SCREEN 9: COLOR 14, 1: CLS

RANDOMIZE TIMER

'***Оглавление****

'***1 - от одномерного массива к двумерному*

'***2 - вспомогательная диагональ квадратной матрицы*****

'***3 - транспонирование прямоугольной матрицы*****

'***4 - поиск равных элементов матрицы*****

'***5 - удаление строки или столбца матрицы*****

'***6 - добавление строки или столбца в матрицу*****

'***7 - формирование симметричной матрицы *

'***8 - магический квадрат

'**Снимайте REM и запускайте по очереди программы

'***Больших Вам успехов! Е. И.

1 - Из одномерного к двумерному (понятна задача?). Если нет. Задан одномерный массив, необходимо образовать из его элементов матрицу, считывая элементы массива построчно.

'INPUT "Сколько элементов в одномерном массиве"; n

'DIM a(n)

'3 INPUT "Сколько строк в двумерном массиве"; k

'IF n / k <> n \ k THEN PRINT "Ты не прав, n должно делиться на к": GOTO 3

'DIM b(k, n / k)

'FOR i = 1 TO n

'a(i) = INT(-10 + 20 * RND)

'PRINT a(i);

'NEXT i

'PRINT : PRINT

'p = 0

'FOR i = 1 TO k: FOR j = 1 TO n / k

'p = p + 1: b(i, j) = a(p)

'NEXT j, i

'FOR i = 1 TO k: FOR j = 1 TO n / k

'LOCATE 5 + i * 2, 20 + j * 5: PRINT b(i, j)

'NEXT j, i

'***2 - вспомогательная диагональ квадратной матрицы*****

'n = 4: m = 4

'DIM a(n, m)

'a = -8: b = 9

'REM**** Это заполнение двумерного массива случайными числами*

'FOR i = 1 TO n: FOR j = 1 TO m

'a(i, j) = INT(a + (b - a) * RND)

'NEXT j, i

'*** А это его распечатка *

'COLOR 10

'FOR i = 1 TO n: FOR j = 1 TO m

'LOCATE 3 + i * 2, 5 + j * 5: PRINT a(i, j)

'NEXT j, i

'COLOR 14

'****Это один из признаков вспомогательной диагонали *******

'FOR i = 1 TO n: FOR j = 1 TO m

'IF j = n - i + 1 THEN a(i, j) = 0 ELSE a(i, j) = 1

'NEXT j, i

'*******А это еще один***

'FOR i = 1 TO n: FOR j = 1 TO m

'IF i + j > n + 1 THEN a(i, j) = 1

'IF i + j < n + 1 THEN a(i, j) = -1

'NEXT j, i

'FOR i = 1 TO n: FOR j = 1 TO m

'LOCATE 13 + i * 2, 5 + j * 5: PRINT a(i, j)

'NEXT j, i

'COLOR 14

3 - транспонирование прямоугольной матрицы – замена строк столбцами, столбцов - строками

'INPUT "сколько строк в массиве?"; n

'INPUT "сколько столбцов в массиве?"; m

'DIM a(n, m), b(m, n)

'a = -8: b = 9

'REM**** Это заполнение двумерного массива случайными числами*

'FOR i = 1 TO n: FOR j = 1 TO m

'a(i, j) = INT(a + (b - a) * RND)

'NEXT j, i

'*** А это его распечатка *

'COLOR 10

'FOR i = 1 TO n: FOR j = 1 TO m

'LOCATE 3 + i * 2, 1 + j * 5: PRINT a(i, j)

'NEXT j, i

'COLOR 14

'FOR i = 1 TO n: FOR j = 1 TO m

'b(j, i) = a(i, j): NEXT j, i

'SWAP n, m: '****Подумайте, зачем это...*****

'FOR i = 1 TO n: FOR j = 1 TO m

'LOCATE 13 + i * 2, 1 + j * 5: PRINT b(i, j)

'NEXT j, i

'COLOR 14

'***4 - поиск равных элементов матрицы*****

INPUT "сколько строк в массиве?"; n

INPUT "сколько столбцов в массиве?"; m

DIM a(n, m)

INPUT "из какого отрезка a, b брать значения x(i, j)"; a, b

REM**** Поиск равных элементов двумерного массива

FOR i = 1 TO n: FOR j = 1 TO m

a(i, j) = INT(a + (b - a) * RND)

NEXT j, i

COLOR 10

FOR i = 1 TO n: FOR j = 1 TO m

LOCATE 3 + i * 2, 1 + j * 5: PRINT a(i, j)

NEXT j, i

COLOR 14

FOR i = 1 TO n: FOR j = 1 TO m

r = a(i, j)

FOR k = i TO n

FOR q = j + 1 TO m

IF a(k, q) = r THEN PRINT "a("; i; ","; j; ") = a("; k; ", "; q; ") = "; r

NEXT q

NEXT k

NEXT j, i

'***5 - удаление строки или столбца матрицы*****

'INPUT "сколько строк в массиве?"; n

'INPUT "сколько столбцов в массиве?"; m

'DIM a(n, m)

'a = -9: b = 9

'FOR i = 1 TO n: FOR j = 1 TO m

'a(i, j) = INT(a + (b - a) * RND)

'NEXT j, i

'COLOR 10

'FOR i = 1 TO n: FOR j = 1 TO m

'LOCATE 3 + i * 2, 1 + j * 5: PRINT a(i, j)

'NEXT j, i

'COLOR 14

'INPUT "Удалить строку"; t

'FOR i = t TO n - 1: FOR j = 1 TO m

'SWAP a(i, j), a(i + 1, j)

'NEXT j, i

'n = n - 1: FOR i = 1 TO n: FOR j = 1 TO m: a(i, j) = a(i, j): NEXT j, i

'INPUT "Удалить столбец"; t

'FOR j = t TO m - 1: FOR i = 1 TO n: SWAP a(i, j), a(i, j + 1)

'NEXT i, j

'm = m - 1: FOR i = 1 TO n: FOR j = 1 TO m: a(i, j) = a(i, j): NEXT j, i

'FOR i = 1 TO n: FOR j = 1 TO m

'LOCATE 13 + i * 2, 1 + j * 5: PRINT a(i, j)

'NEXT j, i

'COLOR 14

'***6 - добавление строки или столбца в матрицу*****

n = 4: m = 4

'DIM a(n + 1, m)

'a = -8: b = 9

'FOR i = 1 TO n: FOR j = 1 TO m

'a(i, j) = INT(a + (b - a) * RND)

'NEXT j, i

'COLOR 10

'FOR i = 1 TO n: FOR j = 1 TO m

'LOCATE i * 2, 5 + j * 5: PRINT a(i, j)

'NEXT j, i

'COLOR 14

'INPUT "Какую строку вставить"; r

'FOR i = n TO r STEP -1: FOR j = 1 TO m

'SWAP a(i, j), a(i + 1, j)

'NEXT j, i

'PRINT "Введите строку, после набора каждого элемента - Enter"

't = CSRLIN

'FOR j = 1 TO m: LOCATE t, 2 + 3 * j: INPUT a(r, j): NEXT j

'FOR i = 1 TO n + 1: FOR j = 1 TO m

'LOCATE 13 + i * 2, 5 + j * 5: PRINT a(i, j)

'NEXT j, i

'COLOR 14

'*****Самостоятельно разработайте программу вставки столбца

'***7 - формирование симметричной матрицы *

'n = 4: m = 4

'DIM x(n, m)

'a = -10: b = 10

'FOR i = 1 TO n: FOR j = 1 TO m

'x(i, j) = INT(a + (b - a) * RND)

'NEXT j, i

'COLOR 10

'FOR i = 1 TO n: FOR j = 1 TO m

'LOCATE 1 + i * 2, 20 + j * 5: PRINT x(i, j)

'NEXT j, i

'COLOR 14

'*****Матрица называется симметричной, если x(i, j)=x(j, i)***

'FOR i = 1 TO n: FOR j = 1 TO m

'IF i > j THEN x(i, j) = x(j, i)

'NEXT j, i

'FOR i = 1 TO n: FOR j = 1 TO m

'LOCATE 10 + i * 2, 20 + j * 5: PRINT x(i, j)

'NEXT j, i

'*8 - магический квадрат. Это занимательная классическая задача. Вспомните известную картину известного художника.

'*Магический квадрат это квадратная матрица, у которой суммы элементов строк, столбцов и диагоналей РАВНЫ *

'*Это задача уже для олимпиады, постарайтесь разобраться в этой интересной программе

'n = 3: m =3

'DIM a(n, m), s(n ^ 2 + 2)

'a = 1: b = 6

'k = 0

'5 k = k + 1

'LOCATE 1, 35: PRINT k

'FOR i = 1 TO n: FOR j = 1 TO m

'a(i, j) = INT(a + (b - a) * RND)

'NEXT j, i

'COLOR 10

'FOR i = 1 TO n: FOR j = 1 TO m

'LOCATE 2 + i * 2, 15 + j * 5: PRINT a(i, j)

'NEXT j, i

'COLOR 14

'PRINT

'PRINT "Строки:"

'FOR i = 1 TO n:

's = 0: FOR j = 1 TO m: s = s + a(i, j)

'NEXT j

's(i) = s

'PRINT s(i);

'NEXT i

'PRINT

'PRINT "Столбцы:"

'FOR i = 1 TO n:

's = 0: FOR j = 1 TO m: s = s + a(j, i)

'NEXT j

's(n + i) = s

'PRINT s(n + i);

'NEXT i

'PRINT

'PRINT "Диагонали:"

's1 = 0: s2 = 0

'FOR i = 1 TO n:

'FOR j = 1 TO m

'IF i = j THEN s1 = s1 + a(i, j)

'IF i + j = n + 1 THEN s2 = s2 + a(i, j)

'NEXT j: NEXT i

's(2 * N + 1) = s1: s(2 * N + 2) = s2:

'PRINT s1; s2

'PRINT

'FOR i = 2 TO 2 * N + 2:

'IF s(1) <> s(i) THEN 5

'NEXT i

't = a(1, 1)

'FOR i = 1 TO N: FOR j = 1 TO m

'IF a(i, j) = t THEN 10 ELSE END

'10 NEXT j, i

'GOTO 5

'******Задача по экономике

'*У фирмы три магазина. Известен доход каждого магазина в каждый день первой декады месяца. ОПРЕДЕЛИТЬ

'SCREEN 9: COLOR 1, 14

'RANDOMIZE TIMER: CLS

'DIM a(3, 10)

'FOR i = 1 TO 3

'FOR j = 1 TO 10

'a(i, j) = INT(10 + 50 * RND)

'NEXT j, i

'FOR i = 1 TO 3

'LOCATE 1 + i, 2: PRINT "Магазин №"; i

'FOR j = 1 TO 10

'LOCATE 1, 11 + j * 6: PRINT j; "-е"

'LOCATE 1 + i, 12 + j * 6: PRINT a(i, j)

'NEXT j

'NEXT i

'*1)Какой из магазинов получил максимальный общий доход за 10 дней

's = 0: max = 0: k = 0

'FOR i = 1 TO 3

'FOR j = 1 TO 10

's(i) = s(i) + a(i, j)

'NEXT j

'IF s(i) > max THEN max = s(i): k = i

'NEXT i

'PRINT TAB(7); "Максимальный доход получил"; k; "магазин, он получил"; max; "руб"

'*2)Какого числа фирма получила максимальный общий доход

'w = 0: max = 0: k = 0

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7