Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа № 8.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
64.81 Кб
Скачать

Лабораторная работа № 8.

Тема: Одномерные массивы в Pascal. Создать алгоритм и программу.

Цель работы: применение теоретических знаний и получение практических навыков составления блок-схем и программ для реализации алгоритмов работы с одномерными массивами на языке Pascal.

Пояснения к работе:

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

Массив – это совокупность конечного числа данных одного типа.

Описание массива.

1. TYPE – имя типа =array [t] of тип элементов массива;

VAR – имя переменной: имя типа; . Где array – ключевое слово, обозначающее массив, как одномерный, так и многомерный.

t – тип индекса массива. Может быть только ограниченного или перечисляемого типа. Имя типа любое, t – размерность.

TYPE abc = array [1..10] of real;

Var a:abc;

2. VAR имя переменной : array [t] of тип переменной;

Var a : array [1..10] of integer;

Обращение к элементам массива.

Имя переменной [индекс], a[5], a[3], a[I], a[I+1].

Ввод элементов массива.

Ввод элементов осуществляется с помощью операторов цикла. For .. to .. do наиболее удобен, т.к. автоматически изменяется на 1.

for i:=1 to n do

readln (a[i]);

Вывод элементов массива.

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

for i:=1 to n do

writeln (a[i]); /в столбец/

/ write (a[i]); в строку, слитно/

/ write (a[i], ‘ ‘); в строку через пробел.

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

Существует три способа сортировки элементов массива:

  1. сортировка вставкой;

  2. сортировка выбором;

  3. сортировка обменом.

Сортировка вставкой.

Массив разделяется на две части: отсортированную и не отсортированную. Элементы из не отсортированной части поочередно выбираются и вставляются в отсортированную часть так, чтобы не нарушить в ней упорядоченность элементов. В начале работы алгоритма в качестве отсортированной части массива принимают только один первый элемент, а в качестве не отсортированной – все остальные элементы. Таким образом, алгоритм будет состоять из n-1-го прохода , где n – размерность массива, каждый из которых будет включать четыре действия:

  • взятие очередного I-го не отсортированного элемента и сохранение его в дополнительной переменной;

  • поиск позиции j в отсортированной части массива, в которой присутствие взятого элемента не нарушит упорядоченности элементов;

  • сдвиг элементов массива от I-1-го до j-1-го вправо, чтобы освободить найденную позицию вставки;

  • вставка взятого элемента в найденную j-ю позицию.

uses crt2;

const n=13;

var i,j,k,a:integer; mas:array [1..n] of integer;

begin

clrscr;

for i:=1 to n do begin

writeln ('vvedite ',i,' element');

readln(mas[i]);

end;

writeln('isxodnij massiv');

for i:=1 to n do write (' ',mas[i]);

writeln;

{сортировка}

for i:=2 to n do begin

j:=1; a:=mas[i];

while a>mas[j] do j:=j+1; {j фиксирует позицию вставки}

for k:=i-1 downto j do mas[k+1]:=mas[k]; {сдвиг элементов}

mas[j]:=a;

end;

writeln ('otsortirovannij massiv');

for i:=1 to n do write (' ',mas[i]);

writeln;

end.

Сортировка выбором.

Находим (выбираем) в массиве элемент с минимальным значением на интервале от 1-го до n-го (последнего) элемента и меняем его местами с первым элементом. На втором шаге находим элемент с минимальным значением на интервале от 2-го до n-го элемента и меняем его местами со вторым элементом. И так далее со всеми элементами до n-1-го.

uses crt2;

const n=4;

var i,j,s,k,min:integer; a:array [1..n] of integer;

begin

clrscr;

writeln ('vvedite massiv iz ', n,' simvolov');

for k:=1 to n do begin

writeln ('vvedite ',k,' element');

readln(a[k]);

end;

writeln ('isxodnij massiv');

for k:=1 to n do write (' ',a[k]);

{сортировка}

for i:=1 to n-1 do begin

min:=a[i];

s:=i;

for j:=i+1 to n do if a[j]<min then begin

min:=a[j];

s:=j;

end;

a[s]:=a[i];

a[i]:=min;

end;

writeln;

writeln ('itogovij massiv');

for i:=1 to n do write(' ',a[i]);

end.

Сортировка обменом («пузырьковая» сортировка).

Слева на право сравниваются поочередно два соседних элемента, и если их взаиморасположение не соответствует заданному условию, то они меняются местами. Далее берутся следующие соседние элементы и так далее до конца массива.

После одного такого прохода на последней n-ой позиции массива будет стоять максимальный элемент («всплыл» первый «пузырек»). Поскольку максимальный элемент уже стоит на своей последней позиции, то второй проход обменов выполняется до n-1-го элемента. И так далее. Всего требуется n-1 проход.

uses crt2;

const n=4;

var i,j,s,b,k,min:integer; a:array [1..n] of integer;

begin

clrscr;

writeln ('vvedite massiv iz ', n,' simvolov');

for k:=1 to n do begin

writeln ('vvedite ',k,' element');

readln(a[k]);

end;

writeln ('isxodnij massiv');

for k:=1 to n do write (' ',a[k]);

{сортировка}

for i:=n downto 2 do begin

for j:=1 to i-1 do if a[j]>a[j+1] then begin

b:=a[j];

a[j]:=a[j+1];

a[j+1]:=b;

end;

end;

writeln;

writeln ('itogovij massiv');

for i:=1 to n do write(' ',a[i]);

end.

Ход работы:

Задание 1. Отладить программу и вывести результат выполнения программы. Построить блок-схему.

Задача. Посчитать в процентах основные фонды предприятия и вывести результат в таблице

Группа основных фондов

Начисление на начало года

тыс. руб.

%

Здания*****************

176,0

?

Сооружения************

284,0

?

Передаточные устройства

575,7

?

Силовые установки******

423,8

?

Машины и оборудование*

970,2

?

Транспортные средства**

623,0

?

Другие виды ОФ********

117,3

?

Итого:

?

100

Листинг программы:

Задание 2. Построить блок-схему, написать программу, отладить программу и вывести результат выполнения программы.

Вариант 1

Написать программу, рассчитывающую стоимость кредита на каждый год на весь период выплаты кредита с процентом по кредиту Y, если ежегодно % за пользование кредитом увеличиваются на 2 %. Вывести все в таблице

Вводится общая сумма кредита Х руб.

Вводится период выплаты G лет

Вводится процент по кредиту У %

Взятая сумма

0

Х

год

Сумма в год

Процент в год

Сумма процентов в год

Сумма

1

2=0/G

3=3+2%

4=2*Y/100%

5=2+4

2012

Y

2013

2014

2015

Сумма к оплате

5

Вариант 2

Написать программу, рассчитывающую сумму покупки отдельно взятых товаров (X кол. видов товара, Y шт. одного вида товара, S руб. стоимость за шт.) и сумму всей покупки. Если товара куплено более 100 шт., то на него устанавливается скидка 45 %.

№ п/п

Наименование товара

Кол-во

Стоимость за ед.

Сумма всего

Скидка

1

2

3

4

5=3*4-6

6: если 3>=100, то 6=3*4*0.45, иначе 6=0

1

2

3

Всего

3

5

6