Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




End.

Begin

Var

Begin

Var

a, n: Integer; {глобальные переменные}

s: Longint;

Procedure Degree(x,y: Integer; Var st: Longint); {x, y, st - формальные

Var параметры}

i: Integer; {i – локальная переменная}

st:=l;

For i:=l To у Do st:=st*x;

End;

Begin {основная программа}

Writeln('Введите два числа а и n');

Readln(a,n);

Degree (a,n,s); {обращение к процедуре; a, n, s - фактические параметры }

Writeln('Результат = ',s); {вывод значения аn}

Readln;

End.

Пример 2. Написать функцию, подсчитывающую количество цифр числа. Используя ее, определить, в каком из двух данных чисел больше цифр.

Решение. Для решения задачи вспомним, как подсчитать количество цифр.

Для этого можно выделять последнюю цифру до тех пор, пока число не станет равным нулю. При этом каждый раз надо увеличивать счетчик на 1 (начальное значение счетчика — 0).

Program Example_9;

n1, n2: Longint;

k1, k2: Byte;

Function Quantity (x: Longint): Byte;

Var k: Byte;

k:=0;

While x <> 0 Do Begin

Inc(k);

x:=x Div 10;

End;

Quantity:=k;

End;

Begin {основная программа}

Writeln('Введите два числа');

Readln (n1, n2);

kl:= Quantity(nl); {количество цифр первого числа}

k2: = Quantity(n2); {количество цифр второго числа}

{Сравнение количества цифр в числах}

If kl=k2 Then Writeln ('Одинаковое количество цифр')

Else If kl>k2 Then Writeln('B первом числе цифр больше')

Else Writeln('Bo втором числе цифр больше');

Readln;

 

Цель работы

Получение практических навыков работы с одномерными массивами.

 

Пример 1. Составить программу нахождения суммы элементов массива.

Решение. Опишем две процедуры (формирования и вывода массива) и функцию нахождения суммы элементов, которые будем использовать в основной части. Заметим, что заполнение и вывод массива можно осуществить только поэлементно, то есть можно сначала присвоить значение первому элементу, затем второму и так далее, то же самое и с выводом на экран — выводим первый, второй, третий... и так до последнего. Будем вводить значения элементов массива с клавиатуры.

Program Example_11;

Const

n=30; {n - это число элементов массива}

Type myarray = Array[1..n] Of Integer;

Var

A: myarray;

s: Integer; {сумма всех элементов массива}

Procedure Init1(Var m: myarray);

Var

i: Integer; {локальная переменная для работы с элементами массива}

Begin

Writeln('введите ',n, ' чисел');

For i:=l To n Do {ввод массива с клавиатуры}

Readln(m[i]);

End;

Procedure Print(m: myarray);

Var

i: Integer;

Begin

For i:=l To n Do {вывод массива}

Write(m[i]: 4);

Writeln;

End;

Function Sum(m: myarray): Integer;

Var

i, sum: Integer;

Begin

sum:=0; {начальное значение суммы}

For i:=l To n Do

sum:=sum+m[i]; {к уже найденной сумме первых (i-1) элементов прибавляем i-й элемент}

End;

Begin {начало основной программы}

Init1(A); {обращение к процедуре формирования}

Print(А); {вывод массива}

s:=Sum(A); {нахождение суммы элементов}

Writeln('Сумма равна ',s); {вывод результата на экран}

Readln;

End.

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

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

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

Program Example_12;

Const

n=30;

dd=51;

{n - число элементов массива, dd - для генератора случайных чисел}

Type myarray = Array [l..n] Of Integer;

Var

A: myarray;

Procedure Init2(Var m:myarray);

{процедура заполнения (инициализации) массива случайными числами}

Var

i: Integer;

Begin

For i:=l To n Do

m[i]:=-25+Random(dd);

{Random выбирает случайное число из отрезка от 0 до dd-1, тогда i-му элементу массива будет присвоена сумма выбранного случайного числа минус 25, таким образом, массив будет заполняться случайными числами от -25 до 25}

End;

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

...

Begin {начало основной программы}

Randomize; {включение генератора случайных чисел}

Init2(А); {обращение к процедуре заполнения массива}

Print(А); {обращение к процедуре вывода заполненного массива}

Readln;

End.

Третий способ задания — это чтение чисел из файла.

Пример 3. Пусть в файле записано несколько строк, а в каждой из них по 30 целых чисел. Составить программу с использованием процедуры заполнения массива из файла.

Program Example_13;

Const

n=30; {n - это число элементов массива,}

Type myarray = Array [l..n] Of Integer;

Var

A: myarray;

F: text;

Procedure Init3(Var m:myarray);

{процедура заполнения (инициализации) массива}

Var

i: Integer;

Begin

For i:=l 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); {обращение к процедуре заполнения массива}

Print(А); {обращение к процедуре вывода}

Readln(F);

End;

Readln;

End.

 




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 285; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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