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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



 

Пример 1. Подсчитать общую сумму 10 чисел, записанных статически в массив и количество отрицательных чисел в этом массиве.

 

DATA 3,4,5,-8,10.67,2.7,765,-6.98,9,-1

DIM A(10)

FOR I=1 TO 10

READ A(I)

S=S+A(I)

IF A(I)<0 THEN N=N+1

NEXT I

PRINT " сумма=";S,"N=";N

END

 

Пример 2. Задан массив К(45). Определить минимальный элемент массива и его индекс.

 

DIM K(45)

FOR I=1 TO 45 ' Заполнение массива

INPUT K(I)

NEXT I

MIN=A(1) ' Переменной MIN присваивается первое значение массива

FOR I=2 TO 45

IF A(I) < MIN THEN MIN=A(I):K=I

NEXT I

PRINT "Минимальный элемент=";MIN, "его индекс=";K

END

 

 

Пример 3. Дан массив М(30). Элементы массива - произвольные числа. Выдать на экран значения каждого пятого элемента. Указанные элементы выдать в строку.

DIM M(30)

FOR I=1 TO 30

M(I)=INT(RND(1)*15)

PRINT M(I);

NEXT I

PRINT

FOR I=5 TO 30 STEP 5

PRINT M(I); ' Вывод каждого пятого элемента массива

NEXT I

 

Пример 4. Сформировать из N элементов одномерный массив А и вывести его на печать в виде K столбцов.

INPUT " Введите количество элементов массива ";N

DIM A(N)

FOR I=1 TO N

A(I)=INT(RND(1)*10)

NEXT I

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

FOR I=1 TO N

PRINT A(I);

IF I MOD K = 0 THEN PRINT

NEXT I

END

 

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

Y=(SIN X+1) COS 4X

Значения аргумента заданы статически в массиве X(10). Значения функции записать в массив Y(10) и распечатать в пять строк.

DATA 5,6.78,56,7.34,678,89,5,23.9,10,34.7

DIM X(10),Y(10)

FOR J=1 TO 10

READ X(J)

NEXT J

FOR J=1 TO 10

Y(J)=(SIN(X(J))^2+1)*SQR(COS(4*X(J))^2)

PRINT Y(J);

IF J MOD 2 = 0 THEN PRINT

NEXT J

END

Двумерные массивы

 

Основные понятия

 

Бейсик позволяет работать с массивами, имеющими до 255 измерений и содержащими до 32767 элементов по каждому из них. Однако следует хорошо подумать, стоит ли использовать эти возможности в полном объеме. Если вы сделаете свои массивы слишком большими, то будете долго вспоминать, как получить доступ к той или иной информации. В то же время иногда решение задачи возможно только при наличии многомерных массивов, или матриц. Наиболее часто применяются двумерные массивы, поскольку описывать информацию по ее позиции в одномерном списке весьма неудобно. Представьте себе, как трудно было бы найти свое место на стадионе, если бы на билете указывался лишь порядковый номер сиденья - один из многих тысяч! Билеты же, на которых проставлены и номер ряда, и номер места, существенно упрощают эту задачу. Составители географических карт тоже пользуются таким приемом. Координаты Парижа, Осло, Рима, обозначаются не как 1, 2 или 300, а в терминах градусов широты и долготы. Эти два числа указывают местоположение города относительно экватора и начального (Гринвичского) меридиана.

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

 

Имя и размерность матрицы определяется оператором

DIM A(3,4)

 

Этот оператор зарезервирует 12 ячеек:

A(1,1), A(1,2), A(1,3), A(1,4)

A(2,1), A(2,2), A(2,3), A(2,4)

A(3,1), A(3,2), A(3,3), A(3,4)

 

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

 

  Столбец 1 столбец 2 столбец 3 столбец 4
строка 1 1,1 1,2 1,3 1,4
строка 2 2,1 2,2 2,3 2,4
строка 3 3,1 3,2 3,3 3,4

 

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

 

Заполнение массива

 

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

DATA Настя, Ульяна, Женя

DATA Щербакова, Евланова, Клочко

DIM A$(2,3)

FOR I=1 TO 2 ' Заполнение массива

FOR J=1 TO 3

READ A$(I,J)

NEXT J,I

FOR I=1 TO 2

FOR J=1 TO 3 ' Печать значений массива по строкам

PRINT A$(I,J);

NEXT J

PRINT

NEXT I

 

 

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

DIM A(5,4)

FOR I=1 TO 5 ' Заполнение массива

FOR J=1 TO 4

INPUT A(I,J)

NEXT J,I

FOR I=1 TO 5 ' Печать значений массива по строкам

FOR J=1 TO 4

PRINT A(I,J);

NEXT J

PRINT

NEXT I

 

 

Пример заполнения массива с помощью стандартной функции RND.

DIM M(2,8)

FOR I=1 TO 2

FOR J=1 TO 8

M(I,J)=INT(RND(1)*10) ' Заполнение массива случайными

PRINT M(I,J); ' числами и печать значений массива

NEXT J ' по строкам

PRINT

NEXT I

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

 

Пример 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

 

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

 

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

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

 

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-подоходный налог. Расчет заработной платы оформить в подпрограмме.

 

 

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

 

 

Оператор LINE INPUT

 

Оператор LINE INPUT позволяет ввести с клавиатуры строку длиной до 255 символов

Формат:

LINE INPUT “ комментарии”,T$

T$ - строковая переменная.

Выполнение команды LINE INPUT проводится аналогично команде INPUT с той лишь разницей, что:

· Вводится обязательно строковое и только одно значение;

· За поясняющим сообщением нет знака вопроса;

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

Например:

LINE INPUT”введите фамилии”,T$

<набираем: Иванов, Петров, Николаев >

после этого T$ будет содержать: Иванов, Петров, Николаев

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

 

Со строковыми данными возможна одна операция конкатенация – объединение двух строковых последовательностей в одну.

Формат:

A$ + B$

 

Например:

A$=”Графический”

D$=” редактор”

T$=A$+B$

PRINT T$

<На экране появится: Графический редактор>

 



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 214; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.8.141 (0.049 с.)