Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП лабораторные работы.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
779.26 Кб
Скачать

3 Задачи

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

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

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

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

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

  6. В центре экрана вывести домик из звездочек. Использовать очистку экрана цветом, изменить цвет символов.

  7. В центре экрана вывести елочку из звездочек. Использовать очистку экрана цветом, изменить цвет символов.

  8. На экран вывести прямоугольник обрамляющий весь экран в центре него слово. Использовать очистку экрана цветом, изменить цвет символов.

4 Тесты

Истина или ложь?

  1. Возможно ли использование для очистки экрана цветом только одной функции TextBackGround?

  2. Верно ли, что после зарезервированных слов WhereX и WhereУ на экране произойдет отображение координат курсора?

  3. В Turbo Pascal предусмотрен единственный оператор смещения курсора– gotoxy.

  4. Оператор ReadKey позволяет осуществить нажатие на одну из двух клавиш.

  5. Цвет текста выводимого на экране можно изменить используя функцию TextColor.

  6. В Turbo Pascal цвет символов обозначается целым числом из интервала 0..15.

  7. Для определения положения курсора служат функции WhereX и WhereY.

  8. Чтобы ограничить область экрана, которая используется для ввода и вывода, можно использовать процедуру определения текстового окна: Window(x1,y1,x2,y2).

  9. Перейти в текстовый режим можно используя подключение модуля Crt.

  10. Модуль Crt можно объявить после зарезервированного слова var.

Работа №7

Тема: Решение задач с использованием линейных массивов

Цель: Закрепить теоретический материал по линейным массивам. Научиться решать задачи с использованием линейных массивов

1 Перечень знаний и умений, необходимых для выполнения лабораторной работы.

Перед тем, как приступить к выполнению лабораторной работы, студенту необходимо ознакомиться со следующим материалом:

  1. понятие вектора (линейного массива);

  2. понятия элемента массива и позиционного номера элемента в массиве;

  3. способы доступа к элементам массива;

  4. способы объявления массива.

2 Пример решения задачи

Поменять местами минимальный и максимальный элементы линейного массива.

(4 17 2 5 3 1 10 13)=>(4 1 2 5 3 17 10 13).

Решение задачи состоит из трех этапов:

  1. ввод данных;

  2. преобразование вектора;

  3. вывод результата.

При решении будут использованы следующие переменные:

kol: integer – количество элементов в векторе, не превышающее 50;

а: array [1..50] of integer – вектор а;

i: integer – переменная для перебора элементов вектора;

max, k: integer – значение максимального элемента и его позиционный номер в линейном массиве;

min, t: integer – значение минимального элемента и его позиционный номер в линейном массиве;

dop: integer – дополнительная переменная для обмена элементов в массиве.

Реализация первого этапа.

Поскольку пользователь может работать с вектором, состоящим менее, чем из 50 элементов целесообразнее сначала узнать какое количество элементов будет находиться в векторе.

writeln (‘Укажите количество элементов вектора (< 50)’);

read (kol);

Если пользователь ввел по ошибке число больше 50 или меньше 1, необходимо выдать соответствующее сообщение и повторно запросить количество элементов.

1: writeln (‘Укажите количество элементов вектора (< 50)’);

read (kol);

if (kol>50) or (kol<1) then

begin

writeln (‘Неверно задано количество элементов’);

goto 1;

end;

Далее следует выдать на экран число запросов равное kol, для ввода элементов линейного массива.

for i:=1 to kol do

begin

writeln (‘Укажите ’, i, ‘-ый элемент линейного массива’);

read(a[i]);

end;

Реализация второго этапа.

После того как ввод массива завершен, необходимо найти элементы с максимальным и минимальным значением, а затем поменять их местами.

max:=a[1]; min:= a[1];

{в начале предполагается, что минимальное и максимальное значения находятся в первой ячейке массива}

k:=1; t:=1; {запоминается позиционный номер элементов, имеющих минимальное и максимальное значения}

Для поиска максимального и минимального значений организуется цикл.

for i:=1 to kol do

begin

if a[i]> max then {если текущий элемент больше максимального значения}

begin

max:= a[i]; {запоминается новое максимальное значение}

k:=i; {запоминается позиционный номер максимального элемента}

end;

if a[i]< min then {аналогично для поиска минимального значения}

begin

min:= a[i]; t:=i;

end;

end;

После того как элементы найдены, их необходимо поменять местами (см. рисунок 5.1)

Рисунок 5.1 – Обмен местами максимального и

минимального элементов

dop:= a[k];

a[k]:= a[t];

a[t]:= dop;

Реализация третьего этапа.

writeln (‘Ответ: ’);

for i:=1 to kol do {организуется цикл перебора элементов}

write (a[i], ‘ ’); {выводится на экран элемент с позиционным номером i}

После объединения всех этапов исходный текст программы примет вид:

program vector;

uses crt;

label 1;

var a: array[1..50] of integer;

dop, kol, i, max, k, min, t: integer;

begin clrscr;

1: writeln (‘Укажите количество элементов вектора (< 50)’);

read (kol);

if (kol>50) or (kol<1) then

begin

writeln (‘Неверно задано количество элементов’);

goto 1;

end;

for i:=1 to kol do

begin

writeln (‘Укажите ’, i, ‘-ый элемент линейного массива’);

read(a[i]);

end;

min:= a[1]; max:= a[1]; k:= 1; t:=1;

for i:=1 to kol do

begin

if a[i]> max then begin max:= a[i]; k:=i; end;

if a[i]< min then begin min:= a[i]; t:=i; end;

end;

dop:= a[k];

a[k]:= a[t];

a[t]:= dop;

writeln (‘Ответ: ’);

for i:=1 to kol do write (a[i], ‘ ’);

end.