Var k,n,s,d,i,u,s1:integer; a:array[1..20] of integer; begin randomize; readln(k,n); for i:=1 to 20 do a[i]:=random(10); for i:=1 to n do begin s:=s+a[i]; inc(u); end; writeln( 'Среднее арифметическое в массиве = ', s/u ); for i:=1 to k do s1:=s1+a[i]; writeln('Сумма:',s1); for i:=1 to 20 do if a[i]<s/u then d:=d+1; writeln('Количество:',d); writeln('Массив:'); for i:=1 to 20 do write(a[i],','); end.
Массивы Массив – это упорядоченная совокупность данных, обозначаемых одним именем, доступ к элементам массива осуществляется по их номерам (индексам). Элементами массива могут быть данные любого типа, включая структурированные, но в одном массиве могут храниться данные только одного типа (real, integer, string, char и пр.). Если за каждым элементом массива закреплен только один его порядковый номер, то такой массив называется линейным, одномерным или вектором. Одномерные массивы
Объявление одномерных массивов Описать одномерный массив можно несколькими В разделе переменныхVar имя массива : Array [тип индекса] of тип элементов ; В разделе описания типовType имя типа = Array [тип индекса] of тип элементов ;Var имя массива : имя типа ; В разделе константConst имя массива : Array [тип индекса] of тип элементов = (список элементов);
Ввод данных в одномерный массив 1. Ввод массива с клавиатуры оператором Read. For i:=1 to n do Begin Writeln('введите элемент массива'); Read (A[ i ]); 2. Заполнение массива с генератора случайных чисел Random на интервале (a,b): Randomize; For i:=1 to n do A[ i ] := Random (b-a)+a; 3. Ввод массива в разделе констант (производится вместе с объявлением). Const N=5; A:=array [1..N] of integer (-8,0,4,1,3); Вывод данных в одномерном массиве Вывод массива в Паскале осуществляется также поэлементно, в цикле, где параметром выступает индекс массива, принимая последовательно все значения от первого до последнего. Вывод в строку. A: array [1..10] of integer; i : integer ; Begin For i :=1 to 10 do Write ( a [ i ],' '); End Вывод в столбец. var A: array [1..10] of integer; i : integer ; Begin For i :=1 to 10 do Writeln ( a [ i ]); End Пример 1: Ввести 2 вектора, размерностью n, найти сумму этих векторов. Program summa; Var a, b, c: array [1..100] of integer; i, n: byte; Begin Write (‘введите размерность массивов:’); Readln(n); For i:=1 to n do Readln (a[i]); For i:=1 to n do Readln (b[i]); For i:=1 to n do C[i]:=a[i]+b[i]; For i:=1 to n do write (c[i],’ ‘); end. Двумерные массивы Массивы, положение элементов в которых описывается двумя индексами, называютсядвумерными. Их можно представить в виде прямоугольной таблицы или матрицы. Каждый элемент имеет свой номер, как у одномерных массивов, но сейчас номер уже состоит из двух чисел - номера строки, в которой находится элемент, и номера столбца. Таким образом, номер элемента определяется пересечением строки и столбца. Например, a12 - это элемент, стоящий в первой строке и во втором столбце. Существуют несколько объявления двумерного массива. В Паскале двумерный массив можно описать как одномерный, элементами которого являются одномерные массивы. Например, для матрицы А, приведённой выше: Const n = 2; m = 3;Type omyarray = Array[1..m] Of <тип элементов >;dmyarray = Array[1..n] Of omyarray;Var v : omyarray;a : dmyarray; В данном случае переменная v объявлена как одномерный массив из трёх элементов вещественного типа. Переменная а описана как двумерный массив из двух строк, каждую из которых включено по три элемента. Описание массива А можно сократить, исключив определение типа omyarray в определении типа dmyarray: Const n = 2; m = 3;Type dmyarray = Array[1..n, 1..m] Of <тип элементов>;Var a : dmyarray. Ещё более краткое описание массива А можно получить, указывая имя массива и диапазоны изменения индексов для каждой размерности массива: Const n = 2; m = 3;Type dmyarray = Array[1..n, 1..m] Of <тип элементов >; Var a : dmyarray. Если указанный тип используется для определения одного массива в программе, то удобно объявление массива в разделе описания переменных: Var a: Array [1..n, 1..m] Of < тип элементов >. Рассмотренные выше методы решения задач обработки одномерных массивов могут применяться для обработки двумерных массивов. Поскольку положение элемента в двумерном массиве описывается двумя индексами [первый - номер строки, второй - номер столбца], программы большинства матричных задач строятся на основе вложенных циклов. Обычно внешний цикл работает по строкам матрицы, то есть с его выбирается требуемая строка матрицы, а внутренний цикл - по столбцам матрицы, то есть здесь выбирается нужный элемент из выбранной уже строки. Пример 2: Program massiv; Const n = 3; m = 4; Type massiv = Array[1..n., 1..m] of integer; Var A : massiv; I,j:integer; Begin For i:=1 To n Do For j:=1 To m Do x[i,j]:=-25+Random(51); For i:=1 To n Do Begin For j:=1 To n Do Write(x[i,j]:5); Writeln; End; End.
//PascalABC.Net 3.0, сборка 1052 var d:single; begin Write('Введите угол в градусах: '); Read(d); Writeln('Угол в радианах: ',DegToRad(d)) end.
Тестовое решение: Введите угол в градусах: 57.3 Угол в радианах: 1.00007364807695
Вариант с формулой вместо функции: //PascalABC.Net 3.0, сборка 1052 var d:single; begin Write('Введите угол в градусах: '); Read(d); Writeln('Угол в радианах: ',Pi*d/180) end.
Вариант, если не хочется использовать константу Pi: //PascalABC.Net 3.0, сборка 1052 var d:single; begin Write('Введите угол в градусах: '); Read(d); Writeln('Угол в радианах: ',ArcTan(1)*d/45) end.
Вариант для тех, кто не помнит, что arctg(1)=π/4: //PascalABC.Net 3.0, сборка 1052 const Pi=3.14; var d:single; begin Write('Введите угол в градусах: '); Read(d); Writeln('Угол в радианах: ',Pi*d/180) end.
Тестовое решение для этого случая: Введите угол в градусах: 57.3 Угол в радианах: 0.999566653357612
Как видно, из-за значения π, заданного с низкой точностью, снизилась и точность результата.
a:array[1..20] of integer;
begin
randomize;
readln(k,n);
for i:=1 to 20 do
a[i]:=random(10);
for i:=1 to n do
begin
s:=s+a[i];
inc(u);
end;
writeln( 'Среднее арифметическое в массиве = ', s/u );
for i:=1 to k do
s1:=s1+a[i];
writeln('Сумма:',s1);
for i:=1 to 20 do
if a[i]<s/u then d:=d+1;
writeln('Количество:',d);
writeln('Массив:');
for i:=1 to 20 do
write(a[i],',');
end.