русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Способы задания одномерных массивов


Дата добавления: 2015-09-15; просмотров: 1406; Нарушение авторских прав


Первый способ задания одномерного массива - это задание с клавиатуры (он был рассмотрен в примере выше - процедура Init1).

Второй способ задания - это задание с помощью генератора случайных чисел, этот способ более удобен, когда много элементов в массиве. Составим программу заполнения распечатки одномерного массива, с помощью генератора случайных чисел. Процедура вывода уже составлена ранее, а процедуру формирования напишем новую.

Program Example-38;
Const n = 30; dd = 51; {n - это количество элементов массива, dd - для генератора случайных чисел}
Type myarray = Array [1..n] Of Integer;
Var A : myarray;

Procedure Init2(Var m : myarray);
{процедура заполнения (инициализации) массива случайными числами}
Var i : Integer;
Begin
For i:=1 To n Do
m[i] := -25 + Random(dd);
{Random выбирает случайное число из отрезка от 0 до dd-1, тогда i-му элементу массива будет присвоена сумма выбранного случайного числа и -25, таким образом, массив будет заполняться случайными числами от -25 до -25+(dd-1), то есть до -26+dd}
End;

Procedure Print (m : myarray); {процедура вывода (распечатки) массива}

...

Begin
Randomize; {включение генератора случайных чисел}
Init2(A); {обращение к процедуре заполнения массива}
Print(A); {обращение к процедуре вывода заполненного массива}
Readln;
End.

Третий способ задания - это чтение чисел из файла. Можно заранее создать типизированный файл одномерных массивов (например, по тридцать элементов), а затем считывать из него сразу целый массив и работать с ним. Но мы воспользуемся текстовым файлом, так как его создавать намного удобнее. Пусть в файле записано несколько строк, а в каждой из них по 30 целых чисел. Тогда вся программа может быть такой:

Program Example-39;
Const n = 30; {n - это количество элементов массива,}
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(A);{обращение к процедуре вывода }
Readln(F);
End;
Readln;
End.

Работа с элементами массива (разбор на примерах)

При работе с элементами массивов можно выделить несколько видов задач.

Нахождение суммы (или произведения) элементов. Такая задача была рассмотрена выше. Могут быть различные модификации - найти сумму с заданным свойством. Пример Найти сумму элемента кратных заданному числу. Решение Воспользуемся функцией Sum из программы Example-37, но будем суммировать не все элементы, а только те, которые удовлетворяют данному условию, то есть только те, которые делятся нацело на заданное число (остаток равен 0). Function Sum (m : myarray) : Integer; Var i, s, k : Integer; Begin Writeln ('введите число'); Readln(k); s:=0; {начальное значение суммы} For i:=1 To n Do {нахождение суммы} If m[i] Mod k=0 Then s := s + m[i]; {если элемент кратен k,то прибавляем его к сумме} sum:=s; End; Всё остальное можно оставить без изменений.
Нахождение номеров элементов с заданным свойством. Пример Найти номера чётных элементов. Решение Для нахождения необходимо просмотреть весь массив, и если просматриваемый элемент является чётным, то выводить его номер. Опишем процедуру, которой передаётся данный массив и выводятся нужные номера. Procedure Solve (m: myarray); Var i : lnteger; Begin For i:=1 To n Do If m [i] Mod 2=0 Then Write (i: 5); End;
Нахождение количества элементов с заданным свойством. Пример Найти количество положительных и отрицательных элементов в данном массиве. Решение Опишем процедуру, которой будем отправлять три параметра - массив и два счётчика, один для элементов, больших нулю, а второй - для меньших нулю, элементы, равные нулю, учитывать не будем. Procedure Quantity (m: myarray: Var kl , k2: lnteger); Var i : lnteger; Begin k1 := 0; k2 := 0; {начальные значения} {просматриваем все элементы массива} For i:=1 To n Do If m [i]>0 Then lnc (k1) Else lf m [i] <0 Then lns(k2); End;
Есть ли в данном массиве элементы с данным свойством или найти первый (последний) элемент, отвечающий заданным условиям. Для решения таких задач удобнее использовать циклы с условиями и составлять функции, результат которых имеет логический тип. Пример Есть ли отрицательный элемент в массиве? Решение Начинаем с первого элемента (i = 1). Пока не просмотрен последний (i<=n) и не найден отрицательный (m [i]>=0), будем переходить к следующему (inc (i)). Таким образом, мы закончим просмотр в одном из двух случаев: первый - просмотрели все элементы и не нашли отрицательный, тогда i>n, второй - нашли нужный, при этом i<=n. Опишем функцию, значение которой истина (True), если такой элемент есть, и ложь (False), если его нет. Function Controll (m: myarray): Boolean; Var i : Integer; Begin i := 1; While (i<=n) And (m |i|>0) Do Inc(i); Control1:=(i<=n) End; Пример Найти номер последнего отрицательного элемента массива. Решение Последний отрицательный - это первый отрицательный элемент, если начать просмотр с конца. Если очередной элемент не является отрицательным , то нужно уменьшать значение текущего индекса, пока он не станет меньше номера первого элемента или не будет найден отрицательный элемент. Таким образом, можно модифицировать предыдущую функцию. Но поскольку надо найти номер элемента, тип результата будем целым. Договоримся, что если такого элемента нет, то значение функции будет равно 0. Function Control2 (m: myarray): Integer; Var i : Integer; Begin i:=n; While (i>=1) And (m |i|>0) Do Des(i); If i<1 Then Control2:=0 Else Control2:=i; End;


<== предыдущая лекция | следующая лекция ==>
Регулярные типы данных | Создание массива


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.