Табличная организация данных Массивы

Download Report

Transcript Табличная организация данных Массивы

Табличная организация данных
Массивы
Удобной формой для организации данных являются таблицы.
Различают таблицы:
1. Линейные. Данные располагаются в одну строку R=[ 165,170,171,158,160]
R(1)
165
R(2)
170
R(3)
171
R(4) R(5)
158
160
2.Прямоугольные ( несколько строк)
Все элементы таблицы имеют одно имя и отличаются только номером.
3
5
0 -1
A= -2 1 -8 6
2 4 -3 0
А(1,1)=3
В линейных таблицах – один номер(индекс)
А(2,3)=-8 В прямоугольных – два (номер строки,
номер столбца)
А(3,4)= 0
Для организации таблиц в программах используют массивы.
Массив - упорядоченная последовательность величин,
обозначенных одним именем.
Элементы массива - индексированные переменные.
Индексы - выражения, имеющие целые положительные значения,
разделяются запятой, если их несколько. Отрицательный индекс ошибка!
Индексы могут быть заданы:
Числом: А(2), С(3,5)
Переменной: А(i), B(i,j)
Для описания в программах таблиц (массивов) используется
команда DIM (DIMENSION - размерность), которая пишется
в программе до использования массива.
DIM A(15) DIM B(3,4)
Одной командой DIM можно описывать несколько массивов:
DIM A%(9), B$(12), C(3,5)
Команда DIM определяет:
1. Имя массива (таблицы)
2. Тип элементов массива (числ., символьный)
3. Размерность массива (определяется количеством индексов):
 одномерный (линейный, вектор) - один индекс
 двумерный (матрица) – два индекса
