- Каким способом можно заполнить массив вводом каждого элемента с клавиатуры с помощью оператора
- Урок 21. Заполнение массива и вывод на экран
- Заполнение одномерного массива значениями
- Вывод значений элементов массива на экран
- Описание, объявление и заполнение массивов (матриц)
- Pascal: Занятие № 5. Одномерные массивы в Паскале
- Одномерные массивы в Паскале
- Объявление массива
- Инициализация массива
- Вывод элементов массива
- Функция Random в Pascal
- Числа Фибоначчи в Паскале
- Максимальный (минимальный) элемент массива
- Поиск в массиве
- Циклический сдвиг
- Перестановка элементов в массиве
- Выбор элементов и сохранение в другой массив
- Сортировка элементов массива
- admin
- Bronislav
- Владимир
- Aurangzeb
Каким способом можно заполнить массив вводом каждого элемента с клавиатуры с помощью оператора
Ввод значений элементов массива можно осуществить несколькими способами (рис. 4.3).
Рис. 4.3. Способы ввода значений элементов массива
а) Ввод элементов массива с помощью оператора присваивания
Это самый нерациональный способ ввода.
var a: array [1..4] of word;
б ). Ввод элементов массива с клавиатуры
Этот способ и спользуется, когда значения элементов массива вполне определенные, но могут быть разные при каждом запуске программы.
var a: array [1..10] of integer;
for i:=1 to 10 do read(a[i]);
Здесь цикл перебирает все значения индекса массива. А чтобы было более наглядно и удобно можно использовать и такую запись операторов в цикле.
for i:=1 to 10 do
write(‘ введите ‘,i, ‘ элемент : ’);
в ). Ввод элементов массива с помощью генератора случайных чисел
Этот способ используется, когда не важно, какие значения имеют элементы массива.
var a: array [1..10] of real;
for i:=1 to 10 do
В этом случае, функция random генерирует псевдослучайные действительные числа в интервале от 0 до 1. Для генерации положительных и отрицательных действительных чисел в произвольном диапазоне, отрезок [0,1] растягивают и сдвигают, например, так a[i]:=10*random-5 присваивает элементам массива действительные числа от -5 до 5.
Для генерации значений элементов целочисленного массива из определенного диапазона (0…N-1) используют функцию random(N):
var b: array [1..10] of integer;
for i:=1 to 10 do
В этом случае значениями элементов массива b будут целые числа от 0 до 9.
г). Ввод с помощью описания массива как типизированной константы
Этот способ используется, когда значения элементов массива постоянны при каждом запуске программы. Такой способ задания начальных значений элементов массива очень удобен при отладке программы.
const a: array [1..5] of integer = (5,4,9,1,2);
Далее в программе типизированные константы используются как переменные, в том числе заданные значения элементов массива могут изменяться.
Источник
Урок 21. Заполнение массива и вывод на экран
Урок из серии: «Язык программирования Паскаль»
Скачать исходные коды примеров
После объявления массива с ним можно работать. Например, присваивать значения элементам массива и вообще обращаться с ними как с обычными переменными. Для обращения к конкретному элементу необходимо указать идентификатор (имя) массива и индекс элемента в квадратных скобках.
Например, запись Mas[2], A[10] позволяет обратиться ко второму элементу массива MAS и десятому элементу массива A. При работе с двумерным массивом указывается два индекса, с n-мерным массивом — n индексов.
Например, запись Matr[4, 4] делает доступным для обработки значение элемента, находящегося в четвертой строке четвертого столбца массива M.
Индексированные элементы массива называются индексированными переменными. За границы массива выходить нельзя. То есть, если в массиве Mas пять элементов, то обращение к шестому или восьмому элементу приведет к ошибке.
Рассмотрим типичные операции, возникающие при работе с одномерными массивами.
Заполнение одномерного массива значениями
Заполнение и вывод массива можно осуществить только поэлементно, то есть можно сначала присвоить значение первому элементу, затем второму и так далее, то же самое и с выводом на экран — выводим первый, второй, третий и так до последнего.
Паскаль не имеет средств ввода-вывода элементов массива сразу, поэтому ввод и значений производится поэлементно. Значения элементу массива можно присвоить с помощью оператора присваивания, или ввести с клавиатуры с помощью операторов Read или Readln. Очень удобно перебирать все элементы массива в цикле типа for.
Способы заполнения одномерных массивов:
- Ввод значения с клавиатуры.
- Задание значений в операторе присваивания с помощью генератора случайных чисел. Этот способ более удобен, когда много элементов в массиве (ввод их значений с клавиатуры занимает много времени).
- Задание значений по формуле.
- Ввод элементов массива из файла
1. Ввод значений элементов массива с клавиатуры. В связи с тем, что использовался оператор Readln, каждое значение будет вводиться с новой строки.
2. Заполнение массива числами, сгенерированными случайным образом из интервала [a; b]. Подключаем датчик случайных чисел — функцию random.
3. Заполнение массива по формуле. Каждому элементу массива присваивается значение, вычисленное по формуле. Если каждый элемент массива равен утроенному значению его порядкового номера (индекса), то процедура будет иметь вид:
4. Чтение чисел из файла. Нужно заранее создать текстовый файл, в который запишите несколько строк, в каждой из которых по 30 чисел.
Вывод значений элементов массива на экран
Вывод значений элементов массива на экран выполняется, как и ввод, поэлементно в цикле. Для вывода будем использовать операторы Write или Writeln. В качестве входных параметров будем передавать процедуре не только массив, но и количество элементов, которые надо вывести, начиная с первого (это понадобится нам, когда мы будем удалять и добавлять элементы в массиве).
Пример 1. Заполнить массив с клавиатуры и вывести его на экран.
В программе будет использоваться две процедуры: процедура Init1 (заполнение массива с клавиатуры) и процедура Print (вывод массива на экран).
Пример 2. Заполнить массив из текстового файла и вывести на экран. В текстовом файте несколько строк, в каждой строке по 30 чисел.
Вы научились заполнять одномерный массив и выводить его на экран.
На следующем уроке продолжим знакомиться с алгоритмами обработки одномерных массивов.
Источник
Описание, объявление и заполнение массивов (матриц)
Приветствую всех посетителей данной темы. Очень часто наблюдаю, что многие новички создавая очередную тему по массивам даже понятия не имеют каким образом его можно описать, заполнить и какие виды работы с его элементами существуют.
Итак, начнём с видов описания одномерного массива (при описании массивов будет использоваться базовый тип integer (-32768..+32767)):
1) описание в разделе констант:
1) заполнение одномерного массива посредством генератора случайных чисел, состоящего из 10-ти элементов и описанного в разделе описаний переменных:
2) прямое заполнение массива через ввод с клавиатуры с помощью команд read/readln (на этот раз опишем тип массив и переменную данного типа):
3) метод присваивания элементам массива определённых значений с помощью оператора присваивания «:=»:
4) заполнение массива по определённому закону, т.е. с помощью формул:
допустим что очередной элемент массива будет равен разности квадратов двух предыдущих элементов, т.е. a[i]=sqr(a[i-1])-sqr(a[i-2]):
Существуют ещё несколько способов заполнения массивов, но об этом потом.
Надеюсь моя тема, оказалась полезной и информативной для непросвещённых.
Добавлено через 11 часов 25 минут
5) импорт данных (двоичный типизированный/нетипизированный, текстовый):
для начала рассмотрим двоичный типизированный файл:
т.к. мы считываем инф. из файла, то необходимо его заполнить с помощью следующей программы:
А вот и программа считывающая данные из файла в ячейки массива:
Написать объявление и описание класса, который вычисляет выражение
Написать объявление и описание класса, который вычисляет следующее выражение: t=(2*cos(x -.
Написать программу на языке С++, содержащую объявление и описание дружественных структур
Всем добрый вечер, помогите разобраться с заданием, а именно как лучше сделать. И если не сложно.
Пользователь вводит длину массивов. Заполнение массивов случайными числами
Помогите доработать задачу В путем отсеивание из задачи А задачу Б (Язык С#) Пользователь вводит.
Объявление массивов
Здравствуйте! В учебнике по языку массивы объявляются так int arr = new int; В книге Шилдта.
работа с нетипизированным двоичным файлом:
аналогично двум предыдущим примерам заполним файл произвольными значениями, а затем извлечём их в ячейки массива:
импорт из файла:
( в данном примере мы опустили значение «0», т.к. sqrt(sqr(x-0)+sqr(y-0))= sqrt(sqr(x)+sqr(y)); нуль используется потому, что расстояние находится от начала координат, а параметры начала координат = 0;0). С точки зрения математики
в программировании данный пример не очень корректен, т.к. координата точки — это тоже, в свою очередь определённое значение и оно может быть любым (т.е. и вещественным в том числе, а индекс массива — это обязательно целое число);
Но мы всё же немного опередили события, и мне хотелось бы начать с описания многомерных массивов:
1) раздел описаний (var — сокращ. от англ. variables — изменчивый, меняющийся, переменный):
Если не понятно, то будем разбираться. Мы задали многомерный (в данном сл. трёхмерный) массив (двух, трёх , четырёх и т.д. -мерные массивы — это описание размерности массива; в последствии именно это определение будет применяться при работе с массивами, поэтому не упустите этот момент), диапазон индексов которого: 1..10, 0..5, 7..15 (например: товары, поступающие в магазин имеют последовательный идентификационный код из трёх цифр (три индекса, т.к. массив трёхмерный), а цена товара — это значение элемента массива: 1 — й товар, а т.е. mas[1,0,7] = 35; 2-й — mas[2,0,7] = 64; . последний — mas[10,5,15] = 35);
2) описание одномерного массива в разделе var, имеющего тип одномерный массив:
Данный фрагмент является описанием одномерного массива, имеющего тип одномерный массив и в итоге, можно сказать, что каждая ячейка одномерного массива является одномерным массивом, а в общем данную конструкцию можно назвать двумерным массивом и при обращении к элементу массива мы будем указывать два индекса: mas[i,j]:=…;
3) описание двумерного массива в разделе const (константы):
Здесь суть в том, что каждая из трёх так называемых позиций содержит ещё пять (три строки, два столбца, если в виде таблицы).
При выводе такого массива на экран мы получим (с использованием двух циклов и операторов write/writeln ):
3 -2 1 4 3
-5 -9 0 3 7
-1 2 1 -4 0
вот исходный код :
( основные методы заполнения многомерного массива аналогичны одномерному, поэтому в данной теме рассмотрены не будут )
Добавлено через 13 минут
Единственное отличие состоит в том, что заполнение элементов проводится, с учётом полной индексации, т.е. с учётом размерности массива: если массив двухмерный, то mas[i,j]:=. ; если трёхмерный, то mas[i,j,k]:=. и т.д. (ну и само собой используется соответствующее кол-во циклов по всем параметрам размерности)
Источник
Pascal: Занятие № 5. Одномерные массивы в Паскале
Одномерные массивы в Паскале
Объявление массива
Массивы в Паскале используются двух типов: одномерные и двумерные.
Определение одномерного массива в Паскале звучит так: одномерный массив — это определенное количество элементов, относящихся к одному и тому же типу данных, которые имеют одно имя, и каждый элемент имеет свой индекс — порядковый номер.
Описание массива в Паскале (объявление) и обращение к его элементам происходит следующим образом:
var dlina: array [1..3] of integer; begin dlina[1]:=500; dlina[2]:=400; dlina[3]:=150; .
Объявить размер можно через константу:
Инициализация массива
Кроме того, массив может быть сам константным, т.е. все его элементы в программе заранее определены. Описание такого массива выглядит следующим образом:
const a:array[1..4] of integer = (1, 3, 2, 5);
Заполнение последовательными числами:
var a: array of integer; var n:=readInteger; a:=new integer[n];
var a: array of integer; var n:=readInteger; SetLength(a,n); // устанавливаем размер
begin var a: array of integer; a := new integer[3]; a[0] := 5; a[1] := 2; a[2] := 3; end.
или в одну строку:
begin var a: array of integer; a := new integer[3](5,2,3); print(a) end.
Ввод с клавиатуры:
writeln (‘введите кол-во элементов: ‘); readln(n); <если кол-во заранее не известно, - запрашиваем его>for i := 1 to n do begin write(‘a[‘, i, ‘]=’); read(a[i]); . end; .
✍ Пример результата:
var a:=ReadArrInteger(5); // целые var a:=ReadArrReal(5); // вещественные
Вывод элементов массива
var a: array[1..5] of integer; <массив из пяти элементов>i: integer; begin a[1]:=2; a[2]:=4; a[3]:=8; a[4]:=6; a[5]:=3; writeln(‘Массив A:’); for i := 1 to 5 do write(a[i]:2); <вывод элементов массива>end.
Для работы с массивами чаще всего используется в Паскале цикл for с параметром, так как обычно известно, сколько элементов в массиве, и можно использовать счетчик цикла в качестве индексов элементов.
[Название файла: taskArray0.pas ]
В данном примере работы с одномерным массивом есть явное неудобство: присваивание значений элементам.
for var i:=0 to a.Length-1 do a[i] += 1;
Проход по элементам (только для чтения):
Пример:
foreach var x in a do Print(x)
Функция Random в Pascal
Для того чтобы постоянно не запрашивать значения элементов массива используется генератор случайных чисел в Паскаль, который реализуется функцией Random . На самом деле генерируются псевдослучайные числа, но суть не в этом.
Диапазон в Паскале тех самых случайных чисел от a до b задается формулой:
var f: array[1..10] of integer; i:integer; begin randomize; for i:=1 to 10 do begin f[i]:=random(10); < интервал [0,9] >write(f[i],’ ‘); end; end.
Для вещественных чисел в интервале [0,1]:
var x: real; . x := random(0.0,1.0);;
или с дополнительными параметрами (диапазон [5;15]):
[Название файла: taskArray1.pas ]
Числа Фибоначчи в Паскале
Наиболее распространенным примером работы с массивом является вывод ряда чисел Фибоначчи в Паскаль. Рассмотрим его.
Получили формулу элементов ряда.
var i:integer; f:array[0..19]of integer; begin f[0]:=1; f[1]:=1; for i:=2 to 19 do begin f[i]:=f[i-1]+f[i-2]; writeln(f[i]) end; end.
На данном примере, становится понятен принцип работы с числовыми рядами. Обычно, для вывода числового ряда находится формула определения каждого элемента данного ряда. Так, в случае с числами Фибоначчи, эта формула-правило выглядит как f[i]:=f[i-1]+f[i-2] . Поэтому ее необходимо использовать в цикле for при формировании элементов массива.
[Название файла: taskArray2.pas ]
Максимальный (минимальный) элемент массива
Псевдокод:
Поиск максимального элемента по его индексу:
// … var (min, minind) := (a[0], 0); for var i:=1 to a.Length-1 do if a[i]
[Название файла: taskArray_min.pas ]
[Название файла: taskArray4.pas ]
[Название файла: taskArray5.pas ]
[Название файла: taskArray6.pas ]
Пример:
[Название файла: taskArray7.pas ]
Поиск в массиве
Рассмотрим сложный пример работы с одномерными массивами:
Для решения поставленной задачи понадобится оператор break — выход из цикла.
Решение Вариант 1. Цикл for:
var f: array[1..10] of integer; flag:boolean; i,c:integer; begin randomize; for i:=1 to 10 do begin f[i]:=random(10); write(f[i],’ ‘); end; flag:=false; writeln(‘введите образец’); readln(c); for i:=1 to 10 do if f[i]=c then begin writeln(‘найден’); flag:=true; break; end; if flag=false then writeln(‘не найден’); end.
begin var a := new integer[10]; a := arrRandomInteger(5,0,5); //[1,3,5,4,5] print(a.IndexOf(3)) // 1 end.
или метод a.Contains(x) наравне с x in a :
begin var a := new integer[10]; a := arrRandomInteger(5,0,5); //[1,3,5,4,5] print(a.Contains(3)); // True print(3 in a)// True end.
Рассмотрим эффективное решение:
Задача: найти в массиве элемент, равный X , или установить, что его нет.
Алгоритм:
- начать с 1-го элемента ( i:=1 );
- если очередной элемент ( A[i] ) равен X , то закончить поиск иначе перейти к следующему элементу.
решение на Паскале Вариант 2. Цикл While:
Поиск элемента в массиве
Предлагаем посмотреть подробный видео разбор поиска элемента в массиве (эффективный алгоритм):
Пример:
[Название файла: taskArray8.pas ]
Циклический сдвиг
Решение:
Программа:
// … var v := a[0]; for var i:=0 to a.Length-2 do a[i] := a[i+1]; a[a.Length-1] := v;
// … var v := a[a.Length-1]; for var i:=a.Length-1 downto 1 do a[i] := a[i-1]; a[0] := v;
[Название файла: taskArray9.pas ]
Перестановка элементов в массиве
Рассмотрим, как происходит перестановка или реверс массива.
Решение:
Псевдокод:
Программа:
begin var a: array of integer := (1,3,5,7); var n := a.Length; for var i:=0 to n div 2 — 1 do Swap(a[i],a[n-i-1]); End.
Решение 2 (стандартная процедура Reverse() ):
begin var a:=new integer[10]; a:=arrRandomInteger(10); print(a);// [41,81,84,63,12,26,88,25,36,72] Reverse(a); print(a) //[72,36,25,88,26,12,63,84,81,41] end.
[Название файла: taskArray10.pas ]
Выбор элементов и сохранение в другой массив
Решение:
Вывод массива B:
writeln(‘Выбранные элементы’); for i:=1 to count-1 do write(B[i], ‘ ‘)
// . for var i := 0 to a.length — 1 do if a[i]
[Название файла: taskArray11.pas ]
Сортировка элементов массива
- В таком типе сортировок массив представляется в виде воды, маленькие элементы — пузырьки в воде, которые всплывают наверх (самые легкие).
- При первой итерации цикла элементы массива попарно сравниваются между собой:предпоследний с последним, пред предпоследний с предпоследним и т.д. Если предшествующий элемент оказывается больше последующего, то производится их обмен.
- При второй итерации цикла нет надобности сравнивать последний элемент с предпоследним. Последний элемент уже стоит на своем месте, он самый большой. Значит, число сравнений будет на одно меньше. То же самое касается каждой последующей итерации.
Pascal | PascalABC.NET |
Pascal | PascalABC.NET |