Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Одномерные массивы. Работа с элементами(разбор на примерах)
Пример 1 Найти сумму пяти целых чисел. Решение Для решения этой задачи можно описать пять целых переменных для данных чисел и еще одну − для их суммы. Обозначим исходные числа а1, а2, а3, а4 и а5, а их сумму - s. Тогда можно составить такую программу, используя функцию нахождения суммы пяти чисел: Program Example_87; Var а1, а2, аЗ, а4, а5, s: Integers; Function Sum(х1, х2, хЗ, х4, х5: Integer): Integer; Begin Sum:=x1+x2+x3+x4+x5; End; Begin Writeln('Введите пять целых чисел'); Readln(а1, а2, а3, а4, а5); {Вводим пять целых чисел} s:=Sum (a1,а2, аЗ, а4,а5); {Находим их сумму} Writeln('их сумма равна ', s); {Выводим результат на экран} Readln; End. Пример 2 Найти сумму тридцати целых чисел. Решение Если решать эту задачу по аналогии с предыдущей, то необходимо будет описать 30 переменных для всех исходных чисел. Это не очень удобно. Поэтому используем для решения этой задачи одномерный массив. Одномерный массив - это фиксированное количество элементов одного типа, объединенных одним именем, причем каждый элемент имеет свой уникальный номер и номера элементов идут подряд. Например, введем 30 целых чисел от 25 до 54 и объединим их общим именем А.
Имя А - общее для всех элементов. Элементы массива - целые числа, их 30. Опишем в разделе описания тип − одномерный массив, состоящий из 30 целых чисел. Type myarray = Array[1..30] Of Integer;
Напомним, что раздел типов начинается со служебного словаType, после него идут имя нового типа и его описание. Между именем типа и его описанием ставится знак "равно" (в разделе описания переменных между именем переменной и ее описанием ставится двоеточие). Тогда: myarray - это имя нового типа; Array - служебное слово (в переводе с английского означает "массив", "набор"); [1..30] - в квадратных скобках указывается номер первого элемента, затем, после двух точек, номер последнего элемента массива; в этом примере первый элемент имеет номер 1, а последний - номер 30; Of - служебное слово (в переводе с английского означает "из"); Integer - тип всех элементов массива. Таким образом, одномерный массив описывается следующим образом: Array[n1..n2] Of <тип элементов>; где n1 - номер первого элемента, n2 - номер последнего элемента, в качестве типа элементов может использоваться любой тип данных, кроме файлового. Для того чтобы обратиться к элементу этого массива, необходимо указать имя массива и в квадратных скобках - номер элемента. Например, первый элемент массива А - А[1], а пятый - А[5] . Program Example_88; Const n=30; {Количество элементов массива} Var A: array[1..n] Of Integer; i,sum: Integer; Begin Writeln('Введите ', n, ' чисел'); For i:=1 To n Do {Ввод массива с клавиатуры} Readln(a[i]); {Чтение i-гo элемента} For i:=1 To n Do {Вывод массива} Write(a[i]: 3); {Вывод i-гo элемента} sum:=0; {Начальное значение суммы} For i:=1 To n Do sum:=sum+a[i]; {К уже найденной сумме прибавляем i-й элемент} Writeln('их сумма равна ',sum); Readln; End. Пример 3 Составить программу нахождения суммы элементов массива. Решение Опишем две процедуры (формирования и вывода массива) и функцию нахождения суммы элементов. Заметим, что заполнение и вывод массива можно осуществить только поэлементно, то есть можно сначала присвоить значение первому элементу, затем второму и так далее. Аналогично обстоит дело и с выводом массива на экран - мы станем выводить первый элемент, второй, третий и так до последнего. Значения элементов массива будем вводить с клавиатуры. Program Example_89; Const n=30; {Количество элементов массива} Type myarray=Array[1..n] Of Integer; Var A: myarray; s: Integer; {Значение этой переменной s будет равно сумме всех элементов массива} Procedure Init1(Var m: myarray); Var i: Integer; {Переменная для работы с элементами массива} Begin Writeln('Введите ', n, ' чисел'); For i:=1 To n Do {Ввод массива с клавиатуры} Readln(m[i]); {Чтение i-гo элемента} End; Procedure Print (m: myarray); Var i: Integer Begin For i:=1 To n Do {Вывод массива} Write(m[i]: 3); {Вывод i-гo элемента} Writeln; End; Function Summa (m: myarray): Integer; Var i, sum: Integer; Begin sum:=0; {Начальное значение суммы} For i:=1 To n Do sum:=sum+m[i]; {К уже найденной сумме прибавляем i-й элемент} summa:=sum; End; Begin Init1(A); {Обращение к процедуре формирования массива} Print(A); {Вывод массива} s:=Summa(A); {Нахождение суммы элементов} Writeln('их сумма равна ',s); {Вывод результата на экран} Readln; End.
При решении задач часто приходится заполнять массивы (присваивать значения элементам). Рассмотрим несколько способов заполнения массивов. Первый способ заполнения одномерного массива - это заполнение с клавиатуры (этот способ был рассмотрен выше - в процедуре Init1). Второй способ − это заполнение с помощью генератора случайных чисел. Этот способ более удобен, когда в массиве много элементов, а их точные значения не слишком важны. Для получения случайных чисел практически во всех современных языках программирования имеется стандартная функция. В языке Паскаль имеется функция Random. Формулы для расчета случайного числа x различного типа в программе приведены в таблице:
При каждом новом запуске программы с использовании функции Random будут генерироваться одни и те же случайные числа. Чтобы исключить это, необходимо записать (желательно в начале программы) оператор Randomize (без параметров), инициализирующий генератор случайных чисел. Составим программу заполнения одномерного массива с помощью генератора случайных чисел. Процедура вывода уже составлена ранее. Program Example_90; Const n=30; dd=51; {n - количество элементов массива, dd используется в генераторе случайных чисел} Type myarray = Array [1..n] Of Integer; Var A: myarray; Procedure Init2 (Var m: myarray); {Процедура заполнения (инициализации) массива случайными числами} Var :Integer; Begin For i:=1 To n Do m [i]:=-25+Random(dd); {Функция Random выбирает случайное число из отрезка от 0 до dd-1. Очередному элементу массива будет присвоена сумма выбранного случайного числа и -25, таким образом, массив будет заполняться случайными числами от -25 до -25+(dd-1), то есть до -26+dd} End; Procedure Print (m:myarray); {процедура вывода (распечатки) массива} … Begin Randomize; {Инициализация генератора случайных чисел} Init2(А); {Обращение к процедуре заполнения массива} Print(A); {Обращение к процедуре вывода массива} Readln; End. Третий способ заполнения массива − чтение значений элементов из файла. Можно заранее создать типизированный файл одномерных массивов (например, по тридцать элементов), а затем считывать из него сразу целый массив. Но мы воспользуемся текстовым файлом, так как его создавать намного удобнее. Пусть в файле записано несколько строк, а в каждой из них по 30 целых чисел. Тогда вся программа может быть такой: Program Example_91; Const n=30; {Количество элементов массива} Type myarray = Array[1..n] Of Integer; Var A: myarray; F: text; Procedure Init3 (Var m:myarray); {Процедура заполнения (инициализации) массива} Var i: Integer; Begin For i:=1 To n Do Read(f, m[i]) {Чтение из файла очередного числа} End; Procedure Print (m:myarray); {Процедура вывода (распечатки) массива} … Begin {Связываем файловую переменную с файлом на диске} Assign(F, 'путь\имя файла'); Reset(F); {Открываем файл для чтения} While Not EOf (F) Do Begin{Считываем очередную строку} Init3(А); {Обращение к процедуре заполнения массива} Print(A); {Обращение к процедуре вывода} Readln(F); End; Close(F); Readln; End. Четвертый способ − описание одномерного массива − типизированной константы: Const digit: array[0..9] of char= ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); DayOfWeek: array[0..6] of String = ('понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'); Chislo: array[0..9] of byte=(0, 1, 2, 3, 4, 5, 6, 7, 8, 9). Элемент массива может быть любого типа, кроме файлового. Напомним, что типизированные константы являются переменными, которым начальное значение присваивается в начале выполнения программы (см. §26). |
|||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-05-31; просмотров: 244. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |