Реферат: Описание массива
МАССИВЫ
Многие задачи, которые решаются с помощью компьютера, связаны с обработкой больших объемов информации, представляющей совокупность данных, объединенных единым математическим содержанием, или связанных между собой по смыслу. Такие данные удобно представлять в виде линейных и прямоугольных таблиц. В Паскале для представления таких данных используются массивы.
Массивом называется упорядоченная последовательность величин, обозначенная одним именем.
Массив можно условно изобразить в виде прямоугольника с n делениями, каждое деление – это элемент массива, он имеет свой номер (индекс). Индекс записывается рядом с именем массива в квадратных скобках
3
12
-2
…
4
10
A[1]
A[2]
A[3]
…
A[n-1]
A[n]
Массив обозначается одним именем (А).
Каждый элемент массива обозначается именем массива с индексом (А[1]). Индекс записывается в квадратных скобках после имени массива и определяет порядковый номер элемента.
Элементы упорядочены по значениям индекса.
^ Описание массива
Рассмотрим описание массива на конкретном примере
3
12
-2
-8
4
10
-5
A[1]
A[2]
A[3]
А[4]
A[5]
A[6]
А[7]
А- имя переменной типа массив. В описании типа мы должны указать, что объявляется тип массив, для этого используется служебное слово array, указать границы изменения индексов. У нас 7 элементов, следовательно, индекс изменяется от 1 до 7. Синтаксически это записывается следующим образом 1..20, называется такая запись - диапазон.
В разделе переменных на языке Паскаль массив описывается следующим образом:
Var
A: array [1..7] of integer;
{все элементы массива являются целыми числами}
В памяти компьютера будет отведено место для размещения элементов массива. Следует особо отметить, что размерность (количество элементов) массива определяется при объявлении типа и изменить количество элементов в процессе работы программы нельзя. Можно пользоваться меньшим количеством элементов.
Замечания:
^ Если несколько массивов имеют одинаковый диапозон индексов и одинаковый базовый тип, то допускается объединять массивы в список: Var A,В,С: array [1..20] of integer;
В качестве индекса может быть:
константа А[5] – 5-ый элемент массива А
переменная А[i] – i-ый элемент массива А
выражение А[i+2]– i+1-й элемент массива А
Элемент массива называют переменной с индексом.
Работа с элементами массива
Элементы массива могут стоять, как в левой части оператора присваивания, так и в правой (в выражениях). Над элементами массива можно производить те же операции, которые допустимы для данных его базового типа, включая стандартные функции.
^ B[5]:=A[3]+7; S:=S+A[i]; P:=SQRT(A[7]); S:=A[1]+A[5];
ОСНОВНЫЕ АЛГОРИТМЫ ДЛЯ РАБОТЫ С ОДНОМЕРНЫМИ МАССИВАМИ
Одномерным (линейным массивом) будем называть массив, в котором для указания местоположения элемента достаточно одного индекса.
Заполнение одномерного массива значениями (ввод данных)
Заполнить элементы одномерного массива значениями мы можем:
Вводя значения с клавиатуры;
Случайным образом;
По формуле;
С помощью оператора присваивания :=
Надо помнить, что в первых трех случаях нам не обойтись без организации цикла.
Будем считать, что объявили массив из 10 элементов.
^ А) заполнение с клавиатуры.
WRITE(‘Введите 10 чисел:’);
FOR i:=1 to 10 DO
READ(A[i]);
WRITELN;
Б) случайным образом. Для этого мы должны подключить датчик случайных чисел.
FOR i:=1 to 10 DO
A[i]:=random(n);
n должно быть заранее задано, например 100
В) заполнение по формуле. Каждый элемент массива должен быть рассчитан по формуле (например а[i]=2* i).
FOR i:=1 to 10 DO
A[i]:=2*i;
^ Г) с помощью оператора :=
A[1]:=3; A[2]:=12;
A[3]:=-2; …
Вывод на экран значений элементов одномерного массива.
А) в строчку FOR i:=1 to 10 DO
WRITE(A[i],’ ‘);
Б) в столбик FOR i:=1 to 10 DO
WRITELN(‘A[‘,i,’]=’,A[i]);
Задачи для самостоятельного решения:
Заполнить массив A[1..7] целыми значениями с клавиатуры и вывести на экран в строчку.
Program f;
Var
A: array [1..7] of integer;
i:integer;
Begin
WRITE(‘Введите 7 чисел:’);
FOR i:=1 to 7 DO
READ(A[i]);
WRITELN;
^ FOR i:=1 to 10 DO
WRITE(A[i],’ ‘);
End.
Заполнить массив В[1..5] целыми значениями с клавиатуры и вывести на экран в столбик.
Заполнить массив A[1..7] вещественными значениями с клавиатуры и вывести на экран в строчку.
Заполнить массив A[1..5] по формуле А[i]:=i+2 и вывести на экран в столбик.
Заполнить массив A[1..5] по формуле А[i]:=1/i и вывести на экран в столбик.
Заполнить массив В[1..5] целыми значениями с клавиатуры и вывести на экран сумму пятого и третьего элементов.
Заполнить массив В[1..5] целыми значениями с клавиатуры и вывести на экран произведение первого и четвертого элементов..
Составьте программу, которая формирует массив В из 12 элементов. После заполнения массива вывести на экран: А) квадраты этих чисел; Б) обратные величины этих чисел.
Заполнить массив A[1..7] и вывести на экран только положительные элементы.
ОСНОВНЫЕ АЛГОРИТМЫ ДЛЯ РАБОТЫ С ОДНОМЕРНЫМИ МАССИВАМИ
Вычисление суммы элементов массива.
^ А) суммы всех элементов
S:=0;
FOR i:=1 to 10 DO
S:=S+A[i];
Б) по условию
Например, суммы элементов массива, кратных 3
S:=0;
FOR i:=1 to 10 DO
IF A[i] mod 3=0 then S:=S+A[i];
Вычисление количества элементов по условию.
^ А) по простому условию
Например, найти количество элементов, равных 0
К:=0;
FOR i:=1 to 10 DO
IF A[i]=0 then К:=К+1;
Б) по сложному условию
Например, найти количество элементов, нечетных и отрицательных одновременно
К:=0;
FOR i:=1 to 10 DO
IF (A[i]<0)and(A[i] mod 2<>0) then К:=К+1;
Вычисление суммы и количества одновременно, вычисление среднеарфметического значения.
Например, найти среднеарифметическое значение положительных элементов массива.
^ Program srarif;
Var
A: array [1..10] of integer;
S,K,i:integer;
Begin
WRITE(‘Введите 10 чисел:’);
FOR i:=1 to 10 DO
READ(A[i]);
WRITELN;
S:=0; K:=0;
FOR i:=1 to 10 DO
IF A[i]>0 then begin S:=S+A[i]; K:=K+1; end;
SR:=S/K;
WRITE(‘среднеарифм. значение полож. элементов=’,SR)
end.
Поиск элемента в массиве
Нахождение индекса i элемента A[i] по его значению х (т.е. нахождение такого i, что A[i]=x) принято называть поиском элемента х в массиве а. Простейший алгоритм поиска такой: будем перебирать все элементы массива от начала до конца. Если очередной элемент равен х, то запомним его индекс в величине N.
N:=0;
FOR i:=1 to 10 DO
IF A[i]=x then N:=i;
Задачи для самостоятельного решения:
В массиве А[1..7] найти сумму отрицательных элементов.
В массиве А[1..7] найти сумму нечетных элементов.
В массиве А[1..7] найти сумму элементов, кратных 3 или 5.
В массиве А[1..7] найти сумму четных элементов, кратных 7.
В массиве А[1..6] найти сумму положительных элементов, которые находятся в диапазоне от -1до 5 включительно.
В массиве А[1..6] найти количество положительных элементов.
В массиве А[1..6] найти количество элементов, которые находятся в диапазоне от 2 до 10 включительно.
В массиве А[1..6] найти количество элементов, равных 10.
Определите, сколько элементов массива А[1..8] не превышают заданного числа 10.
Определите среднее арифметическое всех элементов массива А[1..10], удовлетворяющих условию А[i]>5.
Определите среднее арифметическое четных элементов массива А[1..10].
Найти номер элемента массива А[1..5], равного 3.
Найти произведение элементов массиваА[1..5].
Найти произведение элементов массива А[1..5], кратных 3.
Вычислить сумму четных элементов массива до первого встречного нулевого элемента.
Подсчитать количество элементов массива, которые совпадают со своим номером и при этом кратны 3.
Подсчитать количество элементов одномерного массива, которые превосходят среднее арифметическое всех элементов массива.
ОСНОВНЫЕ АЛГОРИТМЫ ДЛЯ РАБОТЫ С ОДНОМЕРНЫМИ МАССИВАМИ
Копирование.
^ Копирование массива А в массив В без изменения
FOR i:=1 to 10 DO
В[i]:=A[i];
Копирование массива А в массив В в обратном порядке
FOR i:=1 to 10 DO
В[i]:=A[10-i+1];
Копирование по условию
Например, скопировать массив А в массив В следующим образом: все элементы < 0 заменить на 0, остальные удвоить.
FOR i:=1 to 10 DO
IF A[i]<0 then B[i]:=0
^ Else В[i]:=A[i]*2;
Корректировка
В массиве А все элементы, большие 100, заменить на 100.
FOR i:=1 to 10 DO
IF A[i]>100 then A[i]:=100;
^ Копирование по условию части массива
Дан массив А. Скопировать в массив В только положительные элементы массива А
K:=0;
FOR i:=1 to 10 DO
IF A[i]>0 then begin
K:=K+1;
B[K]:=A[i];
End;
^ FOR i:=1 to K DO
WRITE(B[i],’ ‘);
Заполнение по условию части массива
Дан массив А. Заполнить массив В индексами элементов массива А, кратных 3
K:=0;
FOR i:=1 to 10 DO
IF A[i] mod 3=0 then begin
K:=K+1;
A[K]:=i;
End;
^ FOR i:=1 to K DO
WRITE(B[i],’ ‘);
Задачи для самостоятельного решения:
Скопировать массив А в массив В следующим образом: все элементы < 0 заменить на 5, от остальных отнять 10.
В массиве А все элементы, меньшие 10, заменить на их квадраты.
В массиве А все элементы, кратные 3, заменить на 0.
Дан массив А. Скопировать в массив В только нечетные элементы массива А.
Дан массив А. Скопировать в массив В элементы массива А, лежащие в диапазоне от 0 до 10 включительно.
Скопировать массив А в массив В следующим образом: все положительные элементы без изменения, к остальным добавить 100.
Скопировать массив А в массив В следующим образом: все четные элементы разделить на 2, остальные возвести в квадрат.
В массиве А все элементы, большие 4, заменить на 100, остальные на 0.
Дан массив А. Заполнить массив В индексами отрицательных элементов массива А.
Дан массив А. Заполнить массив В индексами элементов массива А, равных 0.
Дан массив В[1..5]. Заполнить массив C таким образом: С[i] есть разница между B[i] и среднеарифметическим значением массива В.
ОСНОВНЫЕ АЛГОРИТМЫ ДЛЯ РАБОТЫ С ОДНОМЕРНЫМИ МАССИВАМИ
Поиск максимального (минимального) элемента массива и его индекса
Построим алгоритм поиска максимального элемента таким образом: введем две дополнительные переменные с именами max и imax. Присвоим им начальные значения – переменной max значение первого элемента массива, imax номер первого элемента. Затем начиная со второго элемента массива сравниваем каждый элемент с переменной max, если его значение оказывается больше, то присваиваем его переменной max и переменной imax присваиваем индекс этого элемента.
Может быть и другой вариант, когда переменной max присваивается число заведомо меньшее всех элементов массива.
^ Program poisk;
Var
A: array [1..10] of integer;
Max,imax,i:integer;
Begin
WRITE(‘Введите 10 чисел:’);
FOR i:=1 to 10 DO
READ(A[i]);
WRITELN;
Max:=A[1];
Imax:=1;
FOR i:=2 to 10 DO
IF A[i]>Max then begin Max:=A[i]; imax:=i; end;
WRITE(‘Максимальный элемент=’,Max,’ его индекс=’,imax)
end.
Задачи для самостоятельного решения:
Определить рост самого низкого игрока команды и его порядковый номер. В команде 10 игроков.
В массиве А[1..7] найти сумму максимального и минимального элементов.
Найти минимальный элемент среди положительных элементов массива А[1..10].
Найти максимальный элемент среди отрицательных элементов массива А[1..10].
Найти сумму элементов, стоящих до максимального элемента (включая и его) в массиве А[1..10].
После минимального элемента посчитать количество нулей в массиве А[1..10].
После максимального элемента все элементы массива А[1..7] умножить на 10.
В массиве А[1..10] между минимальным и максимальным элементом найти сумму элементов массива.
В массиве А[1..10] между минимальным и максимальным элементом найти сумму элементов массива.
В массиве А[1..10] между минимальным и максимальным элементом найти количество четных элементов массива.
Обмен (Метод трех стаканов)
Введите два числа. Обменяйте их местами и выведите их на экран.
Для обмена чисел местами необходимо ввести дополнительную переменную.
Program M3;
Var
A,B,C:integer;
Begin
WRITE(‘Введите 2 числa:’);
READ(A,B);
WRITELN;
C:=A; A:=B; B:=C; С – дополнительная переменная
WRITE(‘A=’,A,’ B=’,B)
end.
первый элемент массива поменять с последним
С:=A[1]; A[1]:=A[10]; A[10]:=C;
второй элемент массива поменять с максимальным
С:=A[2]; A[2]:=A[imax]; A[imax]:=C;
минимальный элемент массива поменять с максимальным
С:=A[imin]; A[imin]:=A[imax]; A[imax]:=C;
Задачи для самостоятельного решения:
В массиве А[1..10] поменять третий элемент с первым. Вывести массив на экран.
В массиве А[1..10] поменять пятый элемент с последним. Вывести массив на экран.
В массиве А[1..10] минимальный элемент массива поменять с первым. Вывести массив на экран.
В массиве А[1..10] максимальный элемент массива поменять с последним. Вывести массив на экран.
В массиве А[1..10] минимальный элемент массива поменять с максимальным. Вывести массив на экран.
ОСНОВНЫЕ АЛГОРИТМЫ ДЛЯ РАБОТЫ С ОДНОМЕРНЫМИ МАССИВАМИ
Сортировка
Сортировка – это такая перестановка элементов, после которой они оказываются упорядоченными требуемым образом.
^ Метод «Пузырька»
Метод сортировки заключается в многократных сравнениях соседних элементов, чтобы определить расположены ли они в должном порядке. Если условие не выполняется, элементы меняются местами.
FOR i:=1 to N-1 DO
FOR J:=1 to N-i DO
^ IF A[J]>A[J+1] then
Begin
С:=A[J]; A[J]:=A[J+1]; A[J+1]:=C;
end;
Проследим процесс упорядочивания массива в динамике:
1. Упорядочить по возрастанию массив: 2, 3, 4, 1.
I
J
Массив
1
1
2, 3, 4, 1
2
2, 3, 4, 1
3
2, 3, 1, 4
2
1
2, 3, 1, 4
2
2, 1, 3, 4
3
1
1, 2, 3, 4
^ 2.Упорядочить по возрастанию массив: 3, 5, 6, 7, 1, 4.
I
J
Массив
1
1
3, 5, 6, 7, 1, 4
2
3, 5, 6, 7, 1, 4
3
3, 5, 6, 7, 1, 4
4
3, 5, 6, 1, 7, 4
5
3, 5, 6, 1, 4, 7
2
1
3, 5, 6, 1, 4, 7
2
3, 5, 6, 1, 4, 7
3
3, 5, 1, 6, 4, 7
4
3, 5, 1, 4, 6, 7
3
1
3, 5, 1, 4, 6, 7
2
3, 1, 5, 4, 6, 7
3
3, 1, 4, 5, 6, 7
4
1
3, 1, 4, 5, 6, 7
2
3, 1, 4, 5, 6, 7
5
1
1, 3, 4, 5, 6, 7
Этод метод сортировки массива называется «Метод всплывания пузырька» и работает довольно долго, но зато не требует много рабочих ячеек.
метод «Выбор»
Для элементов с 1 до N-1 повторяем следующие действия:
Ищем imax (индекс максимального элемента) среди всех от i до N;
Меняем текущий элемент A[i] с A[imin]
FOR i:=1 to N-1 DO
Begin
Imin:=i
FOR J:=1 to N DO
IF A[J]>A[imin] then imin:=J;
С:=A[Imin]; A[Imin]:=A[i]; A[i]:=C;
end;
Проследим процесс упорядочивания массива в динамике:
I
Исходный массив
Imin
Исходный
Imin
Выходной
Выходной массив
1
3, 5, 6, 7, 1, 4
1
5
1, 5, 6, 7, 3, 4
2
1, 5, 6, 7, 3, 4
2
5
1, 3, 6, 7, 5, 4
3
1, 3, 6, 7, 5, 4
3
6
1, 3, 4, 7, 5, 6
4
1, 3, 4, 7, 5, 6
4
5
1, 3, 4, 5, 7, 6
5
1, 3, 4, 5, 7, 6
5
6
1, 3, 4, 5, 6, 7
6
1, 3, 4, 5, 6, 7
4
-
-
Существуют и другие методы сортировки.
Задачи для самостоятельного решения:
Упорядочить массив по убыванию «методом пузырька».
Упорядочить массив по возрастанию после максимального элемента.
Упорядочить массив по убыванию перед минимальным элементом.
В массиве все элементы, не равные 0, переписать, сохраняя порядок, в начало массива, нулевые элементы – в конец массива. Новый массив не заводить.
Задачи по массивам
Дан массив А. Найти длину самой длинной последовательности подряд идущих элементов, равных 0.
Занести в массив А первые 6 чисел, начиная с 25, делящихся нацело на 7.
0>
еще рефераты
Еще работы по разное
Реферат по разное
Перечень необходимых документов, подаваемых юридическими лицами в ОАО акб башкомснаббанк, на участия в отборе для предоставления кредита по минимальной процентной ставке
18 Сентября 2013
Реферат по разное
Электрификации «еэс россии» положение о порядке аккредитации метрологических служб энергопредприятий на право проведения калибровочных работ рд 34. 11. 106-95
18 Сентября 2013
Реферат по разное
Инженерные методы управления качеством
18 Сентября 2013
Реферат по разное
Підпис, П.І. Б
18 Сентября 2013