4. Количество элементов (указан номер последнего
элемента, номер первого по умолчанию=0)
5. Занимает место в оперативной памяти для элементов
массива
Примеры:
1. DIM A(8)
2. DIM B%(2,3)
Имя – В%
3. DIM C$(5)
Имя - C$
Имя – А
Тип – символьный
Тип - числ. вещ. один. точн. Тип - числовой целый
Размерность – линейный Размерность – двумерный
Размерность – вектор
Кол-во элементов – 8
Кол-во элементов: 23=6 PS.
Кол-во элементов - 5
(Если не учитывать нулевой
элемент)
Для ввода значений элементов массива используют команды
LET(присвоить), INPUTи DATA, READ.
Для вывода PRINT.
Ввод, вывод, обработка элементов линейных массивов выполняется
как правило с использованием циклов, где параметром цикла
является номер элемента массива.
Выводить значения элементов можно в столбец или строку.
Примеры:
DIM A(12)
FOR I= 1 TO 12
INPUT “Элемент”; A(I)
NEXT I
DIM C$(5)
DATA ИРА, САША, ОЛЯ, МАША, ТОЛЯ
FOR I=1 TO 5
READ C$(I)
( Имена выводятся в столбец)
PRINT C$(I)
NEXT I
Задача. Создать массив, N элементов которого являются случайные
целые числа из интервала [-40;40]. Определить:
1. Сумму элементов с нечетными номерами
2. MIN элемент и его номер
3. Кол-во элементов, имеющих четные значения
4. Произведение элементов, значения которых >5
5. Упорядочить элементы таблицы по возрастанию
I.
Математическая модель
Связь:
Дано: N – кол-во элем.
I – счетчик чисел, параметр цикла
А(N) – массив случ. чисел
A(I) = INT(RND*80-40)
Найти:
1. Если номер I нечетный, то
S=S+A(I)
1. S – сумма элем. нечет. номер
2. M – min элемент, L – номер min 2. Пусть M=A(1), L=1
3. K – кол-во элем. с четн. энач.
Если A(I)<M, то M=A(I), L=I
4. P – произвед. элемен. >5
3. Если A(I) число четное, то К=К+1
5. Сортировка по возрастанию
4. Если A(I) >5, то P=P*A(I)
Программа:
CLS
INPUT “N”; N
DIM A(N)
REM Создание массива и
вывод его элементов на
экран
FOR I=1 TO N
A(I) = INT(RND*80-40)
PRINT «A(»; I ; «)=»; А(I)
NEXT I
REM Сумма нечет. номер.
S=0
FOR I=1 TO N STEP 2
S=S+A(I)
NEXT I
PRINT”S=“;S
REM MIN элем.
M=A(1) :L=1
FOR I=2 TO N
IF A(I)<M THEN M=A(I): L=I
NEXT I
PRINT”MIN=“;M
PRINT”номер MIN=“;L
REM Кол-во элем. четн. знач.
K=0
FOR I=1 TO N
IF A(I) MOD 2=0 THEN К=К+1
NEXT I
PRINT”К=“;К
REM Произв. элем. >5
P=1
FOR I=1 TO N
IF A(I) >5 THEN P=P*A(I)
NEXT I
PRINT ”P=“ ; P
A(1)
A(2)
A(3)
A(4)
21
15
2
-8
A(5) A(6)
34
-5
-8
15
2
21
34
-5
-8
-5
2
21
34
15
-8
-5
2
21
34
15
-8
-5
2
15
34
21
-8
-5
2
15
21
34
REM Cортировка по возрастанию
FOR I=1 TO N-1
M=A(I): K=I
FOR J=I+1 TO N
IF M>A(J) THEN M=A(J): K= J
NEXT J
SWAP A(I), A(K)
NEXT I
REM Вывод элементов
FOR I=1 TO N
P.S.Для выполнения
PRINT A(I);
сортировки по
убыванию
NEXT I
необходимо искать
Сортировка методом прямого выбора:
максимальный
М - минимальный элемент массива
элемент и ставить
его на первое место
К - его номер
в рассматриваемой
1.Выбирается элемент с наименьшим значением
части массива.
2.Меняется с первым элементом массива
3.Процесс повторяется с оставшимися N-1 элементами, N-2
элементами и т.д., до тех пор, пока не останется один, самый
большой элемент
Команда SWAP A(I), A(K) - обмен значениями элементов A(I), A(K)
Ввод, вывод, обработка элементов двумерных массивов
выполняется, как правило, с использованием сложных циклов, где
параметром внешнего цикла является номер строки массива, а
внутреннего - номер столбца.
Выводить значения элементов можно в строку, столбец или, чаще всего, в
виде таблицы.
Пример:
Элементы матрицы - случайный целые числа выводятся в виде таблицы
10 DIM A(3,4)
20 FOR I=1 TO 3
30 FOR J= 1 TO 4
40 A(I,J)= INT(RND*40-20)
50 PRINT A(I,J);
60 NEXT J
70 PRINT
80 NEXT I
В строке 50 точка с запятой(;)
обеспечивают вывод элементов
одной строки матрицы в одну
строку экрана.
Строка 70 PRINT (пустой)
обеспечивает вывод элементов
новой строки матрицы с новой
строки экрана. (Примерный вид
матрицы на экране).
4 -8 6 1
3 12 1 –9
-5 17 -4 0
Задача. «Анализ успеваемости класса»
В классе N учеников. Создать массивы их фамилий и оценок за
полугодие по М предметам.
1. Напечатать ведомость успеваемости
2. Найти кол-во ударников и напечатать их фамилии
3. Найти средний балл успеваемости класса
4. Найти средний балл каждого ученика, результаты сохранить в массиве
5. Найти средний балл по каждому предмету, результаты сохранить в
массиве
B(N,M)
Ударников К= 2:
F$(1) Пац
4
5
5
4
4
F$(2) Гуц
3
3
3
3
3
F$(3) Рец
5
5
5
5
4
4,8 U(3)
F$(4) Пак
4
4
3
3
3
3,4 U(4)
4
4.25
4
3.75 3,5
P(1) P(2) P(3) P(4) P(5)
4,4 U(1)
3
U(2)
Пац
Рец
Средний балл
успеваемости
класса:
SB= 3,9
I.
МАТЕМАТИЧЕСКАЯ МОДЕЛЬ
Связь:
Дано:
I – счетчик учеников
N – кол-во учеников
J – счетчик предметов
M – кол-во предметов
2. Если «ударник», то К=К+1
F$(N) – массив фамилий
3. S=S+B(I,J) – суммирование
элементов матрицы, строк или
столбцов
B(N,M) – массив оценок
Результат:
1. Ведомость успеваемости
2. К – кол-во Ударников
3. SB – ср. балл успев. класса
4. U(N) – средний балл ученика
5. P(M) - средний балл предмета
SB=S/(N*M)
4. U(I)=S/M – средний балл
ученика
5. P(J)=S/N – средний балл
предмета
Программа:
PRINT «Ведомость»
FOR I =1 TO N
PRINT F$(I);
FOR J =1 TO M
PRINT B(I, J);
NEXT J
PRINT
NEXT I
CLS
N=4: M=5
DATA Пац ,4,5, 5, 4, 4
DATA Гуц, 3, 3, 3, 3, 3
DATA Рец, 5, 5, 5, 5, 4
DATA Пак, 4, 4, 3, 3, 3
PRINT «Ударники»
DIM F$(N), B(N,M), U(N), P(M)
FOR I =1 TO N
REM Создание массивов Z=0 (сигнальная переменная)
FOR J =1 TO M
FOR I =1 TO N
IF B(I,J) < 4 THEN Z=1
READ F$(I)
NEXT J
FOR J =1 TO M
IF Z=0 THEN K=K+1: ? F$(I)
READ B(I, J)
NEXT I
PRINT “K=“; K
NEXT J
NEXT I
PRINT «Средний балл класса»
S=0
FOR I =1 TO N
FOR J =1 TO M
S=S+ B(I, J)
NEXT J
NEXT I
SB= S/ (N*M)
PRINT «SB=»; SB
PRINT «Средний балл ученика»
FOR I =1 TO N
S=0
FOR J =1 TO M
S=S+ B(I, J)
NEXT J
U(I) = S/M
PRINT F$(I); U(I)
NEXT I
PRINT «Средний балл предмета»
FOR J =1 TO M
S=0
FOR I =1 TO N
S=S+ B(I, J)
NEXT I
P(J) = S/N
PRINT «Средний балл по»; J; «предмету=» ; P(J)
NEXT J
Задача. Задан список участников соревнований по
плаванию и их результаты. Напечатать фамилию и
результат чемпиона
Программа:
Дано:
N – кол-во
спортсменов
F$(N) – массив
фамилий
R(N) – массив
результатов
Найти:
L – номер MIN
F$(L)- фамилия
чемпиона
CLS
N=5
DIM F$(N), R(N)
DATA Иванов, 15, Петров, 20, Сидоров,
13,Ким, 16,Пац,18
REM создание массивов
FOR I=1 TO N
READ F$(I), R(I)
NEXT I
REM поиск MIN
M=R(1) :L=1
FOR I=2 TO N
IF R(I)<M THEN M=R(I): L=I
NEXT I
PRINT”чемпион “;F$(L)