Одномерные массивы в Паскале

обучение PascalABC

Работа с одномерными массивами на языке программирования Паскаль

Массив — самая распространенная структура хранения данных, присутствующая в любом языке программирования.

В Pascal используются одномерные и двумерные массивы. В школьной программе обычно их изучают в 9-10 классах.

Одномерный массив — это конечное количество однотипных элементов, объединенных общим именем. Каждому элементу присвоен свой порядковый номер. Обращение к элементам происходит по имени массива и индексу (порядковому номеру).

Одномерный числовой массив

Одномерные массивы называют линейными, так как элементы расположены друг за другом. Их можно представить в виде таблицы, в которой всего две строки. В первой перечислены индексы элементов, а во второй — значения элементов.

одномерный массив в паскале
Одномерный массив. Обозначение элементов

Имя массива формируется по тем же правилам, что и имя любой другой переменной в программе. Границы индексов задают при описании массива в квадратных скобках. Удобнее задавать начальный индекс равный единице. Конечный индекс определяется условием задачи и численно равен размеру массива — количеству элементов. Числовые массивы могут содержать целые и действительные числа. Тип элементов указывается в описании. Смотрите рисунок выше.

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

В наших примерах будем использовать одномерный массив целых чисел, состоящий из пяти элементов. Для этого выполним его описание в разделе переменных

var
  i:integer;
  a: array[1..5] of integer; {определение одномерного массива из пяти целых чисел}

Ручной ввод данных

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

for i:=1 to 5 do
  read a[i]; {ручной ввод значений элементов массива с клавиатуры}

Заполнение случайными числами

В задачах на массивы, количество элементов может быть достаточно большим. Использование ручного ввода становиться затруднительным. В этом случае для удобства отладки и проверки работоспособности программы целесообразнее использовать другие способы заполнения. Например, случайные числа, сгенерированные служебной функцией Random().

for i:=1 to 5 do
  a[i]:=random(10); {задаются случайные числа из интервала [0,10)}

Ввод данных по заданному правилу (формуле)

В некоторых задачах могут быть определены правила генерации элементов массива или вычисляться по формуле. Например, заполнить массив квадратами натуральных чисел.

for i:=1 to 5 do
  a[i]:=i*i; {квадрат натурального числа - число, умноженное само на себя}

Ввод данных из текстового файла

Еще один способ получить данные — прочитать их из файла.

Подробнее про работу с файлами на Паскале читайте здесь.

Вывод линейного массива

В языке программирования Pascal ABC вывод элементов одномерного массива организуется с помощью цикла.

for i:=1 to 5 do write (a[i]);
или так
for i:=1 to 5 do print (a[i]);

Шаблон для использования в однотипных задачах

Определение, заполнение и вывод одномерного массива.

var
  i,n:integer;
  a: array[1..100] of integer; {определение одномерного массива из 100 целых чисел}
begin
write('Введите количество элементов в массиве');
readln(n);
for i:=1 to n do
  begin
    a[i]:=random(100)-random(100);{заполнение случайными числами из интервала (-100;100)}
    print (a[i]); {можно использовать write}
  end;
{здесь записывается код обработки по условию задачи}
end.

Задачи с решением

Простая обработка элементов

Задача 1. Дан одномерный массив из N целых элементов. Написать программу вычисления произведения  всех элементов. Используйте ручной способ ввода чисел.

Посмотреть решение

var
  i,n,p:integer;
  a: array[1..100] of integer; {определение одномерного массива из 100 целых чисел}
begin
write('Введите количество элементов в массиве');
readln(n);
p:=1;
for i:=1 to n do
  begin
    write('Введите ',i,' -й элемент'); 
    readln(a[i]);
    p:=p*a[i];
  end;
write('Произведение = ',p);
end.

Задача 2. Дан линейный массив из N целых чисел. Написать программу вычисления суммы этих элементов. Используйте для заполнения массива случайные числа.

Посмотреть решение

var
  i,n,s:integer;
  a: array[1..100] of integer; {определение одномерного массива из 100 целых чисел}
begin
write('Введите количество элементов в массиве');
readln(n);
s:=0;
writeln('Исходный массив'); 
for i:=1 to n do
  begin
    a[i]:=random(10); 
    print(a[i]);
    s:=s+a[i];
  end;
write('Сумма = ',s);
end.

Задача 3. Дан массив A(n). Заполнить двузначными числами. Найти элементы сумма цифр, которых равна числу элементов массива.

Посмотреть решение

Решение:

var
 i,n,s,c1,c2,k:integer;
 a: array[1..100] of integer; {определение одномерного массива из 100 целых чисел}
begin
 k:=0;
write('Введите количество элементов в массиве');
readln(n);
for i:=1 to n do
 begin
   a[i]:=random(90)+10;{заполнение случайными числами из интервала [10;99]}
   print (a[i]); {можно использовать write}
 end;
 writeln;
 writeln('Сумма цифр элементов равна размеру массива');
 for i:=1 to n do
 begin
   c1:=a[i]div 10; c2:=a[i]mod 10;
   If c1+c2=n then print (a[i])else k:=k+1;
 end;
 If k=n then print ('Таких элементов нет');
end.

Сортировка элементов одномерного массива

Задача 4. Упорядочить массив чисел по возрастанию.

Посмотреть решение

Решение:

Применяем сортировку методом пузырька.

const n=10;
var i,j:integer;
x:real;
a:array[1..n] of real;
begin
 println('Исходный массив'); 
  for i:=1 to n do 
    begin
    a[i]:=random(100);
    print(a[i]);
    end;
    {сортировка по возрастанию}
   for i:=1 to n-1 do  
    for j:=1 to n-i do
    if a[j]>a[j+1] then 
                      begin
                      x:=a[j];a[j]:=a[j+1];a[j+1]:=x;
                      end;
    println;
    {вывод отсортированного массива}
    println('Упорядоченный массив');
    for i:=1 to n do 
       print(a[i]);    
end.

Задачи с использованием массива

Задача 5. Составьте программу, которая выполнит перевод натурального числа из десятичной системы счисления в любую с основанием 2-16

Посмотреть решение

Решение:

var a,b,c,i,k,s:integer;
mas: array[0..1000] of integer;  
begin  
	k:=0;  
	write('Введите число ');readln(a);
	write('Введите основание системы для перевода ');readln(s);
	repeat  
		b:=a mod s;
		k:=k+1;  
		mas[k]:=b;  
		c:=a div s;  
		if c>=s then a:=c;  
	until c<s;  
	case c of
	10: write('A');
	11: write('B');
	12: write('C');
	13: write('D');
	14: write('E');
	15: write('F');
		else write(c);  
	end;
	for i:=k downto 1 do  
		case mas[i] of
		10: write('A');
		11: write('B');
		12: write('C');
		13: write('D');
		14: write('E');
		15: write('F');
			else write(mas[i]);
		end;
end.

Дополнительные задания:

mas1 Дан целочисленный массив произвольного размера. Подсчитать сколько раз заданная цифра встречается в элементах массива. Числа в массиве только 3-х значные.

Рейтинг
( 37 оценок, среднее 4.92 из 5 )
Понравилась статья? Поделиться с друзьями:
Инфоучка
Добавить комментарий

8 × one =

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: