
Лабораторная работа № 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], ‘ ‘); в строку через пробел.
Сортировка элементов массива.
Существует три способа сортировки элементов массива:
сортировка вставкой;
сортировка выбором;
сортировка обменом.
Сортировка вставкой.
Массив разделяется на две части: отсортированную и не отсортированную. Элементы из не отсортированной части поочередно выбираются и вставляются в отсортированную часть так, чтобы не нарушить в ней упорядоченность элементов. В начале работы алгоритма в качестве отсортированной части массива принимают только один первый элемент, а в качестве не отсортированной – все остальные элементы. Таким образом, алгоритм будет состоять из 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 лет Вводится процент по кредиту У %
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Вариант 2 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Написать программу, рассчитывающую сумму покупки отдельно взятых товаров (X кол. видов товара, Y шт. одного вида товара, S руб. стоимость за шт.) и сумму всей покупки. Если товара куплено более 100 шт., то на него устанавливается скидка 45 %.
|