2.1. Программа должна работать в консольном режиме. Основой программного кода для выполнения данной практической работы является программный код, реализованный в
практической работе №13 «Программирование модуля. Создание библиотеки
подпрограмм». Таким образом, проект для данной практической работы будет включать,
как минимум, 3 файла: главная программ, файл реализации и заголовочный файл
(названия файлов приведены в таблице вариантов)
2.2. Необходимо дополнить алгоритм командами для реализации задач по формированию
динамического списка и для его удаления (очистки). Для этого необходимо:
- Дополнить меню пунктами, соответствующими решению указанных задач
(«создание списка» и «очистка списка») (рис.1).
- Дополнить оператор switch дополнительными предложениями case … с наборами
соответствующих операторов для решения задач «создание списка» и «очистка
списка».
- Алгоритмы задач «создание списка» и «очистка списка» следует оформить в виде
подпрограмм и разместить их в файле реализации, а их прототипы – в заголовочном
файле.
- Действия, необходимые для решения дополнительных задач следует оформить в
виде отдельных подпрограмм
Изменить условие основного цикла главной программы для завершения работы по
выбору пункта «Выход».
1 В п.2.Х и п.3.Х описаны требования и приведены рекомендации на примере структуры,
описывающей объект «книга». При выполнении заданий для описания имен переменных, объекта
и всех действий по его обработке следует руководствоваться предметной областью своего
варианта.
Дисциплина: ОП.04 «Основы алгоритмизации и программирования»
Специальность: 09.02.07 «Информационные системы и программирование»
Квалификация: Специалист по информационным системам
3
Рис.1 Пример главного меню программу с учетом функций работы со списком
2.3. Дополнительные задания на «4»
Изменить программу таким образом, чтобы при выборе пункта «Выход»
осуществлялась проверка: если динамический список создан, то:
Автоматически очистить список, вывести соответствующее сообщение
пользователю и выйти из программы
ИЛИ
Не выходить из программы и вывести сообщение пользователю о том, что
выход из программы невозможен до тех пор, пока динамический список
сформирован и его требуется очистить
ИЛИ
Вывести пользователю сообщение с вариантами: 1) очистить список и выйти из
программы; 2) не очищать список и не выходить из программы. В зависимости
от выбора пользователя, выполнить необходимые действия в программе
2.4. Дополнительные задания на «5» (при условии выполнения п.2.3)
Вывести на экран элементы динамического списка с указанием их адресов, а
также адресов следующих и предшествующих элементов, например, как
показано на рис.2)
Добавление нового элемента в список, используя имеющиеся функции ввода
данных, записи данных в файл, очистки списка и построения списка
1. 0..65534 -> 32767
2. 0..32766 -> 16383
3. 0..16382 -> 8191
4. 0..8190 -> 4095
5. 0..4094 -> 2047
6. 2048..4094 -> 3071
7. 2048..3070 -> 2559
8. 2560..3070 -> 2815
9. 2816..3070 -> 2943
10. 2944..3070 -> 3007
11. 2944..3006 -> 2975
12. 2976..3006 -> 2991
13. 2992..3006 -> 2999
14. 3000..3006 -> 3003
15. 3000..3002 -> 3001
Если лень перебирать вручную, можно воспользоваться программой
var k,l,r,x,f:integer;
begin
f := 3001;
l := 0;
r := 65534;
x := (l + r) div 2;
k := 1;
while (x <> f) and (l < r) do
begin
writeln(k,' ',l,' ',r,' ',x);
k := k + 1;
if f < x then r := x - 1
else l := x + 1;
x := (l + r) div 2
end;
writeln(k,' ',l,' ',r,' ',x);
end.
program pr1;
uses
crt;
const
arr1 : array[1..12] of integer = (5, 4, -3, 1, 0, -4, 0, 25, -8, 0, -17, -1);
type
arr2 = array of integer;
var
arr : arr2;
n : integer;
i, sot, spl, snu : byte;
ch : char;
begin
write('Хотите использовать заданный по умолчанию массив? (y/n): ');
ch := readkey;
writeln(ch);
sot := 0;
spl := 0;
snu := 0;
if ((ch='y') or (ch='Y')) then begin
{ Используем заданный по умолчанию }
for i:=1 to 12 do begin
if arr1[i] > 0 then inc(spl);
if arr1[i] < 0 then inc(sot);
if arr1[i] = 0 then inc(snu);
write(arr1[i], ' ');
end;
writeln;
end
else begin
{ Создаём и заполняем новый массив }
write('Введите желаемый размер массива: ');
readln(n);
setLength(arr, n);
writeln('Введите элементы массива:');
for i:=0 to high(arr) do
readln(arr[i]);
for i:=0 to high(arr) do begin
if arr[i]>0 then inc(spl);
if arr[i]<0 then inc(sot);
if arr[i]=0 then inc(snu);
write(arr[i], ' ');
end;
writeln;
end;
writeln('Количество отрицательных элементов: ', sot);
writeln('Количество нулевых элементов: ', snu);
writeln('Количество положительных элементов: ', spl);
end.