|
Здравствуйте,ясдавала 15 тестов и экзамен. Мне нужно сейчас посмотреть результаты тестов.Как это сдлеать? |
Данные, их типы, структуры и обработка
Наиболее часто используемая структура данных – массив.
Одномерный массив (вектор, ряд, линейная таблица) – это совокупность значений некоторого простого типа (целого, вещественного, символьного, текстового или логического типа), перенумерованных в каком-то порядке и имеющих общее имя. Для выделения конкретного элемента массива необходимо указать его порядковый номер в этом ряду.
Пример. Последовательность чисел 89, –65, 9, 0, –1.7 может образовывать одномерный вещественный массив размерности 5, например, с именем x вида: x[1] = 89, x[2] = –65, x[3] = 9, x[4] = 0, x[5] = –1.7.
Значение порядкового номера элемента массива называется индексом элемента.
Пример. Можно ссылаться на элемент х[4], элемент х[i], элемент x[4+j] массива х. При текущих значениях переменных i = 2 и j = 1 эти индексы определяют, соответственно, 4-й, 2-й и 5-й элементы массива.
Для обозначения (нового типа объектов) массивов в алгоритмических языках обычно вводится специальное служебное слово.
Пример. В ШАЯ – это слово "таб", после которого приводится имя массива и в квадратных скобках его размерность, например, для одномерного массива – в виде [m:n], где m – номер первого элемента массива (часто 1), n – номер последнего элемента (шаг перебора элементов равен 1). На Паскале имеется соответствующее слово array. Вышеуказанная последовательность из пяти чисел описывается на ШАЯ в виде: вещ таб x[1:7], а на Паскале (в рамках рассматриваемого нами его ядра) необходимо указывать предельную величину размерности:
x: array [1..100] of real;.
Двумерный массив ( матрица, прямоугольная таблица) – совокупность одномерных векторов, рассматриваемых либо "горизонтально" (векторов-строк), либо "вертикально" (векторов-столбцов) и имеющих одинаковую размерность, одинаковый тип и общее имя.
Матрицы, как и векторы, должны быть в алгоритме описаны служебным словом (например, таб или array ), но в отличие от вектора, матрица имеет описание двух индексов, разделяемых запятыми: первый определяет начальное и конечное значение номеров строк, а второй – столбцов.
Пример. Если матрица x описана в виде
x: array [1..5, 1..3] of real; ,
то определяется таблица из 5 строк (от 1-й до 5-й строки) и 3 столбцов (от 1-го до 3-го столбца) вида:
| (столбец 1) | (столбец 2) | (столбец 3) | |
|---|---|---|---|
| x11 | x12 | х13 | (строка 1) |
| x21 | x22 | х23 | (строка 2) |
| х31 | х32 | х33 | (строка 3) |
| х41 | x42 | х43 | (строка 4) |
| х51 | x52 | х53 | (строка 5) |
Для актуализации элемента двумерного массива нужны два его индекса – номер строки и номер столбца, на пересечении которых стоит этот элемент.
Пример. Элемент х[3,2] – элемент на пересечении 3-й строки и 2-го столбца массива х.
Рассмотрим ряд задач, решаемых с помощью массивов.
Пример. Составим алгоритм (программу) нахождения суммы и произведения всех элементов одномерного массива. Метод решения: начиная с нулевого значения суммы, добавляем поочередно новый элемент ряда и находим значение искомой суммы; начиная с начального, единичного произведения, находим искомое произведение, умножая текущее значение произведения на очередной элемент ряда. Алгоритм (программа) имеет вид
Program SPM1;
Uses Crt;
Var x: array [1..100] of real;
n, i: integer;
s, р: real;
Begin
ClrScr;
WriteLn('Введите размерность массива :'); { приглашение к вводу входного параметра }
ReadLn(n); { ввод входного параметра }
WriteLn('Введите элементы массива:'); { приглашение к вводу массива }
for i:=1 to n do { цикл ввода элементов массива }
begin
write('x[',i,']='); { приглашение к вводу текущего элемента массива}
readln(x[i]) { ввод текущего элемента массива }
end;
s:=0; { начальное значение суммы – нуль }
p:=1; { начальное значение произведение – единица [u1]}
for i:=1 to n do { цикл вычисления суммы и произведения }
begin
s:=s+x[i]; { добавление к сумме очередного слагаемого }
p:=p*x[i] { домножение произведения на очередной множитель }
end;
WriteLn('Полученная сумма равна ', s: 3:3); { вывод полученной суммы }
WriteLn('Полученное произведение равно ', p: 3:3); { вывод полученного произведения }
End.Пример. Составим алгоритм вычисления суммы бесконечного ряда чисел а[1], а[2], а[3], ... с точностью е, при условии, что точность всегда достигается для номера члена ряда не более 1000000 (это "неестественное" ограничение нужно для того, чтобы в Паскале было проще объявить размерность массива а ). Метод решения: сравниваем две суммы – одна сумма была получена на предыдущем шаге суммирования, а вторая – добавлением к ней очередного слагаемого (то есть их разность и равна очередному добавленному элементу ряда ); процесс суммирования продолжается до тех пор, пока разность по модулю не станет меньше точности суммирования. Алгоритм (программа) имеет вид
Program SumND;
Uses Crt;
Var a: array [1..1000000] of real;
i: integer;
e, p, s: real;
begin
ClrScr;
WriteLn('Введите точность :'); { приглашение к вводу входного параметра }
ReadLn(e); { ввод входного параметра }
i:=1; { начальный номер члена ряда }
WriteLn(‘введите первые два элемента :’); { приглашение к вводу входных параметров }
ReadLn(a[1], a[2]); { ввод входных параметров }
р:=а[1]; { запоминаем начальную сумму – сумму одного элемента }
s:=р+a[2]; { запоминаем начальную следующую сумму – сумму двух элементов }
while (abs(s–p)>e) do { цикл суммирования, пока слагаемые влияют на сумму }
begin
i:=i+1; { переход к следующему элементу }
p:=s; { "старую" сумму заменяем "новой", полученной добавлением еще одного }
s:=s+а[i]; { вычисляем "новую" сумму }
WriteLn(‘введите a[‘, i, ‘]=’); { приглашение к вводу очередного элемента ряда }
ReadLn(a[i]); { ввод очередного элемента ряда }
end;
WriteLn('Полученная сумма равна ', s: 3:3); { вывод результата }
End.
